You are on page 1of 88

ENTERPRISE RESOURCE PLANNING

A Project Report Submitted for the partial fulfillment of the requirements for the degree of MASTER OF SCIENCE IN INFORMATION TECHNOLOGY

By M. BHAGYALAKSHMI
(A7101PIT6121)

Under the Guidance of Mr. R.VELMURUGAN MCA, M.Phil, MBA


Lecturer, Department of Computer Science

INSTITUTE OF DISTANCE EDUCATION UNIVERSITY OF MADRAS MAY 2009.

INSTITUTE OF DISTANCE EDUCATION


University of Madras Chennai-600 005

BONAFIDE CERTIFICATE
This is to certify that the report entitle ENTERPRISE RESOURCE PLANNING being submitted to the University of Madras, Chennai by Ms. M.BHAGYALAKSHMI, with Register Number A7101PIT6121 for degree of the partial fulfillment for the award of carried Master of Computer Applications is a bonafide record of work

out by him/her under my guidance and Supervision.

NAME AND DESIGNATION OF THE GUIDE Mr. R.VELMURUGAN MCA, M.Phil, MBA Lecturer, Department of Computer Science Pachiyappa's College, Chennai Date : Submitted for the Viva - Voce _____________________. Examiners 1. 2. Examination held

CO-ORDINATOR

on

ACKNOWLEDGEMENT

I take this opportunity to thank all the people who have helped me throughout the working of my project and encouraged me to complete it successfully. I would like to express my sincere thanks and gratitude to our Director for giving us the opportunity to pursue our Master Degree in Information Technology from this reared institute, my sincere of encouragement. I profusely owe a lot to our Co-ordinator, Mr. R. Velmurugan M.C.A, M.Phil, M.B.A- Lecturer, Department of Computer Science, Pachiyappas College, Chennai for his kind support and constant encouragement towards us. My deepest gratitude goes to Mr. S. Deepakaran, Technical Lead, Jayam Tech for enabling me to undertake the project work in their esteemed organization. Last but not least, I owe a deep sense of gratitude to my parents and all my friends for their support and cooperation.

M. BHAGYALAKSHMI

INDEX
S.No. TITLE PAGE NO

1.

INTRODUCTION
1.1 COMPANY PROFILE 1.2 PROJECT OVERVIEW
.

2.

SYSTEM ANALYSIS 2.1 FEASIBLITY STUDY 2.2 EXISTING SYSTEM

3.

2.3 PROPOSED SYSTEM SYSTEM CONFIGURATION 3.1 HARDWARE CONFIGURATION 3.2 SOFTWARE CONFIGURATION 3.3 ABOUT THE SOFTWARE PROJECT DESIGN
4.1 NORMALIZATION 4.2 TABLE DESIGN 4.3 DATAFLOW DIAGRAM

4.

5.

SYSTEM DESCRIPTION

6. 7. 8. 9.

SYSTEM TESTING & IMPLEMENTATION

SYSTEM CONLCUSION AND FUTURE SCOPE

SCREEN SHOTS AND REPORTS


BIBLIOGRAPHY

SYNOPSIS

SYNOPSIS
ENTERPRISE RESOURCE PLANNING
ERPware offers integration between all divisions of business processes, providing financial, accounting, logistical and analytical support to streamline your business for better service and administration. One of main highlights of ERPware is that it integrates workflow, messaging, distribution operations and financial modules together, giving the complete flow of any business from customer request from quotations to product collections. You will be informed of the status of every transaction once you are log into TaskHub. ERPware eases your job by helping you organize your business schedule, check on customer's financial credibility, and secure a complete financial position for bank facility and etc. ERPware is fully web based and it conforms to J2EE standard. Easy Access As ERPware is a web-based solution, users all over the world will be able to access the system with the ease of a web-browser. Manages Work Flow ERPware eases your job; helping you organize your work schedule. With a built in alert, reminders will be sent to the users to help reduce bottlenecks. Customizes Users' Portal Each of the portals will be customized to the needs and authorization of the user, whereby they will only see the information that they require.

Allows Information Broadcast A built-in messaging system also serves as a broadcasting tool within the organization. This enables in a smoother flow of information sharing and communication within the organization.

An Overview

Purchasing Purchase Requisition Purchase Order Sales


Sales Quotation Sales Order

Logistic Inventory Control Logistic Planning Shipping Coordination Warehousing Management Billing & Planning Other Vertical Modules Project Costing Service Module Work Order

Accounts Accounts Payable Accounts Receivable General Ledger Bank Book Consolidation Fixed Asset

Business

Trade Finance

INTRODUCTION

1.1 COMPANY PROFILE

Jayam Tech is leading global IT SOLUTIONS COMPANY and is today the world leader in application migrations and Application development & Maintenance, application re-engineering to application testing & outsourced product development. Jayam technical experts develop and maintain systems as per client specifications. This consultative approach provides a risk-free, cost-effective way for an organization to design, develop, and/or maintain cutting edge information systems. Whether the environment is mainframe or client/server, it have expertise in Oracle, Oracle Developer, Oracle Designer, DBA, VC+ +, Java, Java Scripts, Power builder/Oracle, Visual Basic/Oracle, CICS, DB2, COBOL, C, C++, Windows SDK, etc. Jayam Tech has been ranked among the Top 500 global software companies (16th annual ranking by Software Magazine) and also ranks among the Top 200 Indian software companies (3rd annual ranking by Dataquest). Jayam Systems is assessed at SEICMM Level 4. With headquarters and offshore development centers in Chennai (India), Jayam also has offices in Toronto (Canada) as well as in Washington DC. In addition, Jayam operates through its excellent network of channel partners in about 30 countries

Vision To continue to be the leader in providing IT solutions to customers worldwide and be a partner in their Information Technology Management to enhance efficiency and productivity.

To be a vibrant, customer-oriented, quality driven, state of the art Technology Company

Creating value to employees, customers, shareholders and society

Since its inception in 1990, Jayam has been consistently bringing out various products to enable its customers to migrate to the latest technologies. Since then, Jayam has grown to become the acknowledged world leader in migrations and today provides a wide and comprehensive selection of migration software prepackaged solutions to meet the growing demand for cross-platform migrations in today's scenario. Jayam Specializes in many areas like Migration Conversion tools Cost effective business solutions Web developments WAP Technologies Data warehousing Multimedia Projects.

Redefining the norm of software products and development practices, KSPL is advancing at a fast pace thereby achieving higher growth rate every year. We assure too the best quality and professional standards for each service that we provide.

KSPL Services: KSPL focuses on domestic and overseas market with its expertise on cutting edge and proven technologies. Some of the expertise includes the following: E.R.P Solutions Business Analysis Services Application Maintenance, Migration and Conversion Projects Multimedia Projects

1.2 PROJECT OVERVIEW

Enterprise Resource Planning is developed for Jayam Tech Private Limited. This
software is used to clarify the technical doubts and to share the knowledge with other employees in an efficient way. This forum is used to post the doubts. All the employees can login to the forum and they can view the doubts posted by the other employees. If they know the solutions, they can reply to that doubts with suitable description. Not only the doubts, if they know some new concepts, or any ideas to share with all the employees then they can use this forum. It is having both public messages and private messages. Public message mean it is visible to all the employees and it is used to share the official and technical ideas. Private message means it is visible to only to that person. It is used to personal chats and team communication. Private Messages is also used to clarify the doubts within the team. It is also possible to search for some topics and find the solution for the doubts if the solution is already available. If the solution is not available then post the doubt in this forum. It will also display the number of users online.

SYSTEM CONFIGURATION

3 SYSTEM CONFIGURATION

3.1 HARDWARE CONFIGURATION Main Processor Memory Hard Disk : : : Pentium III 3.00 GHZ 128MB of RAM 20 GB HDD

3.2 SOFTWARE CONFIGURATION

Introduction to Java Utilities Collections and Iterators The following section explains collections and iterators. Collections Java defines a set of classes known as collection classes. These classes are defined in the java.util package (see more on packages below). The most commonly used collection classes are:

ArrayList HashMap LinkedList

Objects created from these classes provide convenient management of sets of other objects. An advantage of a collection over an array is that you dont need to know the eventual size of the collection in order to add objects to it. The disadvantage of a collection is that it is

