Vous êtes sur la page 1sur 85

ENTERPRISE RESOURCE PLANNING

INDEX
S.No.

1.

TITLE

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

4.

3.3 ABOUT THE SOFTWARE


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

PAGE NO

SYNOPSIS

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 Access
As 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 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

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

INTRODUCTION

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 OVERVIEW

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

SYSTEM CONFIGURATION

3 SYSTEM CONFIGURATION

3.1 HARDWARE CONFIGURATION


Main Processor

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

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

Invalid user

If new user
Create a
new
user.

Want to View
private
messages

Store the user


Details in the
Forum user table.
.

Want to
log or
clarify the
doubts.

Log the doubt


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

Fetch the data


from the table
forum_privms
g and display
it.
Send message
to the friend.

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

Store the values to the


Table forum post and
forum attachment.

4.2 TABLE DESIGN


Table name

cust_det

Primary Key

cust_code

Name
cust_code

Data type
Varchar

Size
20

cust_name

Varchar

30

address1

Varchar

30

Address2

Varchar

30

City

Varchar

30

Mobile

Int

20

Email

Varchar

30

Table name

Orderdet

ForeignKey

cust_code,item_code

Name
cust_code

Data type
Varchar

Size
30

item_code

Varchar

30

order_no

Varchar

30

order_date

Datetime

order_qty

Int

10

req_date

Datetime

Table name

Stockdet

Primary key

item_code

Name
item_code

Data type
Varchar

Size
30

item_name

Varchar

30

unit_price

Decimal

20

qty_on_hand

Int

10

App_name

Varchar

30

unit_desc

Varchar

20

reorder_level

Int

20

Table name

Vendorsdet

Primary key

ven_code

Name
Ven_code

Data type
Varchar

Size
30

Ven_name

Varchar

30

address1

Varchar

30

Address2

Varchar

30

City

Varchar

30

Mobile

Int

20

Email

Varchar

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

Vous aimerez peut-être aussi