Mca

download Mca

of 85

description

hggghh

Transcript of Mca

ENTERPRISE RESOURCE PLANNING

ENTERPRISE RESOURCE PLANNING

INDEX

S.No.TITLEPAGE NO

1.

INTRODUCTION1.1 COMPANY PROFILE

1.2 PROJECT OVERVIEW

.

2.SYSTEM ANALYSIS

2.1 FEASIBLITY STUDY 2.2 EXISTING SYSTEM 2.3 PROPOSED SYSTEM

3.SYSTEM CONFIGURATION

3.1 HARDWARE CONFIGURATION 3.2 SOFTWARE CONFIGURATION 3.3 ABOUT THE SOFTWARE

4.PROJECT DESIGN

4.1 NORMALIZATION

4.2 TABLE DESIGN

4.3 DATAFLOW DIAGRAM

5.

SYSTEM DESCRIPTION

6.SYSTEM TESTING & IMPLEMENTATION

7.SYSTEM CONLCUSION AND FUTURE SCOPE

8.SCREEN SHOTS AND REPORTS

9.BIBLIOGRAPHY

SYNOPSIS

ENTERPRISE RESOURCE PLANNING

Software 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 Software 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. Software 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.

Software is fully web based and it conforms to J2EE standard.

Easy AccessAs Software 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 FlowERPware 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 BroadcastA 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

Accounts

Accounts Payable

Accounts Receivable

General Ledger

Bank Book

Consolidation

Fixed Asset

Trade Finance Logistic

Inventory Control

Logistic Planning

Shipping Coordination

Warehousing Management

Billing & Planning

Other Vertical Modules

Project Costing

Service Module

Work Order

Business

1.1 COMPANY PROFILE

K2S Technology 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. K2S 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.

K2S Technology 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). K2S Systems is assessed at SEI-CMM Level 4.

With headquarters and offshore development centers in Chennai (India), K2S

also has offices in Toronto (Canada) as well as in Washington DC. In addition, K2S 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, K2S has been consistently bringing out various products to enable its customers to migrate to the latest technologies. Since then, K2S 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.

K2S 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 OVERVIEWEnterprise Resource Planning is developed for K2S Technology 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.

3 SYSTEM CONFIGURATION3.1 HARDWARE CONFIGURATION

MainProcessor

:Pentium III 3.00 GHZ

Memory

:128MB of RAM

Hard Disk

: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 LinkedListObjects 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)

{

}

finally

{

}

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 enterprise-class 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 enterprise-class applications.

4 PROJECT DESIGNSystem 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:

DATA FLOW DIAGRAMGraphical 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

.

4.2 TABLE DESIGNTable name

: cust_det

Primary Key

: cust_code

NameData typeSize

cust_codeVarchar20

cust_nameVarchar30

address1Varchar30

Address2Varchar30

CityVarchar30

MobileInt20

EmailVarchar30

Table name

: Orderdet

ForeignKey

: cust_code,item_code

NameData typeSize

cust_codeVarchar30

item_codeVarchar30

order_noVarchar30

order_dateDatetime8

order_qtyInt10

req_dateDatetime8

Table name

: Stockdet

Primary key

: item_code

NameData typeSize

item_codeVarchar30

item_nameVarchar30

unit_priceDecimal20

qty_on_handInt10

App_nameVarchar30

unit_descVarchar20

reorder_levelInt20

Table name

:Vendorsdet

Primary key

: ven_code

NameData typeSize

Ven_codeVarchar30

Ven_nameVarchar30

address1Varchar30

Address2Varchar30

CityVarchar30

MobileInt20

EmailVarchar30

INPUT OUTPUT DESIGNSystem 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 DESIGNLogical 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 NORMALIZATIONNormalization 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.

5. SYSTEM DESCRIPTIONA 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 SpecificationThis 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 SOFTWAREHTML 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,
, 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 to start a new paragraph, and to end a paragraph.

Here is an example page in HTML.

(This tag tells the browser that this is the start of the HTML)

(This tag tells the browser that this is the start of the head of page, which readers cannot see)

(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)

(This tag tells the browser that this is the end of the title)

(This tag tells the browser that this is the end of the head)

(This tag tells the browser that this is the top of the page)

(This tag is the start of a paragraph)

Here is some text.

(This tag is the end of a paragraph)

(This tag tells the browser that this is the end of the page and the last part to show the readers)

(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 hardware-based 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.

6. SYSTEM TESTING &IMPLEMENTATIONTesting 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 TestingBy 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.

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.

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("authorized_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("authorized_limit"));

newCredit.setPortfolioID(rs1_NewCredit.getInteger("portfolio_id"));

//newCredit.getAdjudicatedDate().setDate(rs1_NewCredit.getDate("adjudicated_date"));

// 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_request_id"));

amendmentCredit.setBorrowerName(rs2_AmendmentCredit.getString("borrower_name"));

amendmentCredit.getAuthorizedLimit().setBigDecimal(rs2_AmendmentCredit.getBigDecimal("authorized_limit"));

amendmentCredit.setPortfolioID(rs2_AmendmentCredit.getInteger("portfolio_id"));

//amendmentCredit.getAdjudicatedDate().setDate(rs2_AmendmentCredit.getDate("adjudicated_date"));

// Added to resolve the variance id KITS-0038278

rs2_AmendmentCredit.getCibcHolder("adjudicated_date",amendmentCredit.getAdjudicatedDate());

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.getBigDecimal("authorized_limit"));

pendingCredit.setPortfolioID(rs3_PendingCredit.getInteger("portfolio_id"));

//pendingCredit.getAdjudicatedDate().setDate(rs3_PendingCredit.getDate("adjudicated_date"));

// Added to resolve the variance id KITS-0038278

rs3_PendingCredit.getCibcHolder("adjudicated_date",pendingCredit.getAdjudicatedDate());

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"))