generally larger than an array of the same size. For example, you can create a LinkedList object to manage a set of objects of unknown size by saying: LinkedList l = new LinkedList(); l.Add("Bob"); l.Add("Mary"); l.Add("Jane"); Note that in versions of Java before 1.2, the Vector and Hashtable classes were often used to manage collections of objects. These classes, however, are synchronized, meaning they are safe for multi-threaded use. Synchronization has performance implications. If you do not require synchronization behavior, you will achieve better performance by using the newer ArrayList and HashMap classes. Iterators Some collection classes provide built-in iterators to make it easy to traverse their contents. The built-in iterator is derived from the java.util.Iterator class. This class enables you to walk a collection of objects, operating on each object in turn. Remember when using an iterators that it contains a snapshot of the collection at the time the iterator was obtained. Its best not to modify the contents of the collection while you are iterating through it. String and StringBuffer Classes Java provides convenient string manipulation capabilities via the java.lang.String and java.lang.StringBuffer classes. One of the most common performance-impacting errors new Java programmers make is performing string manipulation operations on String objects instead of StringBuffer objects. String objects are immutable, meaning their value cannot be changed once they are created. So operations like concatenation that appear to modify the String object actually create a new String object with the modified contents of the original String object. Performing many operations on String objects can become computationally expensive.

The StringBuffer class provides similar string manipulation methods to those offered by String, but the StringBuffer objects are mutable, meaning they can be modified in place. Exceptions Java defines a common strategy for dealing with unexpected program conditions. An exception is a signal that something unexpected has occurred in the code. A method throws an exception when it encounters the unexpected condition. When you call a method that throws an exception, the Java compiler will force you to handle the exception by placing the method call within a try-catch block (see below). An exception is a Java object, which makes it easy to get information about the exception by calling its methods. Most Java exception objects inherit from the basic java.lang.Exception class. Specific exception classes contain information pertinent to the particular condition encountered. For example, a SQLException object provides information about a SQL error that occurred. Try-Catch-Finally Blocks You use try-catch-finally blocks to handle exceptions. The try-catch-finally block allows you to group error handling code in a single place, near to but not intermingled with the program logic. The following example demonstrates a try-catch-finally block. It assumes that method doSomething() declares that it throws the BadThingHappenedException: public void callingMethod() { try { doSomething(); } catch (BadThingHappenedException ex) { <examine exception and report or attempt recovery> } finally { <clean up any work that may have been accomplished in the try block> }

return; }

If doSomething() completes normally, program execution continues at the first statement after the try-catch-finally block. Note that the finally block is not executed. If doSomething()throws the BadThingHappenedException, it will be caught by the catch block. Within the catch block, you can perform whatever action is necessary to deal with the unexpected condition.

The finally block is executed if any portion of the try block executed and an exception was thrown. This give you the opportunity to clean up any partial work that was performed. For example, if a file had been opened in the try block before the exception occurred, the finally block could include code to close the file.

The WebLogic Workshop Development Environment[IDE] WebLogic Workshop is an integrated development environment for building enterpriseclass J2EE applications on the WebLogic Platform. WebLogic Workshop provides an intuitive programming model that enables you to focus on building the business logic of your application rather than on complex implementation details. Whether you are an application developer with a business problem to solve or a J2EE expert building business infrastructure, WebLogic Workshop makes it easy to design, test, and deploy enterpriseclass applications.

PROJECT DESIGN

4 PROJECT DESIGN
System flowchart describes the data flow for a data processing system. A systems flowchart is commonly used in analysis and design. It provides a logical diagram of how the system operates. It represents the flow of documents, the operations performed in data processing system. It also reflects the relationship between inputs, processing and outputs. Following are the features of system flowcharts: The sources from which data is generated and device used for this purpose. Various processing steps involved. The intermediate and final output prepared and the devices used for their storage. The different symbols used in system flow chart are:

Start/End The terminator symbol marks the starting or end point of the system. It usually contains the word start or End.

Decision A decision or branching point. Lines representing different decisions emerge from different points of the diamond.

Data Input Device. Input from input device like keyboard.

Connector Indicates that the flow continues where a matching symbol (containing the same letter) has been placed. Flow Line Lines indicate the sequence of steps and the direction of flow.

Data storage Indicates a step where data gets stored.

Database Indicates a list of information with a standard structure that allows for searching and sorting.

Display Indicates a step that displays information.

Off Page Indicates

Process

DATA FLOW DIAGRAM


Graphical representation of a systems data and how the processes transform the data is known as Data Flow Diagram (or DFD). Unlike, flowcharts, DFDs do not give detailed descriptions of modules but graphically describe a systems data and how the data interact with the system. Data flow diagrams are the most commonly used way of documenting the process of current & required systems. As their name suggests they are a pictorial way of showing the flow of data into, around & out of a system. Data flow diagrams can be used to provide a clear representation of any business function. It should be the first tool used by system analyst to model system components. These components are the system processes; the data used by this processes and external entities that interact with the system and the information flows in the system. There are four kinds of system components PROCESS Process show what system does. Each process has one or more data inputs and produce one or more data outputs, Circles in a data flow diagram represent process. Each process has unique name and number. This name and number appear inside the circle that represents the processes in a data flow diagram. Process represents activities in which data is manipulated by being stored or retrieved or transferred in some way. In other words we can say that process transforms the input data into output data. Circles stand for a process that converts data into information

This process is represented as circle

DATA STORES Data stores represent stores of data within the system. File or data store is depositary of data. They contain data that is retained in the system. Processes can enter the data into a data store or retrieve data from the data store. Each data store is represented by thin line in the data flow diagram and each data store has a unique name. Examples, computer files or databases. An open-ended box represents a data/store data at rest or a temporary repository of data. The data store is represented in form of a line

EXTERNAL ENTITIES External entities are out side the system but they either supply input data into the system or use the system output. they are entities which the designer has no control. Square or rectangle may represent external entities that supply data into a system or some times called sources. External entities that use the system data are sometimes called sinks. External entities represent the source of data as input to the system. They are also the destination of system data. External entities can be called data stores out side the system. These are represented by squares

External entity is represented as rectangle

DATA FLOWS A data flow shows the flow of information from its source to its destination. A line represents a data flow, with arrowheads showing the direction of flow. Information always flows to or from a process and may be written, verbal or electronic. Each data flow may be referenced by the processes or data stores at its head and tail, or by a description of its contents.

Flow of data in the system can take place. Between two processes From a data store to process From a process to a data store From a source to process From a process to link

4.3 DATA FLOW DIAGRAM Forum user login Check valid user Want to log or clarify the doubts.

Invalid user

If new user Create a new user. Store the user Details in the Forum user table. . Fetch the data from the table forum_privms g and display it. Send message to the friend.

Want to View private messages

Log the doubt and submit. Store the values To the forum post Table.

Reply to the doubts posted by some other user.

Reply with suitable attachment or clarifications. Type the message and submit. Store the values to the Table forum post and forum attachment.

Store the values to the table Forum privmsg.

4.2 TABLE DESIGN


Table name Primary Key Name cust_code cust_name address1 Address2 City Mobile Email : : cust_det cust_code Data type Varchar Varchar Varchar Varchar Varchar Int Varchar Size 20 30 30 30 30 20 30

Table name ForeignKey Name cust_code item_code order_no order_date order_qty req_date

: :

Orderdet cust_code,item_code Data type Varchar Varchar Varchar Datetime Int Datetime Size 30 30 30 8 10 8

Table name Primary key Name item_code item_name unit_price

: :

Stockdet item_code Data type Varchar Varchar Decimal Int Varchar Varchar Int Size 30 30 20 10 30 20 20

qty_on_hand App_name unit_desc reorder_level

Table name Primary key Name Ven_code Ven_name address1 Address2 City Mobile email

: :

Vendorsdet ven_code Data type Varchar Varchar Varchar Varchar Varchar Int Varchar Size 30 30 30 30 30 20 30

INPUT OUTPUT DESIGN

System Design System Design of the information processing system covering the activities of determining detailed requirements, design of data/information flow, design of database, design of user interface, physical design, and design of hardware/software configuration. Input Design This section is a description of the input media used by the operator for providing information to the system. The main task of this design is as follows: Define the appropriate format and media for a computer input. Explain the difference between data capture, data entry, and data input. Identify and describe several automatic data collection technologies. Apply human factors to the design of computer inputs. Design internal controls for computer inputs. Select proper screen-based controls for input attribute that are to appear on a GUI input screen. Design a web-based input interface. Identify system inputs and review logical requirements.

Output Design This section describes of the system output design relative to the user/operator. System outputs include reports, data display screens and GUIs, query results, etc. The following should be provided, if appropriate:

Identification of codes and names for reports and data display screens Description of report and screen contents (provide a graphic representation of each layout and define all data elements associated with the layout or reference the data dictionary).

Description of the purpose of the output, including identification of the primary users Report distribution requirements, if any (include frequency for periodic reports)

Description of any access restrictions or security considerations

PHYSICAL DESIGN
Physical design Describes how the processing will be performed; for example, whether data is input by a person or read by a bar code reader, whether a file is electronic or print. Tools to represent the physical design include a system flow charts and structure charts. System flow chart is there in system development section.

LOGICAL DESIGN
Logical design Describes the functions required of a system, that is, what is to be done, not how it will be done. Logical design is not concerned with hardware and software requirements but rather with the processes to be performed. Context diagrams, data flow diagrams and data dictionaries are useful tools in representing the logical design of a system. Data flow diagram is attached in the system development phase.

4.1 NORMALIZATION

Normalization is the process of efficiently organizing data in a database. There are two goals of the normalization process: eliminate redundant data (for example, storing the same data in more than one table) and ensure data dependencies make sense (only storing related data in a table). Both of these are worthy goals as they reduce the amount of space a database consumes and ensure that data is logically stored. The database community has developed a series of guidelines for ensuring that databases are normalized. These are referred to as normal forms. First normal form (1NF) sets the very basic rules for an organized database: Eliminate duplicative columns from the same table. Create separate tables for each group of related data and identify each row with a unique column or set of columns (the primary key). Second normal form (2NF) further addresses the concept of removing duplicative data: Meet all the requirements of the first normal form. Remove subsets of data that apply to multiple rows of a table and place them in separate tables. Create relationships between these new tables and their predecessors through the use of foreign keys. Third normal form (3NF) goes one large step further: Meet all the requirements of the second normal form. Remove columns that are not dependent upon the primary key.

Finally, fourth normal form (4NF) has one additional requirement: Meet all the requirements of the third normal form. A relation is in 4NF if it has no multi-valued dependencies.

The above normalizations are applied in the development of this system. Each main table contains the primary key and all the attributes are having necessary constraints. Each sub table contains the foreign key referring the id of the main table. The tables are also divided into main and sub in order to avoid the repetition of the data.

Implementation of Normalization:
To maintain which user belongs to which group the table is splitted into two. One is used to maintain the group_id and the user_id. Another one is used to maintain the group details. Forum_user_groups is used to maintain the group_id and user_id. In this group_id is foreign key of the table forum_groups and user_id is the foreign key of the table forum_users. Forum_users is used to maintain the details of the group. In this table group_id is primary key and group_name should not be null. To maintain the details which users post the doubt the table is splitted into two. One is used to maintain the details about the doubt posted timings, user, and status of the doubt. Another one is used to maintain the message posted. Forum_posts is used to maintain the details about the doubt posted timings, user and status of the doubt. In this table post_id is primary key. Forum_posts_text is used to maintain the details about the text posted and the subject of the doubt. In this table post_id is reference of the table Forum_posts.

SYSTEM DESCRIPTION

5. SYSTEM DESCRIPTION

A program specification describes the results that a program is expected to produce its primary purpose is to be understood not executed. A specification is a technical contract between a programmer and his/her client and is intended to provide them with a mutual understanding of a program. A client uses the specification to guide his/her use of the program; a programmer uses the specification to guide his/her construction of the program. A complex specification may engender sub specifications, each describing a sub component of the program. The construction of these sub components may then be delegated to other programmers so that a programmer at one level becomes also a client at another. The purpose of a specification requires that all parties have complete confidence in the properties of the results it warrants. The focus of a specification should be on what is achieved, not how it is achieved -- the details engendered in the program itself are to be avoided. Precise and formally defined conventions for writing specifications are a much more recent invention than programming languages. The need to be fully precise about results before beginning the programming process has lead to reliance on mathematically based (or more accurately, logically based) concepts. Since a specification provides a technical contract, it is only natural to base both the construction and the verification of a program on its specification. As a result "formal methods" subsumes: (i) conceptual elements for the development of precise specifications that can serve to guide programming activity, (ii) the means to utilize a formal specification for a rigorous verification of the program when it is completed, and (iii) the integration of these ideas into a "system of specification" that can be supported by computer-based tools that assist the entire enterprise.

Requirement Specification

This software is used to clarify the technical doubts and to share the knowledge with other employees in an efficient way. This forum is used to post the doubts. All the employees can login to the forum and they can view the doubts posted by the other employees. If they know the solutions, they can reply to that doubts with suitable description. Not only the doubts, if they know some new concepts, or any ideas to share with all the employees then they can use this forum. It is having both public messages and private messages. Public message mean it is visible to all the employees and it is used to share the official and technical ideas. Private message means it is visible to only to that person. It is used to personal chats and team communication. Private Messages is also used to clarify the doubts within the team. This software is developed using J2EE technology as a front end and Oracle as a back end tool. The system consists of two modules. They are Administration General Users

Administration Module User Profile Settings Administrator and that particular user can modify the profile settings of user. Administrator can add the user to any particular group. Users profile can be modified. If user forget the password then he/she can request admin to reset the password. Admin Will reset the password and give the new password. Admin can change the group of the user. When the user changed to some other project then the group of that person will get automatically changed.

Permission Settings Various permissions for the group can be set. For Example some of the user in the group can view the topics posted by the user. Some of the user can reply to the topic. These types of permissions can be set by the administration when creating the group. Some group has the information about the concern. This type of the group has only viewing permission. Admin also have the permission to delete the group. Message Approving Administrator will done the message Approving. If any message got the exact answer then that message is freeze by the administrator. Then that can only viewed by all the users, it is not possible to reply to that message. Administrator can also delete message, which is considered as junk messages. Is some messages are not replied for the long time then it can be rejected by the administrator. Rankings Rankings are used to rate the users according to their response to the various questions. Ranking is also done for the question, which got more than specified number of reply. Only the administrator inserts the new types of ranking. Editing properties of already existing rankings are done by administrator. Smilies An emoticon, also called a smilie, is a sequence of printable characters such as :), ^^, or :-) or a small image that is intended to represent a human facial expression and convey an emotion. Emoticons are a form of paralanguage commonly used in email messages, in online bulletin boards, or in chat rooms. The word emoticon is a portmanteau based on emotion and icon. Administrator will inserts new smilies pictures. Admin has rights to delete or update any smilies picture.

Configuration Admin will configure the properties like topics per page, posts per page, user per page, avatar size and maximum number of attachments per post. General Users Module In this General module, Registration If the user already registered then he/she can login to the discussion forum. If the user is new then he/she should register their details and submit the registration form. In the registration form the details like name; email address and password should be entered. After the successful registration the appropriate message will be displayed. Profile Settings In this page the user can enter their information like their occupation, interest details. They can also set the signature details, which is used when they send or receive any private message or when posting or reply to the doubts. In this page the avatar for that particular user can be loaded that will be displayed when any user want to see the profile of that particular user. Member Listing In this page any user can view the entire user list. The details like each and every users registration date, email id and number of messages posted are displayed. Recent Topics In this page the recent doubts or topics posted by any user will be displayed. By using this page the interested person can clear the doubts. Software Specification Software used in this project is Html, JavaScript, JSP, Java, Servlets, JDBC.

3.3 ABOUT THE SOFTWARE HTML is the simplest part of what makes web pages on the World Wide Web. It is a markup language, which means it has a mix of normal language that people can read, and special language that tells computer programs what to do. A web browser is the program that reads the special language in HTML. This language tells the web browser how the web page should look. The web page can include writing, links, pictures, and even sound and video. It can also have writing that is not shown in the web page, which tells people about the web pagefor example, the name of the person who made it. Writing HTML You can make HTML with a computer program called an HTML editor. Because HTML is just writing, you can make it in a text editor. There are also computer programs that let you draw a web page the way you want it to look, and these programs make the HTML for you. Example HTML HTML tells the browser what to show by using tags. Tags start with < and end with >. An example is, <br>, the Line Break tag, which causes a new line. Most tags have an opening tag to tell the browser where to start something, and an ending tag to tell the browser where to end. An example is <p> to start a new paragraph, and </p> to end a paragraph. Here is an example page in HTML. <html> (This tag tells the browser that this is the start of the HTML) <head> (This tag tells the browser that this is the start of the head of page, which readers cannot see) <title> (This tag tells the browser that this is the start of the title)

HTML - Simple English Wikipedia (This is the text of the title. Readers can see this in the bar at the top of the screen) </title> (This tag tells the browser that this is the end of the title) </head> (This tag tells the browser that this is the end of the head) <body> (This tag tells the browser that this is the top of the page) <p> (This tag is the start of a paragraph) Here is some text. </p> (This tag is the end of a paragraph) </body> (This tag tells the browser that this is the end of the page and the last part to show the readers) </html> (This tag tells the browser that this is the end of the HTML) Java The Java programming language is a high-level language that can be characterized by all of the following buzzwords: Simple Object oriented Distributed Multithreaded Architecture neutral Portable Dynamic High performance Secure Robust

In the Java programming language, all source code is first written in plain text files ending with the .java extension. Those source files are then compiled into .class files by the Java compiler (javac).

A .class file does not contain code that is native to your processor; it instead contains bytecodes-- the machine language of the Java Virtual Machine. The Java launcher tool (java) then runs your application with an instance of the Java Virtual Machine.

Because the Java Virtual Machine is available on many different operating systems, the same .class files are capable of running on Microsoft Windows, the Solaris TM Operating System (Solaris OS), Linux, or MacOS. Some virtual machines, such as the Java HotSpot Virtual Machine, perform additional steps at runtime to give your application a performance boost. This includes various tasks such as finding performance bottlenecks and recompiling (to native code) frequently used sections of the code.

The Java Platform A platform is the hardware or software environment in which a program runs. We've already mentioned some of the most popular platforms like Microsoft Windows, Linux, Solaris OS, and MacOS. Most platforms can be described as a combination of the operating system and underlying hardware. The Java platform differs from most other platforms in that it's a software-only platform that runs on top of other hardware-based platforms. The Java platform has two components:

The Java Virtual Machine The Java Application Programming Interface (API)

JVM the base for the Java platform and is ported onto various hardwarebased platforms. The API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets. It is grouped into libraries of related classes and interfaces; these libraries are known as packages. The following figure depicts how the API and the Java Virtual Machine insulate the program from the hardware.

As a platform-independent environment, the Java platform can be a bit slower than native code. However, advances in compiler and virtual machine technologies are bringing performance close to that of native code without threatening portability.

What Can Java Technology Do? The general-purpose, high-level Java programming language is a powerful software platform. Every full implementation of the Java platform gives you the following features:

Development Tools: The development tools provide everything you'll need for compiling, running, monitoring, debugging, and documenting your applications. As a new developer, the main tools you'll be using are the Java compiler (javac), the Java launcher (java), and the Java documentation tool (javadoc). Application Programming Interface (API): The API provides the core functionality of the Java programming language. It offers a wide array of useful classes ready for use in your own applications. It spans everything from basic objects, to networking and security, to XML generation and database access. The core API is very large; to get an overview of what it contains, consult the release documentation linked to at the bottom of this page.

Deployment Technologies: The JDK provides standard mechanisms, such as Java Web Start and Java Plug-In, for deploying your applications to end users.

User Interface Toolkits: The Swing and Java 2D toolkits make it possible to create sophisticated Graphical User Interfaces (GUIs).

Integration Libraries: Integration libraries such as IDL, JDBC, JNDI, RMI, and RMI-IIOP, enable database access and manipulation of remote objects.

How Will Java Technology Change My Life? Java is likely to make your programs better and requires less effort than other languages.

We believe that Java technology will help you do the following: Get started quickly: Although the Java programming language is a powerful object-oriented language, it's easy to learn, especially for programmers already familiar with C or C++. Write less code: Comparisons of program metrics (class counts, method counts, and so on) suggest that a program written in the Java programming language can be four times smaller than the same program in C++. Write better code: The Java programming language encourages good coding practices, and its garbage collection helps you avoid memory leaks. Its object orientation, its JavaBeans component architecture, and its wide-ranging, easily extendible API let you reuse other people's tested code and introduce fewer bugs. Develop programs more quickly: Your development time may be as much as twice as fast versus writing the same program in C++. Why? You write fewer lines of code and it is a simpler programming language than C++. Avoid platform dependencies: You can keep your program portable by avoiding the use of libraries written in other languages. Write once, run anywhere: Because Java applications are compiled into machine-independent bytecodes, they run consistently on any Java platform. Distribute software more easily: With Java Web Start technology, users will be able to launch your applications with a single click of the mouse. An automatic version check at startup ensures that users are always up to date with the latest version of your software. If an update is available, Java Web Start will automatically upgrade their installation.

Jsp While there are numerous technologies for building web applications that serve dynamic content, the one that has really caught the attention of the development community is Java Server Pages (JSP). JSP not only enjoys cross-platform and cross-Web-server support, but effectively melds the power of server-side Java technology with the WYSIWYG features of static HTML pages. JSP pages typically comprise of: Static HTML/XML components. Special JSP tags Optionally, snippets of code written in the Java programming language called "scriptlets." Consequently, you can create and maintain JSP pages by conventional HTML/XML tools. It is important to note that the JSP specification is a standard extension defined on top of the Servlet API. Thus, it leverages all of your experience with servlets. There are significant differences between JSP and servlet technology. Unlike servlets, which is a programmatic technology requiring significant developer expertise, JSP appeals to a much wider audience. It can be used not only by developers, but also by page designers, who can now play a more direct role in the development life cycle. Another advantage of JSP is the inherent separation of presentation from content facilitated by the technology, due its reliance upon reusable component technologies like the JavaBeans component architecture and Enterprise JavaBeans technology.

JSP Advantages Separation of static from dynamic content: With servlets, the logic for generation of the dynamic content is an intrinsic part of the servlet itself, and is closely tied to the static presentation templates responsible for the user interface. Thus, even minor changes made to the UI typically result in the recompilation of the servlet. This tight coupling of presentation and the content results in brittle, inflexible applications. However, with JSP, the logic to generate the dynamic content is kept separate from the static presentation templates by encapsulating it within external JavaBeans components. These are then created and used by the JSP page using special tags and scriptlets. When a page designer makes any changes to the presentation template, the JSP page is automatically recompiled and reloaded into the web server by the JSP engine. Write Once Run Anywhere JSP technology brings the "Write Once, Run Anywhere" paradigm to interactive Web pages. JSP pages can be moved easily across platforms, and across web servers, without any changes. Dynamic content can be served in a variety of formats: There is nothing that mandates the static template data within a JSP page to be of a certain format. Consequently, JSP can service a diverse clientele ranging from conventional browsers using HTML/DHTML, to handheld wireless devices like mobile phones and PDAs using WML, to other B2B applications using XML. Recommended Web access layer for n-tier architecture

Sun's J2EE Blueprints, which offers guidelines for developing large-scale applications using the enterprise Java APIs, categorically recommends JSP over servlets for serving dynamic content.

Completely leverages the Servlet API If you are a servlet developer, there is very little that you have to "unlearn" to move over to JSP. In fact, servlet developers are at a distinct advantage because JSP is nothing but a high-level abstraction of servlets. JSP Access Models The early JSP specifications advocated two philosophical approaches, popularly known as Model 1 and Model 2 architectures, for applying JSP technology. These approaches differ essentially in the location at which the bulk of the request processing was performed, and offer a useful paradigm for building applications using JSP technology. Consider the Model 1 architecture, shown below:

In the Model 1 architecture, the incoming request from a web browser is sent directly to the JSP page, which is responsible for processing it and replying back to the client. There is still separation of presentation from content, because all data access is performed using beans.

Although the Model 1 architecture is suitable for simple applications, it may not be desirable for complex implementations. Indiscriminate usage of this architecture usually leads to a significant amount of scriptlets or Java code embedded within the JSP page, especially if there is a significant amount of request processing to be performed. While this may not seem to be much of a problem for Java developers, it is certainly an issue if your JSP pages are created and maintained by designers--which are usually the norm on large projects. Another downside of this architecture is that each of the JSP pages must be individually responsible for managing application state and verifying authentication and security.

The Model 2 architecture, shown above, is a server-side implementation of the popular Model/View/Controller design pattern. Here, the processing is divided between presentation and front components. Presentation components are JSP pages that generate the HTML/XML response that determines the user interface when rendered by the browser.

Front components (also known as controllers) do not handle any presentation issues, but rather, process all the HTTP requests. Here, they are responsible for creating any beans or objects used by the presentation components, as well as deciding, depending on the user's actions, which presentation component to forward the request to. Front components can be implemented as either a servlet or JSP page. The advantage of this architecture is that there is no processing logic within the presentation component itself; it is simply responsible for retrieving any objects or beans that may have been previously created by the controller, and extracting the dynamic content within for insertion within its static templates. Consequently, this clean separation of presentation from content leads to a clear delineation of the roles and responsibilities of the developers and page designers on the programming team. Another benefit of this approach is that the front components present a single point of entry into the application, thus making the management of application state, security, and presentation uniform and easier to maintain.

SYSTEM TESTING AND IMPLEMENTATION

6. SYSTEM TESTING &IMPLEMENTATION

Testing is the one step in the software engineering process that could be viewed as destructive rather than constructive. Testing requires that the developer discard preconceived notions of the correctness of the software just developed and overcome a conflict of interest that occurs when errors are uncovered. If testing is conducted successfully, it uncovers errors in the software. As a secondary benefit, testing demonstrations that software functions appear to be working according to specification, that performance requirements appear to have been met. In addition, data collected as testing is conducted provide a good indication of software reliability and some indication of software quality as a whole. Testing cannot show the absence of defects, it can only show that software defects are present.

Different Types of Testing: User requirements test: This is the test done at the time of requirements document URS (User Requirement Specification). In this, the requirements are tested for clarity, redundancy, feasibility and objectivity. As soon as the requirements are tested, the URS can be helpful in preparing the acceptance test plan so that the user tests the software according to the URS. System requirement test: From the URS we produce SRD (System Requirement Document), which tests the validity of the system at the client end. As soon as the document is ready, they can make a plan for the systems test conducted by the development organization before coordinating the acceptance test.

Effective testing early in the process translates directly into long-term cost saving from a reduced number of errors. The first trust for system is to see whether it produces correct outputs. The test data may be artificial or live. The software, which has been developed, has to be tested to prove its validity. Testing is considered to be the least creative phase of the whole cycle of system design. In the real it is the phase, which helps to bring out the creativity of the other phases makes it shine. In this project following techniques of software testing are implemented. White Box Testing By using this technique it was tested that all the individual logical paths were executed at least once, all the logical decision were tested on both there true and false sides. All the loops were tested with data in between the ranges and especially at the boundary values. Black Box Testing By using this technique, the missing functions were identified and placed in their positions. The errors in the interfaces were identified and corrected. This technique was also used to identify the initialization and termination errors and correct them. The block box testing methods test the functional requirements of the software. This enables the software engineer to derive sets of input conditions that will exercise all functional requirements for a program, these attempts to find errors in the following categories. Incorrect or missing functions. Interface errors. Errors in data structures or external database access. Performance errors. Initializing and termination errors.

Incorrect or missing functions: This is error occurs when the required function is not included in the specified location. Interface errors: This is occurs when user input is invalid data into controls. For example, when user want to login with an invalid data on that time the interface shows the error. Performance errors: If the user trying to send the signal to server without connecting, It will show error. When the same module is executed more than twice shows error form using windows error system. Initialization and termination errors: In the initialization part it test with the connection part. This is the starting part of the project. In the termination part it is checked with the existing part of the project. Software Testing Strategies Any software has to be tested with pre-planned strategies. As Roger Pressmen states, the preparation for testing should start as soon as the design of system starts, to carry out the testing in an efficient manner certain amount of strategic planning has to be done. Any testing strategy must incorporate test planning, test case design, test execution and the resultant data collection and evaluation. Unit Testing: In the lines of this strategy all, the individual functions and modules were put to the test independently. By following this strategy all, the errors in coding were identified and corrupted. This method was applied in combination with the white and black box testing techniques to find the errors in each module.

Integration Testing: Again this software testing strategy has different approach in which integration is carried out from the top level module to the bottom and the bottom up approach in which integration is carried out from the low level module to the top. The modules are tested using the bottom up approach by Introducing stumps for the top-level functions. This test used to identify the errors in the interfaces, the errors in passing the parameters between the functions and corrects them.

Validation Testing: Validation testing is done to validate the inputs given by the user. The user inputs are checked for their correctness and range. If there are errors, the error message is given and the user is prompted again to enter the new value. If the user types some characters in the numeric field an error message and it is demonstrated in the following figure. System Testing: Software testing is an important element of software quality assurance and represents the ultimate review of specification, design and coding. There are rules that can serve as testing objectives. They are Testing is a process of executing a program with the intent of finding an error. A good test case is one that has high probability of finding an undiscovered error. A successful test is one that uncovers an undiscovered error.

SYSTEM CONCLUSION AND FUTURE SCOPE

7 SYSTEM CONCLUSION AND FUTURE SCOPE


This system is build-using java. So this system can be accessed by the system, which is using any Operating system. Any user of any project can use this system. By using this system lot of time is saved which is wasted for searching the solution for the problem, which is already solved by some of the employees of any other project. Only the valid user can login to the discussion forum others have to register. The admin user has the rights to change any application level changes. Admin only having the rights to change the rankings, avatar and also has the rights to delete the junk messages. It is running in the Tomcat Server of the server machine. So any changes in the code or any new requirements can be implemented and changes should be made in that machine. Then restarting the server is enough to reflect the changes in the system. The old data will be retained and the new requirements will get reflected. Thus the system for sharing the knowledge and to clarify the doubts are successfully developed and executed. This projects can also contains the facility like if any one knows the doubt then he/she can reply to the message. Some email notification should be made when replying to the message. So that the user who logged the doubt comes to know that he/she got the answer for the doubt. Now the personal details of the user are very minimal. It can be improved to store the user project details, designation, contact details like extension, e.t.c. If any user wants more clarifications then he/she can contact that user personally to get more details. These are the some of the future enhancement of the Enterprise Resource Planning.

SCREEN SHOTS AND REPORTS

8 SCREEN SHOTS AND REPORTS

SOURCE CODE
package com.cibc.onesys.ccms.dao; import com.cibc.onesys.ccms.borrower.*; import com.cibc.onesys.ccms.vo.BorrowerVO; import com.cibc.onesys.ccms.wip.CcmsSearchForm; import com.cibc.onesys.ccms.wip.CcmsSearchHolder; import com.cibc.onesys.ccms.notepad.CcmsNotepadForm; import com.cibc.onesys.ccms.notepad.CcmsNotepadHolder; import com.cibc.onesys.ccms.reports.*; import com.cibc.onesys.common.exception.DatabaseException; import com.cibc.onesys.common.utils.ConnectionHelper; import com.cibc.onesys.common.utils.CibcLogger; import com.cibc.onesys.common.utils.sql.*; import com.cibc.onesys.common.utils.struts.CibcCurrencyHolder; import com.cibc.onesys.common.utils.struts.CibcDateHolder; import com.cibc.onesys.common.utils.struts.CibcUiConstants; import com.cibc.onesys.common.utils.struts.CibcDataHolder; import com.cibc.onesys.common.vo.UserVO; import com.cibc.onesys.common.vo.CibcConstants; import com.cibc.onesys.ocp.vo.CreditVO; import com.cibc.onesys.ocp.vo.CustomerVO; import com.cibc.onesys.ocp.dao.CibcDAO; import com.cibc.onesys.ocp.assessment.*; import com.cibc.onesys.ocp.conditions.*; import com.cibc.onesys.ocp.credit.EnclosuresForm; import com.cibc.onesys.ocp.credit.StatementHolder; import com.cibc.onesys.ocp.credit.EnclosuresHolder; import com.cibc.onesys.ocp.facility.LGDSummaryForm; import com.cibc.onesys.ocp.facility.LGDSummaryDetailsHolder; import com.cibc.onesys.ocp.facility.CoverageLiquidationValueHolder; import com.cibc.onesys.ccms.wip.CcmsDashBoardForm; import com.cibc.onesys.ccms.wip.CcmsDashBoardHolder; import org.apache.commons.collections.MultiHashMap; import java.util.*; import java.sql.*; import java.math.BigDecimal; public class BorrowerCreditDAO extends CibcDAO { protected static List newCreditList = null;

protected static List renewCreditList = null; protected static List pendingCreditList = null; protected static List searchResultsList = null; protected CibcDateHolder dateholder = null; protected int newCNT; protected int renewCNT; protected int pendingCNT; /* [Rajesh Kumar.G 25-10-2005] To implement logger and to remove System.out.println statements. */ static CibcLogger logger = new CibcLogger(BorrowerCreditDAO.class); public BorrowerVO getCreditRequestById(UserVO userVO, int requestId) throws DatabaseException { OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet result = null; BorrowerVO bvo = null; try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("{ call CCMS_BORROWER_SEARCH_PCK.search_by_id(?, ?, ?)}"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setInt(2, requestId); stmt.registerOutParameter(3, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); result = (OCPResultSet) stmt.getObject(3); while (result.next()) { bvo = new BorrowerVO(); bvo.setApprovalDate(result.getDate("APPROVED_DTTM")); bvo.setBorrowerID(result.getInteger("CREDIT_REQUEST_ID")); bvo.setBorrowerName(result.getString("BORROWER_NAME")); bvo.setExpiryDate(result.getDate("CURRENT_EXPIRY_DATE")); // There might be more attributes need to be set for BorrowerVO

// and we might need to change the store procedure for that } } catch (DatabaseException de) { /* [Rajesh Kumar.G 25-10-2005] To implement logger and to remove System.out.println statements. */ logger.debug("Failure to connect to database for list all borrower credits:: " + de); throw de; } finally { // close result set ConnectionHelper.close(result); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return bvo; } public BorrowerCreditForm getBorrowerCredit(UserVO userVO, BorrowerCreditForm form) throws DatabaseException { String borrowerName = null; String portfolioNumber = null; String instrumentNumber = null; String transit = null; String searchBy = null; if (form != null) { borrowerName = form.getBorrowerName(); portfolioNumber = form.getPortfolioNumber(); instrumentNumber = form.getInstrumentNumber(); transit = form.getTransit(); searchBy = form.getSearchBy(); } if ((borrowerName == null) || (borrowerName.length() < 1)) borrowerName = null; if ((portfolioNumber == null) || (portfolioNumber.length() < 1)) portfolioNumber = null;

if ((instrumentNumber == null) || (instrumentNumber.length() < 1)) instrumentNumber = null; if ((transit == null) || (transit.length() < 1)) transit = null; try { if (userVO.getCoinsId() != null) { LoadSearchResults(userVO, borrowerName, portfolioNumber, instrumentNumber, transit, searchBy); } } catch (DatabaseException de) { throw de; } form.setSearchResultsList(searchResultsList); return form; } public ListCreditsForm getListCredits(UserVO userVO, ListCreditsForm form) throws DatabaseException { try { if (userVO.getCoinsId() != null) { LoadListCredit(userVO); } } catch (DatabaseException de) { throw de; } form.setNewCreditsList(newCreditList); form.setRenewCreditsList(renewCreditList); form.setPendingCreditsList(pendingCreditList); form.setNewCNT(newCNT); form.setRenewCNT(renewCNT); form.setPendingCNT(pendingCNT); return form; } private final void LoadListCredit(UserVO userVO) throws DatabaseException {

OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rset1 = null; OCPResultSet rset2 = null; OCPResultSet rset3 = null; newCNT = 0; renewCNT = 0; pendingCNT = 0; ListCreditsHolder lc1 = null; ListCreditsHolder lc2 = null; ListCreditsHolder lc3 = null; CibcDateHolder dateholder1 = null; CibcCurrencyHolder currencyholder1 = null; CibcDateHolder dateholder2 = null; CibcCurrencyHolder currencyholder2 = null; CibcDateHolder dateholder3 = null; CibcCurrencyHolder currencyholder3 = null; newCreditList = new ArrayList(); renewCreditList = new ArrayList(); pendingCreditList = new ArrayList(); try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("{ call CCMS_BORROWER_SEARCH_PCK.search_all_sp(?, ?, ?, ?)}"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.registerOutParameter(2, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.registerOutParameter(3, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.registerOutParameter(4, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rset1 = (OCPResultSet) stmt.getObject(2); rset2 = (OCPResultSet) stmt.getObject(3); rset3 = (OCPResultSet) stmt.getObject(4); while (rset1.next()) { newCNT++;

lc1 = new ListCreditsHolder(); //dateholder1 = new CibcDateHolder(); currencyholder1 = new CibcCurrencyHolder(); lc1.setBorrowerName(rset1.getString("BORROWERNAME")); currencyholder1.setValue(rset1.getString("AUTHORIZEDLIMIT")); lc1.setAuthorizedLimit(currencyholder1); lc1.setPortfolioId(rset1.getString("PORTFOLIOID")); //dateholder1.setDate(rset1.getDate("DATEADJUDICATED")); //lc1.setDateadjudicated(dateholder1); // Added to resolve the variance id KITS-0038278 rset1.getCibcHolder("DATEADJUDICATED",lc1.getDateadjudicated()); lc1.setBorrowerId(rset1.getString("CREDITREQUESTID")); newCreditList.add(lc1); } while (rset2.next()) { renewCNT++; lc2 = new ListCreditsHolder(); //dateholder2 = new CibcDateHolder(); currencyholder2 = new CibcCurrencyHolder(); lc2.setBorrowerName(rset2.getString("BORROWERNAME")); currencyholder2.setValue(rset2.getString("AUTHORIZEDLIMIT")); lc2.setAuthorizedLimit(currencyholder2); lc2.setPortfolioId(rset2.getString("PORTFOLIOID")); //dateholder2.setDate(rset2.getDate("DATEADJUDICATED")); //lc2.setDateadjudicated(dateholder2); // Added to resolve the variance id KITS-0038278 rset2.getCibcHolder("DATEADJUDICATED",lc2.getDateadjudicated()); lc2.setBorrowerId(rset2.getString("CREDITREQUESTID")); renewCreditList.add(lc2); } while (rset3.next()) { pendingCNT++; lc3 = new ListCreditsHolder(); //dateholder3 = new CibcDateHolder(); currencyholder3 = new CibcCurrencyHolder(); lc3.setBorrowerName(rset3.getString("BORROWERNAME")); currencyholder3.setValue(rset3.getString("AUTHORIZEDLIMIT"));

lc3.setAuthorizedLimit(currencyholder3); lc3.setPortfolioId(rset3.getString("PORTFOLIOID")); //dateholder3.setDate(rset3.getDate("DATEADJUDICATED")); //lc3.setDateadjudicated(dateholder3); // Added to resolve the variance id KITS-0038278 rset3.getCibcHolder("DATEADJUDICATED",lc3.getDateadjudicated()); lc3.setBorrowerId(rset3.getString("CREDITREQUESTID")); pendingCreditList.add(lc3); } } catch (DatabaseException de) { /* [Rajesh Kumar.G 25-10-2005] To implement logger and to remove System.out.println statements. */ logger.debug("Failure to connect to database for list all borrower credits:: " + de); throw de; } finally { // close result set ConnectionHelper.close(rset1); ConnectionHelper.close(rset2); ConnectionHelper.close(rset3); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } } private final void LoadSearchResults(UserVO userVO, String borrowerName, String portfolioNumber, String instrumentNumber, String transit, String searchBy) throws DatabaseException { searchResultsList = new ArrayList(); SearchResultsHolder srsholder = null; OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rset = null; try { con = ConnectionHelper.getConnection();

stmt = con.prepareCall("{ call CCMS_BORROWER_SEARCH_PCK.search_by_criteria_sp(?, ?, ?, ?, ?, ?)}"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setString(2, borrowerName); stmt.setString(3, portfolioNumber); stmt.setString(4, instrumentNumber); stmt.setString(5, transit); stmt.registerOutParameter(6, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rset = (OCPResultSet) stmt.getObject(6); while (rset.next()) { srsholder = new SearchResultsHolder(); //dateholder = new CibcDateHolder(); boolean checked; srsholder.setBorrowerName(rset.getString("BORROWERNAME")); srsholder.setStatus("Active"); srsholder.setPortfolioId(rset.getString("PORTFOLIOID")); srsholder.setCreditSpecialist(rset.getString("CREDITSPECIALIST")); //dateholder.setDate(rset.getDate("EXPIRYDATE")); //srsholder.setExpiryDate(dateholder); // Added to resolve the variance id KITS-0038278 rset.getCibcHolder("EXPIRYDATE",srsholder.getExpiryDate()); srsholder.setGroupId(rset.getString("GROUPID")); srsholder.setBorrowerId(rset.getString("CREDITREQUESTID")); if (rset.getString("GROUPID") != null) checked = true; else checked = false; srsholder.setChecked(checked); searchResultsList.add(srsholder); } } catch (DatabaseException de) { /* [Rajesh Kumar.G 25-10-2005] To implement logger and to remove System.out.println statements. */

logger.debug("Failure in the Search Results:: " + de); throw de; } finally { // to do close result set try { ConnectionHelper.close(rset); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } catch (Exception er) { er.printStackTrace(); throw new DatabaseException(er); } } } /** * This method is used to get the results of CCMS Search. * * @param userVO * @param form * @return * @throws DatabaseException */ public CcmsSearchForm getCcmsSearchDetails(UserVO userVO, CcmsSearchForm form) throws DatabaseException { OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs = null; Collection searchResultslist = new ArrayList(); try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("{ call CCMS_Dashboard_Pck.Get_search_Credits_Sp(?, ?, ?, ?, ?, ?)}"); stmt.clearParameters(); int i = 0; stmt.setString(++i, userVO.getCoinsId()); stmt.setString(++i, form.getBorrowerName());

stmt.setBigDecimal(++i, (form.getPortfolioNumber().isEmpty() ? null : form.getPortfolioNumber().getBigDecimal())); stmt.setBigDecimal(++i, (form.getTransitNumber().isEmpty() ? null : form.getTransitNumber().getBigDecimal())); stmt.setBigDecimal(++i, (form.getInstrumentNumber().isEmpty() ? null : form.getInstrumentNumber().getBigDecimal())); stmt.registerOutParameter(++i, OCPConnection.TYPE_ORACLE_REF_CURSOR); int resultIndex = i; stmt.execute(); rs = stmt.getResultSet(resultIndex); while (rs.next()) { CcmsSearchHolder ccmsSearchHolder = new CcmsSearchHolder(); ccmsSearchHolder.setCreditRequestId(rs.getString("credit_request_id")); ccmsSearchHolder.setBorrowerName(rs.getString("borrower_name")); ccmsSearchHolder.setStatus(rs.getString("credit_status")); ccmsSearchHolder.getPortfolioId().setValue(rs.getString("portfolio_id")); ccmsSearchHolder.setCreditSpecialist(rs.getString("credit_specialist")); //ccmsSearchHolder.getExpiryDate().setDate(rs.getDate("expiry_date")); // Added to resolve the variance id KITS-0038278 rs.getCibcHolder("expiry_date",ccmsSearchHolder.getExpiryDate()); ccmsSearchHolder.getGroup().setBoolean(rs.getBoolean("is_group")); searchResultslist.add(ccmsSearchHolder); } form.setSearchResults(searchResultslist); } catch (DatabaseException de) { de.printStackTrace(); throw de; } finally { ConnectionHelper.close(rs); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return form; } /** NotePad Retrive Values

* * @param userVO * @param creditVO * @param notepadForm * @return * @throws DatabaseException */ public CcmsNotepadForm getNotes(UserVO userVO, CreditVO creditVO, CcmsNotepadForm notepadForm) throws DatabaseException { /* Rajesh Kumar.G [26-Sep-2005]. To achive locking machanism for CCMS application. To Fix KITS variance : 0038861 */ checkAuthorization(userVO,null,creditVO.getCreditRequestId(), CibcConstants.PERMISSION_VIEW,CibcConstants.APPLICATION_CCMS); OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs = null; try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("call ccms_notepad_pck.get_notepad_dtls_sp(?,?,?)"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setInteger(2,creditVO.getCreditRequestId()); stmt.registerOutParameter(3, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rs = (OCPResultSet) stmt.getObject(3); ArrayList note = new ArrayList(); while(rs.next()) { CcmsNotepadHolder noteHolder = new CcmsNotepadHolder(); noteHolder.setTimeStamp(rs.getString("notepad_date")); noteHolder.setCoinsId(rs.getString("coins_id")); noteHolder.setNotepadItem(rs.getString("notepad_desc")); note.add(noteHolder); } notepadForm.setNotepadList(note);

} catch (DatabaseException de) { throw de; } finally { ConnectionHelper.close(rs); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return notepadForm; } /** NotePad update Values * * @param userVO * @param creditVO * @param notepadForm * @throws DatabaseException */ public void updateNotepad(UserVO userVO , CreditVO creditVO, CcmsNotepadForm notepadForm) throws DatabaseException { /* Rajesh Kumar.G [26-Sep-2005]. To achive locking machanism for CCMS application. To Fix KITS variance : 0038861 */ checkAuthorization(userVO,null,creditVO.getCreditRequestId(), CibcConstants.PERMISSION_EDIT,CibcConstants.APPLICATION_CCMS); OCPConnection con = null; OCPCallableStatement stmt = null; try { con = ConnectionHelper.getConnection(); ConnectionHelper.beginTransaction(); stmt = con.prepareCall("call ccms_notepad_pck.update_notepad_dtls_sp(?,?,?)"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setInteger(2,creditVO.getCreditRequestId()); stmt.setString(3, notepadForm.getNewNotepadItem()); stmt.executeUpdate();

ConnectionHelper.commitTransaction(); } catch (DatabaseException de) { ConnectionHelper.rollbackTransaction(); throw de; } finally { ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return; } /** * This method is Used to get the List of Borrower Names and the user id of them. * @param userVO * @param ccmsReportsSearchForm * @return CcmsReportsSearchForm * @throws DatabaseException */ public CcmsReportsSearchForm getCcmsReportsSearchResults(UserVO userVO,CcmsReportsSearchForm ccmsReportsSearchForm) throws DatabaseException { OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs = null; try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("call CCMS_Reports_Pck.get_portfolio_search_result_sp(?,?,?,?)"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setString(2,ccmsReportsSearchForm.getSearchBy()); stmt.setString(3,ccmsReportsSearchForm.getSearchFor()); stmt.registerOutParameter(4,OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rs = stmt.getResultSet(4); ArrayList searchResultList=new ArrayList();

while(rs.next()) { CcmsReportsSearchHolder ccmsReportsSearchHolder=new CcmsReportsSearchHolder(); ccmsReportsSearchHolder.setPortfolioName(rs.getString("ocp_user_name")); ccmsReportsSearchHolder.setUserId(rs.getInt("ocp_user_id")); searchResultList.add(ccmsReportsSearchHolder); } ccmsReportsSearchForm.setSearchResults(searchResultList); ccmsReportsSearchForm.setResultsCount(searchResultList.size()); } catch(DatabaseException e) { e.printStackTrace(); throw e; } finally { ConnectionHelper.close(rs); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return ccmsReportsSearchForm; } //Added by H.Kalaiselvi [14-12-2005] for CreditAgreementSummaryReport /** * To retrieve the credits list from db corresponding to the search condition. * @param userVO - UserVO object. * @param creditAgreementSearchForm - Form object that holds the user input. * @return * @throws Exception */ public CreditAgreementSearchForm getCreditAgreementReports(UserVO userVO, CreditVO creditVO, CreditAgreementSearchForm creditAgreementSearchForm) throws Exception {

OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs= null; CreditAgreementSearchHolder creditAgreementHolder; ArrayList creditAgreementList = new ArrayList(); try { con = ConnectionHelper.getPASConnection(); stmt = con.prepareCall("{ call Ccms_Reporting_pck.get_credit_reports_sp(?,?,?,?)}"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setString(2, userVO.getUserId()); stmt.setString(3, creditAgreementSearchForm.getBorrowerName() ); stmt.registerOutParameter(4, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rs = stmt.getResultSet(4); while( rs.next() ) { creditAgreementHolder = new CreditAgreementSearchHolder(); creditAgreementHolder.setCreditRequestId( rs.getInteger("credit_request_id")); creditAgreementHolder.setCustomerId( rs.getInteger("customer_id")); creditAgreementHolder.setObligorName( rs.getString("obligor_name")); creditAgreementHolder.setBorrowerName( rs.getString("borrower_name")); creditAgreementList.add(creditAgreementHolder); } creditAgreementSearchForm.setSearchResults(creditAgreementList); } catch(DatabaseException de) { de.printStackTrace(); throw de; } finally { ConnectionHelper.close(rs); ConnectionHelper.close(stmt);

ConnectionHelper.close(con); } return creditAgreementSearchForm; } /** * This method is used to get the Details about the Borrowers. * @param userVO * @param ccmsReportsForm * @return CcmsReportsForm * @throws DatabaseException */ public CcmsReportsForm getCcmsReports(UserVO userVO,CcmsReportsForm ccmsReportsForm) throws DatabaseException { OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs = null; try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("call CCMS_Reports_Pck.get_portfolio_reports_det_sp(?,?,?,?,?,?)"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.setInt(2,ccmsReportsForm.getUserId()); stmt.setString(3,ccmsReportsForm.getSearchBy()); stmt.setDate(4,ccmsReportsForm.getFromDate().getSqlDate()); stmt.setDate(5,ccmsReportsForm.getToDate().getSqlDate()); stmt.registerOutParameter(6,OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rs = stmt.getResultSet(6); ArrayList portfolioReportList=new ArrayList(); while(rs.next()) { CcmsReportsHolder ccmsReportsHolder=new CcmsReportsHolder(); //ccmsReportsHolder.getExpiryDate().setDate(rs.getDate("expiry_date")); // Added to resolve the variance id KITS-0038278 rs.getCibcHolder("expiry_date",ccmsReportsHolder.getExpiryDate()); ccmsReportsHolder.setCustomerName(rs.getString("borrower_name"));

ccmsReportsHolder.getAuthorizedAmount().setBigDecimal(rs.getBigDecimal("auth orized_amt")); ccmsReportsHolder.getRiskRating().setBigDecimal(rs.getBigDecimal("risk_rating") ); ccmsReportsHolder.setSicCode(rs.getInteger("sic_code")); portfolioReportList.add(ccmsReportsHolder); } ccmsReportsForm.setPortfolioReportsList(portfolioReportList); } catch(DatabaseException e) { e.printStackTrace(); throw e; } finally { ConnectionHelper.close(rs); ConnectionHelper.close(stmt); ConnectionHelper.close(con); } return ccmsReportsForm; } /** * The method holds the values of CCMS WIP Details of New Credits, * Amendment Credits, Pending Credits and Cancelled Credits * @param ccmsDashBoardForm * @param userVO * @return ccmsDashBoardForm * @throws DatabaseException */ public CcmsDashBoardForm getCCMSWipDetails(CcmsDashBoardForm ccmsDashBoardForm,UserVO userVO) throws DatabaseException { OCPConnection con = null; OCPCallableStatement stmt = null; OCPResultSet rs1_NewCredit = null; OCPResultSet rs2_AmendmentCredit = null; OCPResultSet rs3_PendingCredit = null; OCPResultSet rs4_CancelledCredit = null;

int rowCount = 0; ArrayList newCreditList = new ArrayList(); ArrayList amendmentCreditList = new ArrayList(); ArrayList pendingCreditList = new ArrayList(); ArrayList cancelledCreditList = new ArrayList(); try { con = ConnectionHelper.getConnection(); stmt = con.prepareCall("{ call CCMS_Dashboard_Pck.Get_WIP_Credits_Sp(?,?,?,?,?) }"); stmt.clearParameters(); stmt.setString(1, userVO.getCoinsId()); stmt.registerOutParameter(2, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.registerOutParameter(3, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.registerOutParameter(4, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.registerOutParameter(5, OCPConnection.TYPE_ORACLE_REF_CURSOR); stmt.execute(); rs1_NewCredit = stmt.getResultSet(2); rs2_AmendmentCredit = stmt.getResultSet(3); rs3_PendingCredit = stmt.getResultSet(4); rs4_CancelledCredit = stmt.getResultSet(5); /** * The resultset rs1_NewCredit holds the collection of New Credits */ while(rs1_NewCredit.next()) { CcmsDashBoardHolder newCredit = new CcmsDashBoardHolder(); newCredit.setCreditRequestID(rs1_NewCredit.getInteger("credit_request_id")); newCredit.setBorrowerName(rs1_NewCredit.getString("borrower_name")); newCredit.getAuthorizedLimit().setBigDecimal(rs1_NewCredit.getBigDecimal("aut horized_limit")); newCredit.setPortfolioID(rs1_NewCredit.getInteger("portfolio_id"));

//newCredit.getAdjudicatedDate().setDate(rs1_NewCredit.getDate("adjudicated_dat e")); // Added to resolve the variance id KITS-0038278 rs1_NewCredit.getCibcHolder("adjudicated_date",newCredit.getAdjudicatedDate()) ; newCreditList.add(newCredit); rowCount++; } ccmsDashBoardForm.setNewCreditList(newCreditList); ccmsDashBoardForm.setNewCreditRecords(new Integer(rowCount)); /** * The resultset rs2_AmendmentCredit holds the collection of amendmentCredit */ rowCount = 0; while(rs2_AmendmentCredit.next()) { CcmsDashBoardHolder amendmentCredit = new CcmsDashBoardHolder(); amendmentCredit.setCreditRequestID(rs2_AmendmentCredit.getInteger("credit_req uest_id")); amendmentCredit.setBorrowerName(rs2_AmendmentCredit.getString("borrower_n ame")); amendmentCredit.getAuthorizedLimit().setBigDecimal(rs2_AmendmentCredit.getB igDecimal("authorized_limit")); amendmentCredit.setPortfolioID(rs2_AmendmentCredit.getInteger("portfolio_id")); //amendmentCredit.getAdjudicatedDate().setDate(rs2_AmendmentCredit.getDate("a djudicated_date")); // Added to resolve the variance id KITS-0038278 rs2_AmendmentCredit.getCibcHolder("adjudicated_date",amendmentCredit.getAdj udicatedDate()); amendmentCreditList.add(amendmentCredit); rowCount++; }

ccmsDashBoardForm.setRenewalAmendmentList(amendmentCreditList); ccmsDashBoardForm.setAmendmentRecords(new Integer(rowCount)); /** * The resultset rs3_PendingCredit holds the collection of pendingCredit */ rowCount = 0; while(rs3_PendingCredit.next()) { CcmsDashBoardHolder pendingCredit = new CcmsDashBoardHolder(); pendingCredit.setCreditRequestID(rs3_PendingCredit.getInteger("credit_request_id ")); pendingCredit.setBorrowerName(rs3_PendingCredit.getString("borrower_name")); pendingCredit.getAuthorizedLimit().setBigDecimal(rs3_PendingCredit.getBigDeci mal("authorized_limit")); pendingCredit.setPortfolioID(rs3_PendingCredit.getInteger("portfolio_id")); //pendingCredit.getAdjudicatedDate().setDate(rs3_PendingCredit.getDate("adjudica ted_date")); // Added to resolve the variance id KITS-0038278 rs3_PendingCredit.getCibcHolder("adjudicated_date",pendingCredit.getAdjudicated Date()); pendingCredit.getIsCAV().setBoolean(rs3_PendingCredit.getBoolean("iscav")); pendingCreditList.add(pendingCredit); rowCount++; } ccmsDashBoardForm.setPendingList(pendingCreditList); ccmsDashBoardForm.setPendingRecords(new Integer(rowCount)); /** * The resultset rs4_CancelledCredit holds the collection of cancelCredit */ rowCount = 0; while(rs4_CancelledCredit.next()) { CcmsDashBoardHolder cancelCredit = new CcmsDashBoardHolder();

cancelCredit.setCreditRequestID(rs4_CancelledCredit.getInteger("credit_request_id ")); cancelCredit.setBorrowerName(rs4_CancelledCredit.getString("borrower_name")); cancelCredit.setCancellationReason(rs4_CancelledCredit.getString("reason_cancel" )); cancelCredit.setPortfolioID(rs4_CancelledCredit.getInteger("portfolio_id")); //cancelCredit.getCancelledDate().setDate(rs4_CancelledCredit.getDate("cancel_dat e")); // Added to resolve the variance id KITS-0038278 rs4_CancelledCredit.getCibcHolder("cancel_date",cancelCredit.getCancelledDate()) ; cancelledCreditList.add(cancelCredit); rowCount++; } ccmsDashBoardForm.setCancelledCreditList(cancelledCreditList); ccmsDashBoardForm.setCancelledRecords(new Integer(rowCount)); } catch(DatabaseException de) { throw de; } finally { ConnectionHelper.close(rs1_NewCredit); ConnectionHelper.close(rs2_AmendmentCredit); ConnectionHelper.close(rs3_PendingCredit); ConnectionHelper.close(rs4_CancelledCredit); ConnectionHelper.close(con); stmt.close(); }

BIBLIOGRAPHY

9. BIBLIOGRAPHY

Java Server Programming J2EE Edition Volume II Wrox Press Ltd. BEA WEBLOGIC 8.1 MANUALS JSP, SERVLETS SSI MATERIALS The complete reference Java2 MYSQL

SYSTEM ANALYSIS

You might also like