0% found this document useful (0 votes)
76 views109 pages

Event Management System Report

The document describes an event management system that allows customers to book services for events online. It has two main modules: Admin and Customer. The Admin can approve members, update service charges, add/update events, and generate reports. Customers can obtain membership, book services, make online payments, view booking summaries and statuses, and change passwords. The system is designed to improve customer satisfaction by facilitating online booking and payments. It will be developed using technologies like HTML, CSS, JavaScript, Java servlets, JSP, and an Oracle database.

Uploaded by

Shashank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
76 views109 pages

Event Management System Report

The document describes an event management system that allows customers to book services for events online. It has two main modules: Admin and Customer. The Admin can approve members, update service charges, add/update events, and generate reports. Customers can obtain membership, book services, make online payments, view booking summaries and statuses, and change passwords. The system is designed to improve customer satisfaction by facilitating online booking and payments. It will be developed using technologies like HTML, CSS, JavaScript, Java servlets, JSP, and an Oracle database.

Uploaded by

Shashank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 109

event MANAGEMENT SYSTEM

VI BCA 1
event MANAGEMENT SYSTEM

1. INTRODUCTION
1.1 OBJECTIVE:

Online Event Management is web application software being designed and developed to meet
the needs of customers’ who want to book for required services. Using this web application,
the customers will be able to avail services for their events after registering with us through
our web site. Our web application facilitates clients to choose services according to their
budget and also the online payments. This will improve the customers satisfaction and saves
time.

Major Modules:

 Admin
 Customer
Functionalities of Modules:

Admin can perform the following operations:

 Approval of new members


 Updating service charges details
 Adding/Updating events and scenarios
 Preparation of reports

Customers have the following privileges:


 Obtaining membership
 Booking services for events
 Making transactions – Online Payments
 Preparation of service booking summary
 Viewing status
 Changing password

VI BCA 2
event MANAGEMENT SYSTEM

1.2 OUTLINE AND BRIEF DESCRIPTION OF THE ISSUES INVOLVED

The administrator has the full privilege in this web application. The user
with admin login can add new service details as when introduced in the
market. The financial scenarios of clients are obtained and service
booking plans and services are given. Also, on regular basis admin keeps
checking the market trends and updates the service for the customers and
generate the report.

The customers will have to register to do business through our web


application. Only the authentic customers can make transactions and get
their service status. The authenticithy of customers are maintained
through user name and password. Customers are facilitated with
password change, they can register new password if their password is
compromised. The Customers have options to view the new services and
charges details and choose the services accordingly for their events.

VI BCA 3
event MANAGEMENT SYSTEM

VI BCA 4
event MANAGEMENT SYSTEM

2. SOFTWARE REQUIREMENT ANALYSIS


System Analysis is a detailed study of the various operations performed by a system and their
relationships within and outside of the system. Analysis begins when a developer begins a
study of the program using existing system. During analysis, data are collected on the various
files, decision points and transactions handled by the present system. The commonly used
tools in the system are Data Flow Diagram, interviews, etc. Training, experience and
common sense are required for collection of relevant information needed for the development
of the system. The success of the system depends largely on how clearly the problem is
defined, thoroughly investigated and properly carried out through the choice of solution. A
good analysis model should provide not only the mechanisms of problem understanding but
also the frame work of the solution. Thus it should be studied thoroughly by collecting data
about the system. Then the proposed system should be analyzed thoroughly in accordance
with the needs.

2.1 PRESENT SYSTEM

The existing system is functionally compatible with the process logic, but lacking in certain
operations such as booking summary and alteration that customers should be able to do in the
system for the changing needs. The booking and status tracking are not automated. Usually
the e-commerce websites does not provide with the status tracking. The customers will have
to register for the same with customer support team and make phone calls to know the status
of requested service. In this type of status tracking the customers face lots of hardships in
getting connected and to talk to the executive for knowing the status. Also, the savings,
expenses and various types of earnings related operations in finance maintenance require the
automation.

2.2 PROPOSED SYSTEM

In the proposed system, the drawbacks of existing system are overcome. The customer
support for status tracking is done through one of the web module, so that customers can
track the booking status through the web pages. The numerous phone calls and endless
waiting is eliminated. All other operations are typical web commerce oriented, so system
functionality is well understood. The development and usage of this application is really
interesting one.

VI BCA 5
event MANAGEMENT SYSTEM

VI BCA 6
event MANAGEMENT SYSTEM

3. SOFTWARE REQUIREMENT SPECIFICATION

A software requirements specification (SRS) is a comprehensive description of the intended


purpose and environment for software under development. The SRS fully describes what the
software will do and how it will be expected to perform.

An SRS minimizes the time and effort required by developers to achieve desired goals and
also minimizes the development cost. A good SRS defines how an application will interact
with system hardware, other programs and human users in a wide variety of real-world
situations. Parameters such as operating speed, response time, availability, portability,
maintainability, footprint, security and speed of recovery from adverse events are evaluated.

The requirements of this web application (ems) developed by us is very well understood and
documented initially when the process started, accordingly the hardware and software
requirements are chosen. The same can be referred in the next section of this report. This web
application runs in the Apache Tomcat Server, which can be accessed by web clients through
the Internet from anywhere in the world. The SRS parameters are adopted in this system,
with the detailed feasibility study. While developing, this system tested as the localhost,
through the Mozilla firefox browser. Also, few other popular web browsers are tested.

VI BCA 7
event MANAGEMENT SYSTEM

VI BCA 8
event MANAGEMENT SYSTEM

4. SOFTWARE AND HARDWARE CONFIGURATION

HARDWARE

Processor Intel Core i3

RAM 4GB

HDD 500GB

SOFTWARE

CLIENT SIDE XHTML, CSS,


TECHNOLOGIES JAVASCRIPT

SERVER SIDE SERVLET, JSP, BEANS,


TECHNOLOGIES JDBC

DATABASE ORACLE 11g

WEB SERVER APACHE TOMCAT 8.0

IDE NETBEANS 8.2

WEB AUTHORING TOOLS PHOTOSHOP, FLASH

VI BCA 9
event MANAGEMENT SYSTEM

VI BCA 10
event MANAGEMENT SYSTEM

5. SOFTWARE PROFILE

5.1 ABOUT HTML/XHTML

HTML (Hyper Text Markup Language) :


HTML was created by Tim Berners-Lee at European Laboratory for Particle Physics
(CERN) in late 1980’s. Developed by the World Wide Web Consortium; HTML or
the Hyper Text Markup Language, as its name suggests, is a markup language for
Web pages. Today, the most important component of any web page is the text-based
information that it contains. The markup tags of HTML define the structure of the
text-based information of a web page. HTML tags are used to denote various text-
based information of a webpage as paragraphs, headings, links, bullet points etc.
Various HTML tags can also be used to supplement the text with images, forms and
other objects. HTML tags are for browsing; they are meant for interactions between
humans and computers.

Hardware Interface:
Client side:
 Processor: Intel Core i3.
 RAM: 2GB.
 Network Interface.
Server Side:
 Processor: Intel Core i3.
 RAM: 2GB.
 Disk space: 2GB.

Software Interface
Client side:
 Windows XP/ Vista/ Win 7.
 Internet Explorer 6.0 or above
 Network Interface.
Server Side:
 Apache Tomcat Web Server 7.0.1.
 Oracle 10g Database as Back End.
 J2EE Framework.

VI BCA 11
event MANAGEMENT SYSTEM

HTML draft version timeline

October 1991

HTML Tags an informal CERN document listing eighteen HTML tags, was first
mentioned in public.

June 1992

First informal draft of the HTML DTD with seven subsequent revisions (July 15,
August 6, August 18, November 17, November 19, November 20, November 22)

November 1992

HTML DTD 1.1 (the first with a version number, based on RCS revisions, which start
with 1.1 rather than 1.0), an informal draft.

June 1993

Hypertext Markup Language was published by the IETF IIIR Working Group as an
Internet-Draft (a rough proposal for a standard). It was replaced by a second version
one month later, followed by six further drafts published by IETF itself that finally
led to HTML 2.0 in RFC1866

November 1993

HTML+ was published by the IETF as an Internet-Draft and was a competing


proposal to the Hypertext Markup Language draft. It expired in May 1994.

April 1995 (authored March 1995)

HTML 3.0 was proposed as a standard to the IETF, but the proposal expired five
months later without further action. It included many of the capabilities that were in
Raggett's HTML+ proposal, such as support for tables, text flow around figures and
the display of

January 2008

HTML5 was published as a Working Draft by the W3C.

VI BCA 12
event MANAGEMENT SYSTEM

Although its syntax closely resembles that of SGML, HTML5 has abandoned any
attempt to be an SGML application and has explicitly defined its own "html"
serialization, in addition to an alternative XML-based XHTML5 serialization.

Characteristics: -

 It is the language which can be easily understood and can be modified.


 Effective presentations can be made with the HTML with the help of its all
formatting tags.
 It provides the more flexible way to deign web pages along with the text.
 Links can also be added to the web pages so it helps the readers to browse the
information of their interest.
 You can display HTML documents on any platforms such as Macintosh,
Windows and Linux etc.
 Graphics,videos and sounds can also be added to the web pages which give an
extra attractive look to your web pages. Allows database integration with wide
variety of applications.
 Additional internet capabilities.

XHTML Versions: -

XHTML is a separate language that began as a reformulation of HTML 4.01 using


XML 1.0. It continues to be developed:

 XHTML 1.0, published January 26, 2000, as a W3C Recommendation, later revised
and republished August 1, 2002. It offers the same three variations as HTML 4.0 and
4.01, reformulated in XML, with minor restrictions.
 XHTML 1.1 published May 31, 2001, as a W3C Recommendation. It is based on
XHTML 1.0 Strict, but includes minor changes, can be customized, is reformulated
using modules from Modularization of XHTML, which was published April 10, 2001,
as a W3C Recommendation.
 XHTML 2.0 There is no XHTML 2.0 standard. XHTML 2.0 is only a draft document
and it is inappropriate to cite this document as other than work in progress. XHTML

VI BCA 13
event MANAGEMENT SYSTEM

2.0 is incompatible with XHTML 1.x and, therefore, would be more accurately
characterized as an XHTML-inspired new language than an update to XHTML 1.x.
 XHTML5, which is an update to XHTML 1.x, is being defined alongside HTML5 in
the HTML5 draft.

5.2 CASCADING STYLE SHEET

Cascading Style Sheets (CSS) is a style sheet language used to describe the
presentation semantics (the look and formatting) of a document written in a markup
language. It’s most common application is to style web pages written in HTML and
XHTML, but the language can also be applied to any kind of XML document,
including plain XML, SVG and XUL.

CSS defines HOW HTML elements are to be displayed. Styles are normally saved in
external .css files. External style sheets enable you to change the appearance and
layout of all the pages in a Web site, just by editing one single file! The CSS files
referenced in the HTML page.

A CSS rule has two main parts: a selector, and one or more declarations:

VI BCA 14
event MANAGEMENT SYSTEM

The selector is normally the HTML element you want to style. Each declaration
consists of a property and a value. The property is the style attribute you want to
change. Each property has a value.
Following example formats a paragraph in an HTML document
p
{
color:red;
text-align:center;
}
5.3 JAVASCRIPT

JavaScript was originally developed by Brendan Eich of Netscape under the name
Mocha, which was later renamed to LiveScript, and finally to JavaScript.

JavaScript is a prototype-based, object-oriented Scripting Language that is dynamic,


weakly typed and has first-class functions. It is also considered a functional
programming language because it has closures and supports higher-order functions.
JavaScript is primarily used in the form of client-side JavaScript, implemented as part
of a web browser in order to provide enhanced user interfaces and dynamic websites.

The primary use of JavaScript is to write functions that are embedded in or included
from HTML pages and that interact with the Document Object Model (DOM) of the
page. Some simple examples of this usage are:
i) Opening or popping up a new window with programmatic control over the
size, position, and attributes of the new window (e.g. whether the menus,
toolbars, etc. are visible).
ii) Validating input values of a web form to make sure that they are acceptable
before being submitted to the server.
iii) Changing images as the mouse cursor moves over them: This effect is often
used to draw the user's attention to important links displayed as graphical
elements.

VI BCA 15
event MANAGEMENT SYSTEM

EXAMPLE:
a) A simple recursive function:
function factorial(n)
{
if (n === 0)
{
return 1;
}
return n * factorial(n - 1);
}

VI BCA 16
event MANAGEMENT SYSTEM

5.4 JAVA SERVER PAGES (JSP)

Released in 1999 by Sun Microsystems, JavaServer Pages (JSP) is similar to ASP


and PHP, but it uses the Java programming language. JavaServer Pages (JSP) is a
technology that helps software developers serve dynamically generated web pages
based on HTML, XML, or other document types.

JSP allows Java code and certain pre-defined actions to be interleaved with static web
markup content, with the resulting page being compiled and executed on the server to
deliver an HTML or XML document. The compiled pages and any dependent Java
libraries use Java bytecode rather than a native software format, and must therefore be
executed within a Java virtual machine (JVM) that integrates with the host operating
system to provide an abstract platform-neutral environment.

JSP syntax is a fluid mix of two basic content forms: scriptlet elements and markup.
Markup is typically standard HTML or XML, while scriptlet elements are delimited
blocks of Java code which may be intermixed with the markup. When the page is
requested the Java code is executed and its output is added, in situ, with the
surrounding markup to create the final page. JSPs must be compiled to Java bytecode
classes before they can be executed, but such compilation is needed only when a
change to the source JSP file has occurred.

VI BCA 17
event MANAGEMENT SYSTEM

Characteristics of Java Server Pages

 The Power of Server-Side Java


 Easy and Rapid Web Development, Deployment and Maintenance
 Emphasizing Reusable Components
 Separating Content Generation from Presentation
 Open Development and Widespread Industry Support
 Platform Independence

VI BCA 18
event MANAGEMENT SYSTEM

5.5 SERVLET

A Servlet is a Java programming language class that is used to extend the capabilities
of servers that host applications access via a request-response programming model.
Although servlets can respond to any type of request, they are commonly used to
extend the applications hosted by web servers. For such applications, Java Servlet is a
Java class in Java EE that conforms to the Java Servlet API, a protocol by which a
Java class may respond to requests. They are not tied to a specific client-server
protocol, but are most often used with the HTTP protocol. Therefore, the word
"Servlet" is often used in the meaning of "HTTP Servlet".[2] Thus, a software
developer may use a servlet to add dynamic content to a Web server using the Java
platform. The generated content is commonly HTML, but may be other data such as
XML. Servlets are the Java counterpart to non-Java dynamic Web content
technologies such as CGI and ASP.NET. Servlets can maintain state in session
variables across many server transactions by using HTTP cookies, or URL rewriting.

Characteristics Of Java Servlet

 Servlets are efficient

 Servlets are robust

 Servl ets are portable.

 Servlets are persistence.

VI BCA 19
event MANAGEMENT SYSTEM

5.6 APACHE TOMCAT

Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the
Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies.[3]
Tomcat provides a "pure Java" HTTP web server environment in which Java code can run.

Tomcat is developed and maintained by an open community of developers under the auspices
of the Apache Software Foundation, released under the Apache License 2.0 license.

Components

Tomcat 4.x was released with Catalina (a servlet container), Coyote (an HTTP connector)
and Jasper (a JSP engine).

Catalina James

Catalina is Tomcat's servlet container. Catalina implements Sun Microsystems' specifications


for servlet and JavaServer Pages (JSP). In Tomcat, a Realm element represents a "database"
of usernames, passwords, and roles (similar to Unix groups) assigned to those users. Different
implementations of Realm allow Catalina to be integrated into environments where such
authentication information is already being created and maintained, and then use that
information to implement Container Managed Security as described in the Servlet
Specification.[4]

Coyote

Coyote is a Connector component for Tomcat that supports the HTTP 1.1 and 2 protocol as a
web server. This allows Catalina, nominally a Java Servlet or JSP container, to also act as a
plain web server that serves local files as HTTP documents.[5] Coyote listens for incoming
connections to the server on a specific TCP port and forwards the request to the Tomcat
Engine to process the request and send back a response to the requesting client. Another
Coyote Connector, Coyote JK, listens similarly but instead forwards its requests to another
web server, such as Apache, using the JK Protocol.[6] This usually offers better performance.
[citation needed]

VI BCA 20
event MANAGEMENT SYSTEM

Jasper

Jasper is Tomcat's JSP Engine. Jasper parses JSP files to compile them into Java code as
servlets (that can be handled by Catalina). At runtime, Jasper detects changes to JSP files and
recompiles them.

As of version 5, Tomcat uses Jasper 2, which is an implementation of the Sun Microsystems'


JSP 2.0 specification. From Jasper to Jasper 2, important features were added:

 JSP Tag library pooling – Each tag markup in JSP file is handled by a tag handler class. Tag
handler class objects can be pooled and reused in the whole JSP servlet.
 Background JSP compilation – While recompiling modified JSP Java code, the older version is
still available for server requests. The older JSP servlet is deleted once the new JSP servlet
has finished being recompiled.
 Recompile JSP when included page changes – pages can be inserted and included into a JSP
at runtime. The JSP will not only be recompiled with JSP file changes but also with included
page changes.
 JDT Java compiler – Jasper 2 can use the Eclipse JDT (Java Development Tools) Java compiler
instead of Ant and javac.

Three new components were added with the release of Tomcat 7:

Cluster

This component has been added to manage large applications. It is used for load balancing
that can be achieved through many techniques. Clustering support currently requires the JDK
version 1.5 or higher.

High availability

A high-availability feature has been added to facilitate the scheduling of system upgrades
(e.g. new releases, change requests) without affecting the live environment. This is done by
dispatching live traffic requests to a temporary server on a different port while the main
server is upgraded on the main port. It is very useful in handling user requests on high-traffic
web applications.[7]

Web application

It has also added user- as well as system-based web applications enhancement to add support
for deployment across the variety of environments. It also tries to manage sessions as well as
applications across the network.

Tomcat is building additional components. A number of additional components may be used


with Apache Tomcat. These components may be built by users should they need them or they
can be downloaded from one of the mirrors.[8]

VI BCA 21
event MANAGEMENT SYSTEM

Features

Tomcat 8.x implements the Servlet 3.1 and JSP 2.3 Specifications.[9] Apache Tomcat 8.5.x is
intended to replace 8.0.x and includes new features pulled forward from Tomcat 9.0.x. The
minimum Java version and implemented specification versions remain unchanged.[10]

The Key Features of NetBeans 8.2

 ECMAScript 6 support
 NodeJS enhancements
 Oracle JET support enhancements
 PHP7 support
 Docker support
 New editor multicaret features
 New pinnable watches feature
 SQL profiling

C/C++ enhancements

VI BCA 22
event MANAGEMENT SYSTEM

5.7 DATABASE MANAGEMENT SYSTEM

A database management system (DBMS) is a collection of programs that enables


users to create and maintain a database. This is a software system that allows access to
the data contained in the database. The primary goal of a DBMS is to provide an
environment that is both convenient and efficient to use in storing and retrieving
database information.

Functions of DBMS:-

DBMS is a general purpose software system that performs the following functions:-

 Defining a database.

 Constructing the database.

 Manipulating the database.

 Sharing database among various users.

 Protecting the database.

 Maintaining a database.

VI BCA 23
event MANAGEMENT SYSTEM

DBMS Architecture:-
DBMS architecture consists of three levels known as Three Schema Architecture. It is
convenient tool with which the user can visualize the schema levels in a database
system. It contains of the following three schemas:-

1. The Internal level: - This contains of an internal schema, which describes the
physical storage structure of the database. It is the lowest level of abstraction. It does
not hide the storage details. It contains the definition of the stored record, the method
of representing the data fields and the access aids used. This internal schema uses a
physical data model and describes the complete details of data storage and access
paths for the database. It is also called the physical schema.

2. The Conceptual level: - This has a conceptual schema, which describes the structures
of a database for a group of users. This schema hides the storage details from the user
and it includes description of entities, data types, relationships, user operations and
constraints. The description of data at this level is in a format independent of its
physical representation.

3. The External level: - This has a number of external schemas or user views. Each
external schema describes the part of the database that a particular user group is
interested in and hides all the other details from this group. This is at a highest level of
database absorption.

VI BCA 24
event MANAGEMENT SYSTEM

Fig: - Three schema DBMS architecture

Client-Server Architecture: -

The client/server architecture was developed to deal with computing environments in


which a large number of PCs, workstations, file servers, printers, database servers,
Web servers and other equipment are connected via a network. There are two
client/server architecture:-

 Two-tier

 Three-tier

 N-tier

Two-Tier Client/Server Architecture: -

In two tier architecture, the software components are distributed over two systems: the
client and the server. This architecture has two forms as: logical two-tier and physical
two-tier.

VI BCA 25
event MANAGEMENT SYSTEM

Fig: - Logical two-tier client/server architecture

Fig: - Physical two-tier client/server architecture

The above figure shows the physical client/server architecture. Some machines like
diskless workstations, or workstations/PCs with disks that have only client software
installed would be only client sites. Other machines would be dedicated servers. Some
other machines would have both client and server functionality. In relational DBMS,
user interface and application programs can run at client side. The query and
transactions functionality are included on the server side. A client program can send
query and transaction requests using the ODBC API which are then processed at the
server site. The query results are sending back to the client program which can
process or display the results needed.

VI BCA 26
event MANAGEMENT SYSTEM

Three-Tier Client/Server Architecture: -

With the emergence of World Wide Web, many web applications use the three-tier
architecture. There is an intermediate layer between the client and the database server
called the application server or the web server. The web server plays the intermediary
role by storing business rules that are used to access data from the database server. It
checks the client’s credentials before forwarding a request to the database server. The
intermediate server accepts requests from the client, process the request and sends
database commands to the database server, and then acts as a conduit for passing
processed data from the database server to the clients, where it may be processed
further.

Fig: - Logical three-tier client/server architecture

N-Tier Architecture: -

In N-Tier architecture, the middle tier is allowed to have multiple application objects
rather than a single application. Each of these application objects must have a well-
defined interface which allows them to contact and communication with one another.
An interface actually brings an idea of contract. That is, each object states through its
interface that it will accept certain parameters and return a specific set of results.

Application objects use their interfaces to do business processing. With and N-Tier
architecture, one can have multiple applications using a common set of business
objects across an organization. This promotes the standardization of business
practices by creating a single set of business functions for the entire organization to

VI BCA 27
event MANAGEMENT SYSTEM

access. If a particular business rule changes, then changes have to be made to only the
business object and if need, to its interface also.

Normalization: -

Normalization is a process during which unsatisfactory relation schemas are


decomposed by breaking up their attributes into smaller relation schemas that possess
desirable properties.

Normalization of data can be looked upon as a process of analyzing the given relation
schemas based on their functional dependencies and primary keys to achieve the
desirable properties of minimizing redundancy, insertion, deletion and update
anomalies.

The different Normal Forms present in DBMS are: -

 First Normal Form: - It states that the domains of attributes must include only atomic
values and that the value of any attribute in a tuple must be single value from the
domain of that attribute. It disallows a set of values, a tuple of values, or a
combination of both as an attribute value for a single tuple.

 Second Normal Form: - A relation is said to be in Second Normal Form if it is in


1NF and non-key attributes are fully functionally dependent on the key attribute(s). If
the key has more than one attribute (composite key) then no non-key attributes should
be functionally dependent upon a part of the key attributes.

 Third Normal Form: - A relation is said to be in Third Normal Form if it is in 2NF


and no non-prime attributes of relation R is transitively dependent on the primary key.

 Fourth Normal Form: - Under this, a record type should not contain two or more
independent multi-valued facts about an entity. In addition, the record must satisfy
third normal form.

 Fifth Normal Form: - It also deals with multi-valued facts. Here, the record must
satisfy the fourth normal form.

VI BCA 28
event MANAGEMENT SYSTEM

 Boyce Codd Normal Form: - It a normal form used in database normalization. It is a


slightly stronger version of the third normal form (3NF). A table is in Boyce–Codd
normal form if and only if for every one of its nontrivial dependencies X → Y, X is a
super key—that is, X is either a candidate key or a superset thereof

VI BCA 29
event MANAGEMENT SYSTEM

5.8 Oracle 11g

At Oracle OpenWorld 2006, Oracle announced some exciting new features of Oracle 11g,
and they promise 482 new Oracle11g features.  For me, the most exciting new features relate
to tools that automate the well-structured DBA tasks, freeing-up the DBA to pursue more
challenging work. 

Oracle 11g is the clear leader in this area.  Oracle has invested heavily into self-tuning
capabilities including automated storage and memory management and intelligent tuning
advisors.  Now in 11g, Oracle closes the loop and offers intelligent automation tools to create
a self-healing database.  The most important 11g new automation features include a SQL
tuning advisor that automatically tunes SQL statements.

 Automatic Memory Tuning - Automatic PGA tuning was introduced in Oracle 9i.
Automatic SGA tuning was introduced in Oracle 10g. In 11g, all memory can be
tuned automatically by setting one parameter.  PGA Update:  Oracle technology is
constantly changing, so don't miss my new notes on updates to Oracle PGA behavior.
Also see these important notes on over-riding the Oracle PGA defaults.
 
 SQL Performance Analyzer (Fully Automatic SQL Tuning) - Using SPA, you can
tell 11g to automatically apply SQL profiles for statements where the suggested
profile give 3-times better performance that the existing statement. The performance
comparisons are done by a new administrative task during a user-specified
maintenance window.  See Inside the 11g SQL Performance Advisor.
 
 Automated Storage Load balancing - Oracle?s Automatic Storage Management
(ASM) now enables a single storage pool to be shared by multiple databases for
optimal load balancing. Shared disk storage resources can alternatively be assigned to
individual databases and easily moved from one database to another as processing
requirements change.
 
 Automatic Diagnostic Repository - When critical errors are detected, Oracle
automatically creates an ?incident? ticket, notifying the DBA instantly.
 

Let's get started with the Oracle11g new features for general database administration:

Oracle 11g DBA new features

 Enhanced ILM - Information Lifecycle Management (ILM) has been around for
decades, but Oracle has made a push to codify the approach in 11g.  Read more about
Oracle 11g ILM here:  Inside Oracle 11g ILM - Information lifecycle management.
 
 Table-level control of CBO statistics refresh threshold - (source Lutz Hartmann)
When Oracle automatically enables statistics collection, the default "staleness"
threshold of 10% can now be changed with the dbms_stats.set_table_prefs procedure:

VI BCA 30
event MANAGEMENT SYSTEM

exec dbms_stats.set_table_prefs(?HR?, EMPS?, ?STALE_PERCENT?, ?15′)

 There are three new arguments to the set_table_prefs procedure, designed to allow the DBA
more control over the freshness of their statistics:

stale_percent - overrides the one-size-fits-all value of 10%

incremental - Incremental statistics gathering for partitions

publish - Allows the DBA to test new statistics before publishing them to the data dictionary

This is an important 11g new feature because the DBA can now control the quality of
optimizer statistics at the table level, thereby improving the behavior of the SQL optimizer to
always choose the ?best? execution plan for any query.

 File Group Repository - Oracle introduced an exciting new feature in 10gr2 dubbed
the Oracle File Group Repository (FGR).  The FGR allows the DBA to define a
logically-related group of files and build a version control infrastructure.  The
working of the Oracle file group repository were created to support Oracle Streams,
and they mimic the functionality of an IBM mainframe generation data group (GDG),
in that you can specify relative incarnations of the file sets (e.g. generation 0,
generation -3).
 
 Interval partitioning for tables - This is a new 11g partitioning scheme that
automatically creates time-based partitions as new data is added. Source: Mark
Rittman  This is a marvelous one ! You can now partition by date, one partition per
month for example, with automatic partition creation. Source: Laurent Schneider
 
 New load balancing utilities -There are several new load balancing utilities in 11g
(first introduced in 10gr2):

 Web server load balancing - The web cache component includes Apache
extension to load-balance transactions to the least-highly-loaded Oracle HTTP
server (OHS).
 
 RAC instance load balancing - Staring in Oracle 10g release 2, Oracle JDBC
and ODP.NET provide connection pool load balancing facilities through
integration with the new ?load balancing advisory? tool.  This replaces the
more-cumbersome listener-based load balancing technique.
 
 Automated Storage Load balancing - Oracle?s Automatic Storage
Management (SAM) now enables a single storage pool to be shared by
multiple databases for optimal load balancing.  Shared disk storage resources
can alternatively be assigned to individual databases and easily moved from
one database to another as processing requirements change.
 
 Data Guard Load Balancing ? Oracle Data Guard allows for load balancing
between standby databases.
 

VI BCA 31
event MANAGEMENT SYSTEM

 Listener Load Balancing - If advanced features such as load balancing and


automatic failover are desired, there are optional sections of the listener.ora
file that must be present

 New table Data Type "simple_integer" - A new 11g datatype dubbed


simple_integer is introduced. The simple_integer data type is always NOT NULL,
wraps instead of overflows and is faster than PLS_INTEGER. Source: Lewis
Cunningham
 
 Improved table/index compression - Segment compression now works for all DML,
not just direct-path loads, so you can create tables compressed and use them for
regular OLTP work. Also supports column add/drop. Mark Rittman
 
 Faster DML triggers - DML triggers are up to 25% faster. This especially impacts
row level triggers doing updates against other tables (think Audit trigger). Source:
Lewis Cunningham
 
 Improved NFS data file management - Kevin Closson has some great notes on
Oracle 11g improvement in Networked Attached Storage (NAS). "I?ve already
blogged that 11g ?might? have an Oracle-provided NFS client. Why is this? It?s
because Oracle knows full well that taking dozens of commodity servers and saddling
them up with multi-protocol connectivity is a mess.
 
 Server-side connection pooling - In 11g server-side connection pooling, an
additional layer to the shared server, to enable faster [actually to bypass] session
creation. Source: Laurent Schneider  Server-side connection pooling allows multiple
Oracle clients to share a server-side pool of sessions (USERIDs must match). Clients
can connect and disconnect (think PHP applications) at will without the cost of
creating a new server session - shared server removes the process creation cost but not
the session creation cost. Mark Rittman
 
 RMAN UNDO bypass - RMAN backup can bypass undo. Undo tablespaces are
getting huge, but contain lots of useless information. Now RMAN can bypass those
types of tablespace. Great for exporting a tablespace from backup. Source: Laurent
Schneider
 
 Capture/replay database workloads - Sounds appealing. You can capture the
workload in prod and apply it in development. Oracle is moving toward more
workload-based optimization, adjusting SQL execution plans based on existing
server-side stress.  This can be very useful for Oracle regression testing. Source:
Laurent Schneider
 
 Scalability Enhancements - The features in 11g focused on scalability and
performance can be grouped into four areas: Scalable execution, scalable storage,
scalable availability and scalable management. Mark Rittman
 
 Virtual columns - Oracle 11g virtual table columns are columns that are actually
functions ("create table t1 (c1 number, c2 number, c3 as (c1+c2) virtual"), and similarly,
virtual indexes that are based on functions.  Also see Oracle 11g function-based

VI BCA 32
event MANAGEMENT SYSTEM

virtual columns.  Source: Source: Mark Rittman


 
 REF partitioning - The 11g REF partitioning allows you to partition a table based on
the values of columns within other tables. Source: Mark Rittman
 
 A "super" object-oriented DDL keyword - This is used with OO Oracle when
instantiating a derivative type (overloading), to refer to the superclass from whence
the class was derived.
 
 Oracle 11g XML data storage - Starting in 11g, you can store XML either as a
CLOB or a binary data type, adding flexibility.  Oracle11g will support query
mechanisms for XML including XQuery and SQL XML, emerging standards for
querying XML data stored inside tables. 
 
 New Trigger features - A new type of "compound" trigger will have sections for
BEFORE, ROW and AFTER processing, very helpful for avoiding errors, and
maintaining states between each section. 
 
 Partitioning - partitioning by logical object and automated partition creation.
 
 LOB's - New high-performance LOB features.
 
 Automatic Diagnostic Repository (ADR) - When critical errors are detected, they
automatically create an ?incident?. Information relating to the incident is
automatically captured, the DBA is notified and certain health checks are run
automatically. This information can be packaged to be sent to Oracle support (see
following). Source: Dr. Tim Hall  The ADR can be accessed via OEM or a command-
line interface.
 
 Hangman Utility ? The Hang Manager (hangman) utility is a new 11g tool to detect
database bottlenecks.  An extension of the dba_waiters and dba_blockers views, the
hangman tables have a ?hang chain? that allow the DBA to find the source of ?
hangs?, such as the ?deadly embrace? where mutually blocking locks or latches hang
a process.   In 11g, the hangman utility is installed on all RAC nodes by default,
allowing for easier inter-node hang diagnostics.
 
 Health Monitor (HM) utility - The Health Monitor utility is an automation of the
dbms_repair corruption detection utility.  When a corruption-like problem happens,
the HR utility will checks for possible corruption within database blocks, redo log
blocks, undo segments, or dictionary table blocks.
 
 Incident Packaging Service (IPS) - This wraps up all information about an incident,
requests further tests and information if necessary, and allows you to send the whole
package to Oracle Support. Source: Dr. Tim Hall
 
 Feature Based Patching - All one-off patches will be classified as to which feature
they affect. This allows you to easily identify which patches are necessary for the
features you are using. EM will allow you to subscribe to a feature based patching
service, so EM automatically scans for available patches for the features you are

VI BCA 33
event MANAGEMENT SYSTEM

using. Source: Dr. Tim Hall


 
 New Oracle11g Advisors - New 11g Oracle Streams Performance Advisor and
Partitioning Advisor. Source: Mark Rittman
 
 Enhanced Read only tables -
 
 Table trigger firing order - Oracle 11g PL/SQL and beyond will allow you to
specify trigger firing order with the "precedes" and "follows" clauses.   See trigger
firing order tips
 
 Invisible indexes - Rich Niemiec claims that the new 11g "invisible indexes" are a
great new feature.  It appears that the invisible indexes will still exist, that they can
just be marked as "invisible" so that they cannot be considered by the SQL optimizer.
With the overhead of maintaining the index intact, I don't see why this is very useful. 
Also see 11g Function-based columns.
 

Oracle11g High Availability & RAC new features

Oracle continues to enhance Real Application Clusters in Oracle11g and we see some
exciting new features in RAC manageability and enhanced performance:

 Oracle 11g RAC parallel upgrades - Oracle 11g promises to have a rolling upgrade
features whereby RAC database can be upgraded without any downtime.  Ellison first
promised this feature in 2002, and it is a very challenging and complex 11g new
feature.
 
 Oracle RAC load balancing advisor - Starting in 10gr2 we see a RAC load
balancing advisor utility.  Oracle says that the 11g RAC load balancing advisor is
only available with clients which use .NET, ODBC, or the Oracle Call Interface
(OCI).
 
 ADDM for RAC - Oracle will incorporate RAC into the automatic database
diagnostic monitor, for cross-node advisories.
 
 Interval Partitioning - Robert Freeman notes that 11g "interval Partitioning makes it
easier to manage partitions:

Oracle 11g programming language support New Features

 PHP - Improved PHP driver for Oracle.


 
 Compilers - Improved native Java & PL/SQL compilers.
 
 Oracle 11g XML Enhancements - Oracle 11g will also support Content Repository
API for Java Technology (JSR 170).  Oracle 11g has XML "duality", meaning that

VI BCA 34
event MANAGEMENT SYSTEM

you can also embed XML directives inside PL/SQL and embed PL/SQL inside XML
code.  Oracle 11g XML will also support schema-based document Type Definitions
(DTD's), to describe internal structure of the XML document.
 
 Scalable Java - The next scalable execution feature is automatic creation of "native"
Java code, with just one parameter for each type with an "on/off" value. This
apparently provides a 100% performance boost for pure Java code, and a 10%-30%
boost for code containing SQL. Mark Rittman
 
 Improved sequence management - A new features of Oracle 11g will bypass DML
(sequence.nextval) and allow normal assignments on sequence values.
 
 Intra-unit inlining. In C, you can write a macro that gets inlined when called. Now
any stored procedure is eligible for inlining if Oracle thinks it will improve
performance. No change to your code is required. Now you have no reason for not
making everything a subroutine! Source: Lewis Cunningham
 

Oracle 11g PL/SQL New Features

 PL/SQL "continue" keyword - This will allow a "C-Like" continue in a loop,


skipping an iteration to bypass any "else" Boolean conditions.  A nasty PL/SQL
GOTO statement is no longer required to exit a Boolean within a loop.  Oracle
professional Jurgen Kemmelings has an excellent PL/SQL example of the PL/SQL
continue clause in-action:
begin
  for i in 1..3
  loop
    dbms_output.put_line(?i=?||to_char(i));
    if ( i = 2 )
    then
      continue;
    end if;
    dbms_output.put_line(?Only if i is not equal to 2′);
  end loop;
end;
 

 Disabled state for PL/SQL - Another 11g new feature is a "disabled" state for
PL/SQL (as opposed to "enabled" and "invalid" in dba_objects).
 
 Easy PL/SQL compiling - Native Compilation no longer requires a C compiler to
compile your PL/SQL. Your code goes directly to a shared library. Source: Lewis
Cunningham
 
 Improved PL/SQL stored procedure invalidation mechanism - A new 11g
features will be fine grained dependency tracking, reducing the number of objects
which become invalid as a result of DDL.
 

VI BCA 35
event MANAGEMENT SYSTEM

 Scalable PL/SQL - The next scalable execution feature is automatic creation of


"native" PL/SQL (and Java code), with just one parameter for each type with an
"on/off" value. This apparently provides a 100% performance boost for pure PL/SQL
code, and a 10%-30% performance boost for code containing SQL. Mark Rittman
 
 Enhanced PL/SQL warnings - The 11g PL/SQL compiler will issue a warning for a
"when others" with no raise.
 
 Stored Procedure named notation - Named notation is now supported when calling
a stored procedure from SQL.

 Oracle 11g SQL New Features

 New "pivot" SQL clause - The new "pivot" SQL clause will allow quick rollup,
similar to an MS-Excel pivot table, where you can display multiple rows on one
column with SQL.  MS SQL Server 2005 also introduced a pivot clause. Laurent
Schneider notes that the new SQL "pivot" syntax is great for converting rows-to-
columns and columns-to-rows.
 
 The /*+result_cache*/ SQL hint - This suggests that the result data will be cached in
the data buffers, and not the intermediate data blocks that were accessed to obtain the
query results.  You can cache SQL and PL/SQL results for super-fast subsequent
retrieval.  The "result cache" ties into the "scalable execution" concept.  There are
three areas of the result cache:
o The SQL query result cache - This is an area of SGA memory for storing
query results.
 
o The PL/SQL function result cache - This result cache can store the results
from a PL/SQL function call.
 
o The OCI client result cache - This cache retains results from OCI calls, both
for SQL queries or PL/SQL functions.
 

 Scalable Execution - This 11g feature consists of a number of features, the first of
which is query results caching; this feature automatically caches the results of an SQL
query as opposed to the data blocks normally cached by the buffer cache, and works
both client (OCI) and server side - this was described as "buffer cache taken to the
next level". The DBA sets the size of the results cache and turns the feature on at a
table level with the command "alter table DEPT cache results", the per-process cache
is shared across multiple session and at the client level, is available with all 11g OCI-
based clients. Mark Rittman
 
 XML SQL queries - Oracle11g will support query mechanisms for XML including
XQuery and SQL XML, emerging standards for querying XML data stored inside
tables. 
 

VI BCA 36
event MANAGEMENT SYSTEM

 SQL Replay - Similar to the previous feature, but this only captures and applies the
SQL workload, not total workload. Source: Dr. Tim Hall
 
 Improved optimizer statistics collection speed - Oracle 11g has improved the
dbms_stats performance, allowing for an order of magnitude faster CBO statistics
creation.  Oracle 11g has also separated-out the "gather" and "publish" operations,
allowing CBO statistics to be retained for later use. Also, Oracle 11g introduces
multi-column statistics to give the CBO the ability to more accurately select rows
when the WHERE clause contains multi-column conditions or joins.
 
 SQL execution Plan Management - Oracle 11g SQL will allow you to fix execution
plans (explain plan) for specific statements, regardless of statistics or database version
changes. See Inside the 11g SQL Performance Advisor.
 
 Dynamic SQL. DBMS_SQL is here to stay. It's faster and is being enhanced.
DBMS_SQL and NDS can now accept CLOBs (no more 32k limit on NDS). A ref
cursor can become a DBMS_SQL cursor and vice versa. DBMS_SQL now supprts
user defined types and bulk operations. Source: Lewis Cunningham
 
 SQL Performance Advisor - You can tell 11g to automatically apply SQL profiles
for statements where the suggested profile give 3-times better performance that the
existing statement. The performance comparisons are done by a new administrative
task during a user-specified maintenance window.
 
 Improved SQL Access Advisor - The 11g SQL Access Advisor gives partitioning
advice, including advice on the new interval partitioning. Interval partitioning is an
automated version of range partitioning, where new equally-sized partitions are
automatically created when needed. Both range and interval partitions can exist for a
single table, and range partitioned tables can be converted to interval partitioned
tables.
 
 Oracle 11g SQL tuning transformations

11g Performance tuning optimization new features:

 Automatic Memory Tuning - Automatic PGA tuning was introduced in Oracle 9i.
Automatic SGA tuning was introduced in Oracle 10g. In 11g, all memory can be
tuned automatically by setting one parameter. You literally tell Oracle how much
memory it has and it determines how much to use for PGA, SGA and OS Processes.
Maximum and minimum thresholds can be set.  This is controlled by the Oracle 11g
memory_target parameter.
 
 Resource Manager - The 11g Resource Manager can manage I/O, not just CPU. You
can set the priority associated with specific files, file types or ASM disk groups.
 
 ADDM - The ADDM in 11g can give advice on the whole RAC (database level), not
just at the instance level. Directives have been added to ADDM so it can ignore issues
you are not concerned about. For example, if you know you need more memory and

VI BCA 37
event MANAGEMENT SYSTEM

are sick of being told it, you can ask ADDM not to report those messages anymore.
 
 Faster sorting - Starting in 10gr2 we see an improved sort algorithm, ?Oracle10gRw
introduced a new sort algorithm which is using less memory and CPU resources. A
hidden parameter _newsort_enabled = {TRUE|FALSE} governs whether the new sort
algorithm will be used.?
 
 AWR Baselines - The AWR baselines of 10g have been extended to allow automatic
creation of baselines for use in other features. A rolling week baseline is created by
default.
 
 Adaptive Metric Baselines - Notification thresholds in 10g were based on a fixed
point. In 11g, notification thresholds can be associated with a baseline, so the
notification thresholds vary throughout the day in line with the baseline.

Oracle 11g security & auditing new features

 Enhanced Password - Pete Finnigan notes some new Oracle 11g security features
"[Oracle 11g] will have case sensitive passwords and also the password algorithm has
changed to SHA-1 instead of the old DES based hashing used."
 
 Oracle SecureFiles - replacement for LOBs that are faster than Unix files to
read/write. Lots of potential benefit for OLAP analytic workspaces, as the LOBs used
to hold AWs have historically been slower to write to than the old Express .db files.
Mark Rittman Securefiles are a huge improvement to BLOB data types. Faster, with
compression, encryption. Source: Laurent Schneider
 
 Oracle 11g audit vault - Oracle Audit Vault is a new feature that will provide a
solution to help customers address the most difficult security problems remaining
today, protecting against insider threat and meeting regulatory compliance
requirements.
 
 Proxy connect for SQL*Plus - New with 10r2 proxy identification in SQL*Plus, the
"connect" command has been enhanced to allow for a "proxy", to aid applications that
always connect with the same user ID:
       connect sapr3[scott]/tiger
 
 FGAC for UTL_SMTP, UTL_TCP and UTL_HTTP. You can define security on
ports and URLs. Source: Lewis Cunningham
 
 Fine Grained Dependency Tracking (FGDT). This means that when you add a
column to a table, or a cursor to a package spec, you don't invalidate objects that are
dependant on them. Sweet! Source: Lewis Cunningham
 
 Database Workload Replay - Oracle "Replay" allows the total database workload to
be captured, transferred to a test database created from a backup or standby database,
then replayed to test the affects of an upgrade or system change.

VI BCA 38
event MANAGEMENT SYSTEM

You specify the SQL tuning sets similar to the 10g offering and use the dbms_sqlpa package
(SQL performance analyzer) to manage the SQL each "analyzer task" with dbms_sqlpa
procedures (create_analysis_task, cancel_analysis_task, drop_analysis_task,
reset_analysis_task, report_analysis_task, resume_analysis_task, interrupt_analysis_task).

Currently, they are working to a capture performance overhead of 5%, so you could
conceivably capture real production workloads. Source: Dr. Tim Hall

Oracle 11g new RMAN features

Java, PL/SQL, XML, .NET, PHP, APEX

 PL/SQL Native Compilation Without Needing a Third-Party C Compiler.


 Native PL/SQL use of Seq.Nextval in a PL/SQL program.
 PL/SQL can use CLOBs to get around 32KB limitation of SQL character strings.
 Enhanced PL/SQL warnings and error messages.
 PLSTIMER identifies hotspots and performance tuning opportunities in PL/SQL.
 New package DBMS_HPROF controls the recording of raw PLSTIMER data.
 Continued support of standards with JDBC 4.0 and JVM 5.0. Capability to upgrade to
JVM 6.0 will be available in the future.
 Oracle JVM JIT supports transparent native Java compilation without a C Compiler.
 Significant performance improvements with JDBC performance especially with
Advanced Queuing.
 JDBC supports server side result cache alone with OCI client side result cache.
Additional things I liked included the "big" improvements in the JIT and RAC
support for JDBC.
 New command line interface to OracleJVM making it a lot easier to work with the
JDK in the database.
 Support for database resident JARs.
 JDBC support for starting and shutting down the database.
 Performance enhancements to XPath query for Java.
 XML applications can now process larger XML documents by loading and saving .
 DOM nodes in memory and using a page manager for physical binary data
management.
 Unified Java API for XML allows mid-tier Java programs to leverage lazily loading
by allowing a disconnected mode of operation that allows a XMLType to be used
with a session pool model of connection management.
 

HTML-DB 11g enhancements

 APEX will be standard with an embedded PL/SQL gateway.


 APEX will have an application packager for packing and deployment of APEX
applications.
 Data Pump Enhancements to use when you're moving data
 Compression and encryption enhancements
 Support for XML Schemas and schema-based tables.
 Transportable partitions
 

VI BCA 39
event MANAGEMENT SYSTEM

Change assurance (important for saving money during testing and migration)
 

 Change assurance new features of Database Replay and SQL Replay can play a large
role in reducing costs, testing and issues when migrating to Oracle Database 11g. This
is one of the best new features in this release.
 
 Database replay - captures actual production workload and replays it on a separate
system.
 
 SQL performance analyzer - finds and fixes SQL performance degradations
 
 10gR2 will have a patch set, that will allow the replay to occur.
 

Secure Files (Next generation LOBS)


 

 Eliminates need for file systems. Very fast access of files.


 
 Just as fast as file systems with all the capabilities of the Oracle database (it?s a new
LOB type). It is very fast at accessing the files from a file system.
 
 Store all your data in the database with one consistent:, Security and auditing model
 
 Backup and recovery mechanism
 
 Storage management (ASM)
 
 Transaction and concurrency model
 
 Interface and protocol
 
 Values added services like encryption, compression, and de-duplication

Oracle 11g Business Intelligence & OLAP

Mark Rittman notes some of the upcoming features with Oracle 11g BI suite and OLAP:

Integration of materialized view query rewrite with OLAP - Rittman notes:

"However, in 10g OLAP although you could register a view over aggregated data in an
analytic workspace with query rewrite, ?normal? queries that used SUM(), AVG() and other
aggregation functions, together with GROUP BY, wouldn?t get rewritten as the SQL views
used over analytic workspaces were based on fully-solved cubes, i.e. the view contained all
levels of aggregation and measures were already aggregated. . .

VI BCA 40
event MANAGEMENT SYSTEM

Now, with this forthcoming release of Oracle OLAP, you can just check a box in Analytic
Workspace Manager to enable queries against the source tables for your analytic workspace
to be re-written against the summary data in your analytic workspace, and your OLAP cube
will then act in the same way as a regular materialized view, meaning the two technologies
(in theory) will be interchangeable as a way of summarizing warehouse data. "

Oracle 11g data mining

With the release of the first book on ODM "Oracle Data Mining", we see increased interest in
data mining within 11g and there are rumors that ODM will be greatly enhanced, moving
data mining objects into the dictionary and improving the interface for complex analytics.

ASM new features in 11g

-asmca introduction
-disk can be force mount/delete
-metadata backup
-asm and cluster in same software
-asm disk check
-fast start mirror resync
-sysasm role

RMAN new features in 11g

-rman undo bypass


-backup of flash recovery area to disk
-virtual catalog
-recovery advisor
-Duplicate database from backup with out connecting to source database
-Undrop tablespace

Data Guard new features in 11g

- Fast-Start Failover for Maximum Performance Mode in a Data Guard Configuration


- Compression of Redo Traffic (Only for Gap Resolution) Over the Network in a Data Guard
Configuration
- Real-Time Query Capability of Physical Standby Database
- Fast Role Transitions in a Data Guard Configuration
- Data Guard Integration, Simplification, and Performance
- Dynamic Setting of Oracle Data Guard SQL Apply Parameters
- Enhanced Data Guard Broker Based Management Framework
- Histogram for Redo Transport Response Time in a Data Guard Configuration
- Snapshot Standby
- Strong Authentication for Data Guard Redo Transport
- Enhanced DDL Handling in Oracle Data Guard SQL Apply

VI BCA 41
event MANAGEMENT SYSTEM

- Enhanced Oracle RAC Switchover Support for Logical Standby Databases


- Data Guard Logical Apply Completeness
- Oracle Scheduler Support in Data Guard SQL Apply
- Support Transparent Data Encryption (TDE) with Data Guard SQL Apply
- Support XMLType Data Type (Only CLOB) in Data Guard SQL Apply
- Virtual Private Database (VPD) Support in Data Guard SQL Apply 

5.9 Java 8 Features

Oracle released a new version of Java as Java 8 in March 18, 2014. It was a revolutionary
release of the Java for software development platform. It includes various upgrades to the
Java programming, JVM, Tools and libraries.

Java 8 Programming Language Enhancements

Java 8 provides following features for Java Programming:

 Lambda expressions,
 Method references,
 Functional interfaces,
 Stream API,
 Default methods,
 Base64 Encode Decode,
 Static methods in interface,
 Optional class,
 Collectors class,
 ForEach() method,
 Parallel array sorting,
 Nashorn JavaScript Engine,
 Parallel Array Sorting,
 Type and Repating Annotations,
 IO Enhancements,
 Concurrency Enhancements,
 JDBC Enhancements etc.

Lambda Expressions

Lambda expression helps us to write our code in functional style. It provides a clear and
concise way to implement SAM interface(Single Abstract Method) by using an expression. It
is very useful in collection library in which it helps to iterate, filter and extract data.

Method References

Java 8 Method reference is used to refer method of functional interface . It is compact and
easy form of lambda expression. Each time when you are using lambda expression to just
referring a method, you can replace your lambda expression with method reference.

Functional Interface

VI BCA 42
event MANAGEMENT SYSTEM

An Interface that contains only one abstract method is known as functional interface. It can
have any number of default and static methods. It can also declare methods of object class.

Functional interfaces are also known as Single Abstract Method Interfaces (SAM Interfaces).

Optional

Java introduced a new class Optional in Java 8. It is a public final class which is used to deal
with NullPointerException in Java application. We must import java.util package to use this
class. It provides methods to check the presence of value for particular variable.

forEach

Java provides a new method forEach() to iterate the elements. It is defined in Iterable and
Stream interfaces.

It is a default method defined in the Iterable interface. Collection classes which extends
Iterable interface can use forEach() method to iterate elements.

This method takes a single parameter which is a functional interface. So, you can pass
lambda expression as an argument.

Date/Time API

Java has introduced a new Date and Time API since Java 8. The java.time package contains
Java 8 Date and Time classes.

Default Methods

Java provides a facility to create default methods inside the interface. Methods which are
defined inside the interface and tagged with default keyword are known as default methods.
These methods are non-abstract methods and can have method body.

Nashorn JavaScript Engine

Nashorn is a JavaScript engine. It is used to execute JavaScript code dynamically at JVM


(Java Virtual Machine). Java provides a command-line tool jjs which is used to execute
JavaScript code.

You can execute JavaScript code by two ways:

1. Using jjs command-line tool, and


2. By embedding into Java source code.

StringJoiner

VI BCA 43
event MANAGEMENT SYSTEM

Java added a new final class StringJoiner in java.util package. It is used to construct a
sequence of characters separated by a delimiter. Now, you can create string by passing
delimiters like comma(,), hyphen(-) etc.

Collectors

Collectors is a final class that extends Object class. It provides reduction operations, such as
accumulating elements into collections, summarizing elements according to various criteria
etc.

Stream API

Java 8 java.util.stream package consists of classes, interfaces and an enum to allow


functional-style operations on the elements. It performs lazy computation. So, it executes
only when it requires.

Stream Filter

Java stream provides a method filter() to filter stream elements on the basis of given
predicate. Suppose, you want to get only even elements of your list, you can do this easily
with the help of filter() method.

This method takes predicate as an argument and returns a stream of resulted elements.

Java Base64 Encoding and Decoding

Java provides a class Base64 to deal with encryption and decryption. You need to import
java.util.Base64 class in your source file to use its methods.

This class provides three different encoders and decoders to encrypt information at each
level.

Java Parallel Array Sorting

Java provides a new additional feature in Arrays class which is used to sort array elements
parallelly. The parallelSort() method has added to java.util.Arrays class that uses the JSR 166
Fork/Join parallelism common pool to provide sorting of arrays. It is an overloaded method.

Java 8 Security Enhancements

1) The Java Secure Socket Extension(JSSE) provider enables the protocols Transport Layer
Security (TLS) 1.1 and TLS 1.2 by default on the client side.

2) A improved method AccessController.doPrivileged has been added which enables code to


assert a subset of its privileges, without preventing the full traversal of the stack to check for
other permissions.

VI BCA 44
event MANAGEMENT SYSTEM

3) Advanced Encryption Standard (AES) and Password-Based Encryption (PBE) algorithms,


such as PBEWithSHA256AndAES_128 and PBEWithSHA512AndAES_256 has been added
to the SunJCE provider.

4) Java Secure Socket Extension (SunJSSE) has enabled Server Name Indication (SNI)
extension for client applications by default in JDK 7 and JDK 8 supports the SNI extension
for server applications. The SNI extension is a feature that extends the SSL/TLS protocols to
indicate what server name the client is attempting to connect to during handshaking.

5) The SunJSSE is enhanced to support Authenticated Encryption with Associated Data


(AEAD) algorithms. The Java Cryptography Extension (SunJCE) provider is enhanced to
support AES/GCM/NoPadding cipher implementation as well as Galois/Counter Mode
(GCM) algorithm parameters.

6) A new command flag -importpassword is added to the keytool utility. It is used to accept a
password and store it securely as a secret key. Classes such as
java.security.DomainLoadStoreParameter andjava.security.PKCS12Attribute is added to
support DKS keystore type.

7) In JDK 8, the cryptographic algorithms have been enhanced with the SHA-224 variant of
the SHA-2 family of message-digest implementations.

8) Enhanced support for NSA Suite B Cryptography which includes:

 OID registration for NSA Suite B cryptography algorithms


 Support for 2048-bit DSA key pair generation and additional signature algorithms for 2048-
bit DSA keys such as SHA224withDSA and SHA256withDSA.
 Lifting of the keysize restriction from 1024 to 2048 for Diffie-Hellman (DH) algorithm.

9) SecureRandom class provides the generation of cryptographically strong random numbers


which is used for private or public keys, ciphers and signed messages. The
getInstanceStrong() method was introduced in JDK 8, which returns an instance of the
strongest SecureRandom. It should be used when you need to create RSA private and public
key. SecureRandom includes following other changes:

 Two new implementations has introduced for UNIX platforms, which provide blocking and
non-blocking behavior.

10) A new PKIXRevocationChecker class is included which checks the revocation status of
certificates with the PKIX algorithm. It supports best effort checking, end-entity certificate
checking, and mechanism-specific options.

11) The Public Key Cryptography Standards 11 (PKCS) has been expanded to include 64-bit
supports for Windows.

12) Two new rcache types are added to Kerberos 5. Type none means no rcache at all, and
type dfl means the DFL style file-based rcache. Also, the acceptor requested subkey is now
supported. They are configured using the sun.security.krb5.rcache and
sun.security.krb5.acceptor.subkey system properties.

VI BCA 45
event MANAGEMENT SYSTEM

13) In JDK 8, Kerberos 5 protocol transition and constrained delegation are supported within
the same realm.

14) Java 8 has disabled weak encryption by default. The DES-related Kerberos 5 encryption
types are not supported by default. These encryption types can be enabled by adding
allow_weak_crypto=true in the krb5.conf file.

15) You can set server name to null to denote an unbound server. It means a client can
request for the service using any server name. After a context is established, the server can
retrieve the name as a negotiated property with the key name
SASL.BOUND_SERVER_NAME.

16) Java Native Interface (JNI) bridge to native Java Generic Security Service (JGSS) is now
supported on Mac OS X. You can set system property sun.security.jgss.native to true to
enable it.

17) A new system property, jdk.tls.ephemeralDHKeySize is defined to customize the


ephemeral DH key sizes. The minimum acceptable DH key size is 1024 bits, except for
exportable cipher suites or legacy mode (jdk.tls.ephemeralDHKeySize=legacy).

18) Java Secure Socket Extension (JSSE) provider honors the client's cipher suite preference
by default. However, the behavior can be changed to respect the server's cipher suite
preference by calling SSLParameters.setUseCipherSuitesOrder(true) over the server.

Java 8 Tools Enhancements

1) A jjs command is introduced, which invokes the Nashorn engine either in interactive shell
mode, or to interpret script files.

2) The java command is capable of launching JavaFX applications, provided that the JavaFX
application is packaged correctly.

3) The java command man page (both nroff and HTML) has been completely reworked. The
advanced options are now divided into Runtime, Compiler, Garbage Collection, and
Serviceability, according to the area that they affect. Several previously missing options are
now described. There is also a section for options that were deprecated or removed since the
previous release.

4) New jdeps command-line tool allows the developer to analyze class files to determine
package-level or class-level dependencies.

5) You can access diagnostic commands remotely, which were previously accessible only
locally via the jcmd tool. Remote access is provided using the Java Management Extensions
(JMX), so diagnostic commands are exposed to a platform MBean registered to the platform
MBean server. The MBean is the com.sun.management.DiagnosticCommandMBean
interface.

6) A new option -tsapolicyid is included in the jarsigner tool which enables you to request a
signed time stamp from a Time Stamping Authority and attach it to a signed JAR file.

VI BCA 46
event MANAGEMENT SYSTEM

7) A new method java.lang.reflect.Executable.getParameters is included which allows you to


access the names of the formal parameters of any method or constructor. However, .class
files do not store formal parameter names by default. To store formal parameter names in a
particular .class file, and thus enable the Reflection API to retrieve formal parameter names,
compile the source file with the -parameters option of the javac compiler.

8) The type rules for binary comparisons in the Java Language Specification (JLS) Section
15.21 will now be correctly enforced by javac.

9) In this release, the apt tool and its associated API contained in the package com.sun.mirror
have been removed.

Javadoc Enhancements

In Java SE 8, the following new APIs were added to the Javadoc tool.

 A new DocTree API introduce a scanner which enables you to traverse source code that is
represented by an abstract syntax tree. This extends the Compiler Tree API to provide
structured access to the content of javadoc comments.
 The javax.tools package contains classes and interfaces that enable you to invoke the
Javadoc tool directly from a Java application, without executing a new process.
 The "Method Summary" section of the generated documentation of a class or interface has
been restructured. Method descriptions in this section are grouped by type. By default, all
methods are listed. You can click a tab to view methods of a particular type (static, instance,
abstract, concrete, or deprecated, if they exist in the class or interface).
 The javadoc tool now has support for checking the content of javadoc comments for issues
that could lead to various problems, such as invalid HTML or accessibility issues, in the files
that are generated by javadoc. The feature is enabled by default, and can also be controlled
by the new -Xdoclint option.

Pack200 Enhancements

The Java class file format has been updated because of JSR 292 which Supports Dynamically
Typed Languages on the Java Platform.

The Pack200 engine has been updated to ensure that Java SE 8 class files are compressed
effectively. Now, it can recognize constant pool entries and new bytecodes introduced by JSR
292. As a result, compressed files created with this version of the pack200 tool will not be
compatible with older versions of the unpack200 tool.

Java 8 I/O Enhancements

In Java 8, there are several improvements to the java.nio.charset.Charset and extended charset
implementations. It includes the following:

 A New SelectorProvider which may improve performance or scalability for server. The
/dev/poll SelectorProvider continues to be the default. To use the Solaris event port
mechanism, run with the system property java.nio.channels.spi.Selector set to the value
sun.nio.ch.EventPortSelectorProvider.

VI BCA 47
event MANAGEMENT SYSTEM

 The size of <JDK_HOME>/jre/lib/charsets.jar file is decreased.


 Performance has been improvement for the java.lang.String(byte[], ∗) constructor and the
java.lang.String.getBytes() method.

Java 8 Networking Enhancements

1) A new class java.net.URLPermission has been added. It represents a permission for


accessing a resource defined by a given URL.

2) A package jdk.net has been added which contains platform specific socket options and a
mechanism for setting these options on all of the standard socket types. The socket options are
defined in jdk.net.ExtendedSocketOptions.

3) In class HttpURLConnection, if a security manager is installed, and if a method is called


which results in an attempt to open a connection, the caller must possess either a
"connect"SocketPermission to the host/port combination of the destination URL or a
URLPermission that permits this request.

If automatic redirection is enabled, and this request is redirected to another destination, the
caller must also have permission to connect to the redirected host/URL.

Java 8 Concurrency Enhancements

The java.util.concurrent package added two new interfaces and four new classes.

Java.util.concurrent Interfaces
Interface Description

It is a marker interface which is used to


identify asynchronous tasks produced by
public static interface
async methods. It may be useful for
CompletableFuture.AsynchronousCompletionTask
monitoring, debugging, and tracking
asynchronous activities.

It creates a stage of a possibly asynchronous


computation, that performs an action or
public interface CompletionStage<T>
computes a value when another
CompletionStage completes.

Java.util.concurrent Classes
Class Description

It is aFuture that may be explicitly completed,


public class CompletableFuture<T> extends Object and may be used as a CompletionStage,
implements Future<T>, CompletionStage<T> supporting dependent functions and actions that
trigger upon its completion.

VI BCA 48
event MANAGEMENT SYSTEM

public static class It is a view of a ConcurrentHashMap as a Set of


ConcurrentHashMap.KeySetView<K,V> extends keys, in which additions may optionally be
Object implements Set<K>, Serializable enabled by mapping to a common value.

A ForkJoinTask with a completion action


public abstract class CountedCompleter<T> extends
performed when triggered and there are no
ForkJoinTask<T>
remaining pending actions.

It throws an exception when an error or other


public class CompletionException extends
exception is encountered in the course of
RuntimeException
completing a result or task.

New Methods in java.util.concurrent.ConcurrentHashMap class

ConcurrentHashMap class introduces several new methods in its latest release. It includes
various forEach methods (forEach, forEachKey, forEachValue, and forEachEntry), search
methods (search, searchKeys, searchValues, and searchEntries) and a large number of
reduction methods (reduce, reduceToDouble, reduceToLong etc.). Other miscellaneous
methods (mappingCount and newKeySet) have been added as well.

New classes in java.util.concurrent.atomic

Latest release introduces scalable, updatable, variable support through a small set of new
classes DoubleAccumulator, DoubleAdder, LongAccumulator andLongAdder. It internally
employ contention-reduction techniques that provide huge throughput improvements as
compared to Atomic variables.

Class Description

It is used for one or more variables that together


public class DoubleAccumulator extends
maintain a running double value updated using a
Number implements Serializable
supplied function.

public class DoubleAdder extends Number It is used for one or more variables that together
implements Serializable maintain an initially zero double sum.

It is used for one or more variables that together


public class LongAccumulator extends
maintain a running long value updated using a supplied
Number implements Serializable
function.

public class LongAdder extends Number It is used for one or more variables that together
implements Serializable maintain an initially zero long sum.

VI BCA 49
event MANAGEMENT SYSTEM

New methods in java.util.concurrent.ForkJoinPool Class

This class has added two new methods getCommonPoolParallelism() and commonPool(),
which return the targeted parallelism level of the common pool, or the common pool instance,
respectively.

Method Description

public static ForkJoinPool commonPool() It returns the common pool instance.

Public static int It returns the targeted parallelism level of the common
getCommonPoolParallelism() pool.

New class java.util.concurrent.locks.StampedLock

A new class StampedLock is added which is used to add capability-based lock with three
modes for controlling read/write access (writing, reading, and optimistic reading). This class
also supports methods that conditionally provide conversions across the three modes.

Class Description

public class StampedLock extends Object This class represents a capability-based lock with three
implements Serializable modes for controlling read/write access.

Java API for XML Processing (JAXP) 1.6 Enhancements

In Java 8, Java API is added for XML Processing (JAXP) 1.6. It requires the use of the
service provider loader facility which is defined by java.util.ServiceLoader to load services
from service configuration files.

The rationale for this is to allow for future modularization of the Java SE platform where
service providers may be deployed by means other than JAR files and perhaps without the
service configuration files.

Java Virtual Machine Enhancements

The verification of invokespecial instructions has been tightened so that only an instance
initialization method in the current class or its direct super class may be invoked.

Java Mission Control 5.3 is included in Java 8

Java Mission Control (JMC) is an advanced set of tools that enables efficient and detailed
data analysis and delivers advanced, unobtrusive Java monitoring and management. JMC
provides sections for common analysis areas such as code performance, memory and latency.

Babel Language Packs in Japanese and Simplified Chinese are now included by default in the
Java Mission Control that is included in the JDK 8.

VI BCA 50
event MANAGEMENT SYSTEM

Java 8 Internationalization Enhancements


1) Unicode Enhancements

The JDK 8 includes support for Unicode 6.2.0. It contains the following features.

 733 new characters including Turkish Lira sign.

 7 new scripts:
o Meroitic Hieroglyphs
o Meroitic Cursive
o Sora Sompeng
o Chakma
o Sharada
o Takri
o Miao

 11 new blocks: including 7 blocks for the new scripts listed above and 4 blocks for the
following existing scripts:
 Arabic Extended-A
 Sundanese Supplement
 Meetei Mayek Extensions
 Arabic Mathematical Alphabetical Symbols

Adoption of Unicode CLDR Data and the java.locale.providers System Property

The Unicode Consortium has released the Common Locale Data Repository (CLDR) project
to "support the world's languages, with the largest and most extensive standard repository of
locale data available." The CLDR is becoming the de-facto standard for locale data. The
CLDR's XML-based locale data has been incorporated into the JDK 8 release, however it is
disabled by default.

There are four distinct sources for locale data:

 CLDR represents the locale data provided by the Unicode CLDR project.
 HOST represents the current user's customization of the underlying operating system's
settings. It works only with the user's default locale, and the customizable settings may vary
depending on the OS, but primarily Date, Time, Number, and Currency formats are
supported.
 SPI represents the locale sensitive services implemented in the installed SPI providers.
 JRE represents the locale data that is compatible with the prior JRE releases.

To select the desired locale data source, use the java.locale.providers system property. listing
the data sources in the preferred order. For example:
java.locale.providers=HOST,SPI,CLDR,JRE The default behavior is equivalent to the
following setting: java.locale.providers=JRE,SPI

Java 8 New Calendar and Locale APIs

VI BCA 51
event MANAGEMENT SYSTEM

The JDK 8 includes two new classes, several new methods, and a new return value for an
existing static method.

Two new abstract classes for service providers are added to the java.util.spi package.

Class Description

public abstract class CalendarDataProvider It is an abstract class for service providers that provide
extends LocaleServiceProvider locale-dependent Calendar parameters.

public abstract class It is an abstract class for service providers that provide
CalendarNameProvider extends localized string representations (display names) of
LocaleServiceProvider Calendar field values.

A static method is now able to recognize Locale.UNICODE_LOCALE_EXTENSION for the


numbering system.

Method Description

It is used to get the DecimalFormatSymbols instance for the specified


public static final locale. This method provides access to DecimalFormatSymbols
DecimalFormatSymbols instances for locales supported by the Java runtime itself as well as for
getInstance(Locale locale) those supported by installed DecimalFormatSymbolsProvider
implementations. It throws NullPointerException if locale is null.

Added New methods in calender API:

Method Description

It returns true if the given locale is supported by this locale service


public boolean
provider. The given locale may contain extensions that should be taken
isSupportedLocale(Locale
into account for the support determination. It is define in
locale)
java.util.spi.LocaleServiceProvider class

It returns the calendar type of this Calendar. Calendar types are


public String
defined by the Unicode Locale Data Markup Language (LDML)
getCalendarType()
specification. It is defined in java.util.Calendar class.

New style specifiers are added for the Calendar.getDisplayName and


Calendar.getDisplayNames methods to determine the format of the Calendar name.

Specifier Description

VI BCA 52
event MANAGEMENT SYSTEM

public static final int It is a style specifier for getDisplayName and getDisplayNames
SHORT_FORMAT indicating a short name used for format.

public static final int It is a style specifier for getDisplayName and getDisplayNames
LONG_FORMAT indicating a long name used for format.

It is a style specifier for getDisplayName and getDisplayNames


public static final int
indicating a short name used independently, such as a month
SHORT_STANDALONE
abbreviation as calendar headers.

It is a style specifier for getDisplayName and getDisplayNames


public static final int
indicating a long name used independently, such as a month name as
LONG_STANDALONE
calendar headers.

Two new Locale methods for dealing with a locale's (optional) extensions.

Method Description

public boolean
It returns true if this Locale has any extensions.
hasExtensions()

public Locale It returns a copy of this Locale with no extensions. If this Locale has no
stripExtensions() extensions, this Locale is returned itself.

Two new Locale.filter methods return a list of Locale instances that match the specified
criteria, as defined in RFC 4647:

Method Description

It returns a list of matching Locale instances using the


public static List<Locale>
filtering mechanism defined in RFC 4647. This is equivalent
filter(List<Locale.LanguageRange>
to filter(List, Collection, FilteringMode) when mode is
priorityList,Collection<Locale> locales)
Locale.FilteringMode.AUTOSELECT_FILTERING.

public static List<Locale>


filter(List<Locale.LanguageRange> It returns a list of matching Locale instances using the
priorityList,Collection<Locale> locales, filtering mechanism defined in RFC 4647.
Locale.FilteringMode mode)

Two new Locale.filterTags methods return a list of language tags that match the specified
criteria, as defined in RFC 4647.

Method Description

public static List<String> It returns a list of matching languages tags using the

VI BCA 53
event MANAGEMENT SYSTEM

basic filtering mechanism defined in RFC 4647. This is


filterTags(List<Locale.LanguageRange> equivalent to filterTags(List, Collection, FilteringMode)
priorityList, Collection<String> tags) when mode is
Locale.FilteringMode.AUTOSELECT_FILTERING.

public static List<String>


filterTags(List<Locale.LanguageRange> It returns a list of matching languages tags using the
priorityList, Collection<String> tags, basic filtering mechanism defined in RFC 4647.
Locale.FilteringMode mode)

Two new lookup methods return the best-matching locale or language tag using the lookup
mechanism defined in RFC 4647.

Method Description

It returns a Locale instance for the best-


public static Locale lookup(List<Locale.LanguageRange>
matching language tag using the lookup
priorityList, Collection<Locale> locales)
mechanism defined in RFC 4647.

Public static String It returns the best-matching language tag


lookupTag(List<Locale.LanguageRange> using the lookup mechanism defined in RFC
priorityList,Collection<String> tags) 4647.

Other Java 8 Version Enhancements

Enhancements in JDK 8u5

1) The frequency in which the security prompts are shown for an application has been
reduced.

Enhancements in JDK 8u11

1) An option to suppress offers from sponsors when the JRE is installed or updated is
available in the Advanced tab of the Java Control Panel.

2) The Entry-Point attribute can be included in the JAR file manifest to identify one or more
classes as a valid entry point for your RIA(Rich Internet application).

Enhancements in JDK 8u20

1) The javafxpackager tool has been renamed to javapackager. This tool has been enhanced
with new arguments for self-contained application bundlers.

Follwing enhancements are related to the java tool:

VI BCA 54
event MANAGEMENT SYSTEM

 An experimental JIT compiler option related to Restricted Transactional Memory (RTM) has
been added.
 Several options related to string deduplication have been added.
 Several options related to Advanced Encryption Standard (AES) intrinsics have been added.
 Combinations of garbage collection options have been deprecated.

2) Garbage Collection Tuning Guide has been added to the Java HotSpot Virtual Machine. It
describes the garbage collectors included with the Java HotSpot VM and helps you to decide
which garbage collector can best optimize the performance of your application, especially if
it handles large amounts of data (multiple gigabytes), has many threads, and has high
transaction rates.

Enhancements in JDK 8u31

1) In this release, the SSLv3 protocol is removed from the Java Control Panel Advanced
options.

Enhancements in JDK 8u40


Java tool

1) The -XX:+CheckEndorsedAndExtDirs has been added because the endorsed-standards


override mechanism (JDK-8065675) and the extension mechanism (JDK-8065702) have
been deprecated. The option helps identify any existing uses of these mechanisms and is
supported in JDK 7u80 and JDK 8u40.

2) Java Flight Recorder (JFR) offers a variety of ways to unlock commercial features and
enable JFR during the runtime of an application.

It includes java command line options such as jcmd diagnostic commands and Graphical
User Interface (GUI) controls within Java Mission Control. This flexibility enables you to
provide the appropriate options at startup, or interact with JFR later.

3) The option -XX:StartFlightRecording=parameter=value has a new parameter,


dumponexit={true|false}, which specifies whether a dump file of JFR data should be
generated when the JVM terminates in a controlled manner.

4) The options related to Restricted Transactional Memory (RTM) are no longer


experimental. These options include -XX:RTMAbortRatio=abort_ratio, -
XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt, and -XX:
+UseRTMLocking.

5) In Java 8, Application Class Data Sharing (AppCDS) has been introduced. AppCDS
extends CDS (Class Data Sharing) to enable classes from the standard extensions directories
and the application class path to be placed in the shared archive. This is a commercial feature
and is no longer considered experimental.

6) New options -XX:+ResourceManagement and -


XX:ResourceManagementSampleInterval=value have been added.

VI BCA 55
event MANAGEMENT SYSTEM

7) Additional information about large pages has been added. Large Pages, also known as
huge pages, are memory pages that are significantly larger than the standard memory page
size. Large pages optimize processor Translation-Lookaside Buffers. The Linux options -XX:
+UseHugeTLBFS, -XX:+UseSHM, and -XX:+UseTransparentHugePages have been
documented.

8) The option -XX:ObjectAlignmentInBytes=alignment has been documented.

JJS tool

1) The option --optimistic-types=[true|false] has been added. It enables or disables optimistic


type assumptions with deoptimizing recompilation.

2) The option --language=[es5] has been added to the jjs tool. It specifies the ECMAScript
language version.

Javapackager tool

1) New arguments are available for OS X bundlers. The mac.CFBundleVersion argument


identifies the internal version number to be used.

2) The mac.dmg.simple argument indicates if DMG customization steps that depend on


executing AppleScript code are skipped.

Jcmd tool

Jcmd tool is used to dynamically interact with Java Flight Recorder (JFR). You can use it to
unlock commercial features, enable/start/stop flight recordings, and obtain various status
messages from the system.

Jstat tool

The jstat tool has been updated with information about compressed class space which is a
special part of metaspace.

Virtual machine

The Scalable Native Memory Tracking HotSpot VM feature helps diagnose VM memory
leaks and clarify users when memory leaks are not in the VM. Native Memory Tracker can
be run without self-shutdown on large systems and without causing a significant performance
impact beyond what is considered acceptable for small programs.

VI BCA 56
event MANAGEMENT SYSTEM

VI BCA 57
event MANAGEMENT SYSTEM

6. SYSTEM DESIGN

6.1 DATABASE SCHEMA DESIGN:


create table emslogin(
username varchar2(20) constraint sspuseridpk primary key,
password varchar2(30),
usertype varchar2(20)
);

create table emsemployee


(
empid varchar(12) constraint sspempidpk primary key,
empname varchar2(20) ,
empgender varchar2(6),
empaddress varchar2(50),
empphone varchar2(11),
empemail varchar2(20),
empsalary number(7,2),
empjobcategory varchar2(20),
empstatus varchar2(20)
);

create table emsservicemaster


(
serviceid varchar2(12) constraint sspserviceidpk primary key,
servicetype varchar(20)
);

create table emsclients


(
clientid varchar2(12) constraint sspclientidpk primary key,
clientname varchar2(20),
email varchar2(20),

VI BCA 58
event MANAGEMENT SYSTEM

phone varchar2(11),
address varchar2(50),
companyname varchar2(20),
balanceamt number(10,2)
);

create table emscaterservicemast


(
caterserviceid varchar2(12) constraint sspcatserserviceidpk primary key,
caterservicetype varchar2(20),
serviceid varchar2(12) references emsservicemaster(serviceid)
);

create table caterservicedetails


(
caterserviceid varchar2(12) references emscaterservicemast(caterserviceid),
menuitemname varchar2(20),
price number(7,2)
);

create table emsbkgmaster


(
bkgid varchar2(12) constraint sspbkgidpk primary key,
bkgdate varchar2(20),
bkgclientid varchar2(10) references emsclients(clientid),
servicedate varchar2(20),
bkgeventaddr varchar2(50),
bkgnumdays number(10),
bkgamt number(10,2),
bkgstatus varchar2(20)
);

VI BCA 59
event MANAGEMENT SYSTEM

create table emseventservicedetails


(
servicedetid varchar2(12) constraint sspservicedetidpk primary key,
serviceid varchar2(12) references emsservicemaster(serviceid),
servicename varchar2(20),
servicecharge number(8),
availableserviceqty number(8)
);

create table emsservicebkgdet


(
servicedetid varchar2(12) references emseventservicedetails(servicedetid),
bkgid varchar2(12) references emsbkgmaster (bkgid),
serviceqty number(8),
serviceamt number(10,2)
);

create table emscaterbkgdet


(
caterserviceid varchar2(12) references emscaterservicemast (caterserviceid),
bkgid varchar2(12) references emsbkgmaster(bkgid),
serviceqty number(6),
serviceamt number(10,2)
);

create table emsservicedespatch


(
emsservicedespid varchar2(12) constraint sspemsservicedespidpk primary key,
bkgid varchar2(12) references emsbkgmaster (bkgid)
);

VI BCA 60
event MANAGEMENT SYSTEM

create table emsservicedespatchdetails


(
emsservicedespid varchar2(12) references emsservicedespatch (emsservicedespid),
empid varchar2(12) references emsemployee(empid)
);

VI BCA 61
event MANAGEMENT SYSTEM

6.2 DATA DICTIONARY


-----------------------------------------------------------------------------------------------------------

Sequences Used

-----------------------------------------------------------------------------------------------------------

create sequence sspempidseq increment by 1 start with 101 nocycle;

create sequence sspserviceidseq increment by 1 start with 101 nocycle;

create sequence sspclientidseq increment by 1 start with 101 nocycle;

create sequence sspcaterserviceidseq increment by 1 start with 101 nocycle;

create sequence sspbkgidseq increment by 1 start with 101 nocycle;

create sequence sspservicedetidseq increment by 1 start with 101 nocycle;

create sequence sspemsservicedespidseq increment by 1 start with 101 nocycle;

VI BCA 62
event MANAGEMENT SYSTEM

6.3 DATA FLOW DIAGRAM

VI BCA 63
event MANAGEMENT SYSTEM

6.4 ER DIAGRAM

VI BCA 64
event MANAGEMENT SYSTEM

VI BCA 65
event MANAGEMENT SYSTEM

7. TESTING

7.1 CODING , TESTING AND IMPLEMENTATION

The main interfaces are:


 Web server and application server interface.
 Application server and Database server interface.
Check if all the interactions between these servers are executed properly. Errors are
handled properly. If database or web server returns any error message for any query by
application server then application server should catch and display these error messages
appropriately to users. Check what happens if user interrupts any transaction in-between?
Check what happens if connection to web server is reset in between?

7.2 TESTING AND ERRORS

Compatibility of our web site is very important testing aspect. See which compatibility
test to be executed:
 Browser compatibility
 Operating system compatibility
 Mobile browsing
 Printing options
Browser compatibility:
Some applications are very dependent on browsers. Different browsers have different
configurations and settings that your web page should be compatible with. Your web site
coding should be cross browser platform compatible. If you are using java scripts or
AJAX calls for UI functionality, performing security checks or validations then give more
stress on browser compatibility testing of your web application. Test web application on
different browsers like Internet explorer, Firefox, Netscape navigator, AOL, Safari,
Opera, Chrome browsers with different versions.

OS compatibility:
Some functionality in your web application is may not be compatible with all operating
systems. All new technologies used in web development like graphics designs, interface
calls like different API’s may not be available in all Operating Systems.
Test your web application on different operating systems like Windows, Unix, MAC,
Linux, Solaris with different OS flavors.

VI BCA 66
event MANAGEMENT SYSTEM

7.3 SAMPLE TEST CASES DONE

Sl.No. Test Case Done Action taken

1 Invalid user credentials Redirected to error page.


entered Customer of Admin main
page not shown.

2 Incomplete form entry in the Users are prompted to


registration and few other complete the page to proceed
pages. next.

3 Illegal data entry. E.g., All such errors are captured


experience entered in negative and prompted accordingly so
values. Phone numbers out of that users will provide only
range, etc., the legal input to the system.

4 Invalid credit card number Captured and prompted the


entry. user to enter only the valid
credit card number.

5 Incorrect ClientID entry Error message notified to the


Client ID.

VI BCA 67
event MANAGEMENT SYSTEM

VI BCA 68
event MANAGEMENT SYSTEM

8. SCREENS

VI BCA 69
event MANAGEMENT SYSTEM

VI BCA 70
event MANAGEMENT SYSTEM

VI BCA 71
event MANAGEMENT SYSTEM

VI BCA 72
event MANAGEMENT SYSTEM

VI BCA 73
event MANAGEMENT SYSTEM

VI BCA 74
event MANAGEMENT SYSTEM

VI BCA 75
event MANAGEMENT SYSTEM

VI BCA 76
event MANAGEMENT SYSTEM

VI BCA 77
event MANAGEMENT SYSTEM

VI BCA 78
event MANAGEMENT SYSTEM

VI BCA 79
event MANAGEMENT SYSTEM

REGISTRATION.HTML
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script type="text/javascript">
function checkForEmpty(form)
{
cn = document.regform.mname.value;
caddr = document.regform.maddress.value;
phno = document.regform.mphone.value;
em = document.regform.memail.value;
if(cn.length == 0 || cper.length == 0 || caddr.length == 0 || phno.length == 0 || pin.length ==
0 || em.length == 0 || faxnum.length == 0)
{
alert("Please fill all the fields");
return false;
}
else
return true;
}
function checkNum1(form)
{
str = document.regform.mname.value;
var i, x ;
for(i=0; i< str.length; i++)
{
x = charAt(i);
if(x >= 0 && x <= 9)
{
alert("please enter only alphabet");
document.regform.mname.value= "";

VI BCA 80
event MANAGEMENT SYSTEM

//return false;
}
}
// return true;
}
function checkPhno()
{
var retval = true;
var pno = document.regform.mphone.value;
var stripped = pno.replace(/[\(\)\.\-\ ]/g, '');
//strip out acceptable non-numeric characters
if (isNaN(parseInt(stripped))) {
alert("The phone number contains illegal characters.");
document.regform.mphone.value="";
retval = false;
}
if(pno.length != 10)
{
alert("Illegal length");
document.regform.mphone.value="";
retval = false;
}
return retval;
}
function emailValid()
{
var aemail = document.regform.memail.value;
//if email field is empty - warning displays and return false
if(aemail=="")
{
alert ("This field is required. Please enter email [email protected]")
return false
}

VI BCA 81
event MANAGEMENT SYSTEM

//get email string length


len = aemail.length
//check position of @ character.
//it may be anywhere but not in the beginning or at the end of string.
if((aemail.charAt(1)=='@')||(aemail.charAt(1)=='.'))
{
alert ("Invalid email. Please enter email like [email protected]");
document.regform.memail.value="";
return false;
}
if((aemail.charAt(len-2)=='@')||(aemail.charAt(len-2)=='.'))
{
alert ("Invalid email. Please enter email like [email protected]");
document.regform.memail.value="";
return false
}
//count number of @ occurrences and number of dot occurrences
count=0
dotcount=0
for (i=0; i< aemail.length; i++)
{
if(aemail.charAt(i)=='@')
count++
if(aemail.charAt(i)=='.')
dotcount++
}
//if @ or dot occurs not once display warning and return false
if((count !=1)||(dotcount !=1))
{
alert ("Invalid email. Please enter email like [email protected]");
document.regform.memail.value="";
return false
}

VI BCA 82
event MANAGEMENT SYSTEM

return true
}
function isAlpha(parm,num)
{
//var parm = document.f1.T1.value;
var lwr = 'abcdefghijklmnopqrstuvwxyz .';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
return isValid(parm,num,lwr+upr);
}
function isValid(parm,num,val) {
if (parm == "")
{
alert("Please enter text");
return false;
}
for (i=0; i<parm.length; i++) {
if (val.indexOf(parm.charAt(i),0) == -1)
{
alert("please enter only alphabet");
if(num==1)
document.regform.mname.value="";
return false;
}
}
return true;
}
function checkfill()
{
var ele;
var flag=true;
var ecount=document.regform.elements.length;
for(i=0;i<ecount;i++)
{

VI BCA 83
event MANAGEMENT SYSTEM

ele=document.regform.elements[i].value;
if(ele.length==0)
{
window.alert("Please fill all fields");
flag=false;
break;
}
}
return flag;
}
</script>
<style type="text/css">
td,a,h1
{
color: white;
}
a:hover
{
color: yellow;
}
</style>
</head>
<body background="rbg8.jpg">
<center><h1>REGISTRATION FORM</h1>
<hr/>
<form name="regform" action="regprocess.jsp" method="post" onsubmit="return
checkfill();">
<table width="60%" >
<tr>
<td >
<table>
<tr><td>
<img src="join.png" />

VI BCA 84
event MANAGEMENT SYSTEM

</td>
</tr>
</table></td>
<td>
<table>
<tr> <td>Name</td>
<td><input type="text" name="mname" value="" onblur="checkNum1()"/>
</td></tr>
<tr> <td>Address</td>
<td><input type="text" name="maddress" value=""/>
</td></tr>
<tr> <td>Email</td>
<td><input type="text" name="memail" value="" onblur="emailValid()"/>
</td></tr>
<tr> <td>Phone</td>
<td><input type="text" name="mphone" value="" onblur="checkPhno()" />
</td></tr>
<tr> <td>Company Details</td>
<td><input type="text" name="mcompanydetails" value=""/>
</td></tr>
<tr><td><input type="submit" name="s1" value="Register"/>
</td><td><input type="reset" name="r1" value="clear"/>
</td>
</tr>
</table>
</tr>
</table>
</form>
</center>
</body>
</html>

VI BCA 85
event MANAGEMENT SYSTEM

REGISTRATION.JSP
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean class="emspack.PasswordBean" id="pb" scope="request"></jsp:useBean>
<%@page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String un = request.getParameter("mname");
String uadr = request.getParameter("maddress");
String uem = request.getParameter("memail");
String uph = request.getParameter("mphone");
String ucomdet = request.getParameter("mcompanydetails");
String pwd = pb.genPwd();
String uid = "emsuser";

Connection c = null;
Statement s = null;
ResultSet r = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection("jdbc:odbc:sspemsdsn","scott","tiger");
s = c.createStatement();
r = s.executeQuery("select userseq.nextval from dual");
while(r.next())
{
uid += r.getInt(1);
}

VI BCA 86
event MANAGEMENT SYSTEM

s = c.createStatement();
s.executeUpdate("insert into emsclients values('" + uid + "','" + un + "','" + uem +
"','" + uph + "','" + uadr + "','" + ucomdet + "',0)");
s = c.createStatement();
s.executeUpdate("insert into emslogin values('" + uid + "','" + pwd + "','client')");
%>
<h1>Your registration is confirmed. Welcome to EMS</h1>
<hr />
<h2>Your user name is <%= uid %></h2>
<h2>Your password is <%= pwd %></h2>
<h3><a href="login.html">CLICK HERE TO LOGIN</a></h3>
<% }
catch(Exception e)
{
%>
<h1><%= e %> </h1>
<% }
%>
</body>
</html>

REGISTRATION SERVLET
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import emspack.UserCreation;
public class UserCreServ extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
methods.

VI BCA 87
event MANAGEMENT SYSTEM

* @param request servlet request


* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet UserCreServ</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet UserCreServ at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on
the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/

VI BCA 88
event MANAGEMENT SYSTEM

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
PrintWriter out = response.getWriter();
String s1=request.getParameter("T1");
String s2=request.getParameter("T2");
String s3=request.getParameter("T3");
String s4=request.getParameter("T4");
String s5=request.getParameter("T5");
double s6=Double.parseDouble(request.getParameter("T6"));
String s7=request.getParameter("T7");
UserCreation ua=new UserCreation();
ua.userCreation(s1, s2, s3, s4, s5,s6,s7);
String eid=ua.getEmpId();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet UserCreServ</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>EMPLOYEE ID: " + eid + "</h1><br>");
out.println("</body>");
out.println("</html>");
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)

VI BCA 89
event MANAGEMENT SYSTEM

throws ServletException, IOException {


processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
REGISTRATION BEAN
package emspack;
import java.sql.*;
public class UserCreation {
Connection con = null;
Statement st = null;
Statement st1 = null;
ResultSet rs = null;
int id=0;
String eid = "";
public void userCreation(String name, String gender, String email, String addr,String
phno , double sal, String jobcat)
{

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:sspemsdsn","scott","tiger");
st = con.createStatement();
rs=st.executeQuery("select sspempidseq.nextval from dual");
while(rs.next())

VI BCA 90
event MANAGEMENT SYSTEM

{
id=Integer.parseInt(rs.getString(1));
}
eid = "SSPEMP" + id;
st1 = con.createStatement();
st1.executeUpdate("insert into emsemployee values('" + eid + "','" + name + "','"
+ gender + "','" + email + "','" + addr + "','" + phno + "'," + sal + ",'" + jobcat +
"','AVAILABLE')");
}
catch(Exception e)
{
System.out.println(e);
}
}
public String getEmpId()
{
return(eid);
}
}

VI BCA 91
event MANAGEMENT SYSTEM

PASSWORD BEAN
package emspack;
import java.util.Random;
public class PasswordBean {
public String genPwd()
{
String
alphanumerals="ABCDEFGHIJKLMNOPQRSTRUVWXYZabcdefghijklmnopqrstuvwxyz0
123456789";
Random r=new Random();
String pwd="";
for(int i=0;i<8;i++)
{
pwd+=alphanumerals.charAt(r.nextInt(61));
}
return(pwd);
}
}
EVENT CART BEAN
package emspack;
import java.util.Hashtable;
import java.util.Enumeration;
public class EventCart {
protected Hashtable decoration = new Hashtable();
protected Hashtable music = new Hashtable();
protected Hashtable photo = new Hashtable();
protected Hashtable makeup = new Hashtable();
protected Hashtable funiture = new Hashtable();
protected Hashtable catering = new Hashtable();

//HASHTABLE FOR CARTERING

VI BCA 92
event MANAGEMENT SYSTEM

public void addItemCatering( String itemname, int rate,int numunits) {


if(numunits > 0){
String[] item = {itemname, Integer.toString(rate),Integer.toString(numunits)};
catering.put(itemname, item);
}
}
public void removeItemCatering(String itemId) {
if (catering.containsKey(itemId))
{
catering.remove(itemId);
}
}
public void deductItemCatering(String itemname, int qty)
{
Enumeration e = catering.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
if(itemname.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[2]);
if(qty >= units)
removeItemCatering(itemname);
else
{
//id = tmpItem[0];
name=tmpItem[0];
price=Integer.parseInt(tmpItem[1]);

VI BCA 93
event MANAGEMENT SYSTEM

units = units - qty;

removeItemCatering(itemname);
addItemCatering(name,price,units);
}
break;
}
}
}
public void updateQuantityCatering(String itemId, int quantity) {
if (catering.contains(itemId)) {
String[] tmpItem = (String[])catering.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}
public Enumeration getEnumerationCatering() {
return catering.elements();
}
public float getCostCatering() {
Enumeration e = catering.elements();
String[] tmpItem;
int totalCost = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
totalCost += Integer.parseInt(tmpItem[1]) * Integer.parseInt(tmpItem[2]);
}
return totalCost;
}
public int getNumOfItemsCatering() {
Enumeration e = catering.elements();
int num = 0;

VI BCA 94
event MANAGEMENT SYSTEM

while (e.hasMoreElements()) {
num++;
}
return num;
}
//HASHTABLE FOR FURNITURE CART
public void addItemFurniture(String itemid, String itemname, int rate,int numunits) {
if(numunits > 0){
String[] item = {itemid,itemname, Integer.toString(rate),Integer.toString(numunits)};
funiture.put(itemid, item);
}
}
public void removeItemFurniture(String itemId) {
if (funiture.containsKey(itemId))
{
funiture.remove(itemId);
}
}
public void deductItemFurniture(String itemid, int qty)
{
Enumeration e = funiture.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
if(itemid.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[3]);
if(qty >= units)

VI BCA 95
event MANAGEMENT SYSTEM

removeItemFurniture(itemid);
else
{
id = tmpItem[0];
name=tmpItem[1];
price=Integer.parseInt(tmpItem[2]);
units = units - qty;
removeItemFurniture(itemid);
addItemFurniture(id,name,price,units);
}
break;
}
}
}
public void updateQuantityFruniture(String itemId, int quantity) {
if (funiture.contains(itemId)) {
String[] tmpItem = (String[])funiture.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}
public Enumeration getEnumerationFurniture() {
return funiture.elements();
}
public float getCostFurniture() {
Enumeration e = funiture.elements();
String[] tmpItem;
int totalCostf = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
totalCostf += Integer.parseInt(tmpItem[1]) * Integer.parseInt(tmpItem[2]);
}
return totalCostf;

VI BCA 96
event MANAGEMENT SYSTEM

}
public int getNumOfItemsFurniture() {
Enumeration e = funiture.elements();
//String[] tmpItem;
int numf = 0;
while (e.hasMoreElements()) {
numf++;
}
return numf;
}
//HASHTABLE FOR PHOTO/VIDEO CART
public void addItemPhoto( String itemname, int rate,int numunits) {
if(numunits > 0){
String[] item = {itemname, Integer.toString(rate),Integer.toString(numunits)};
photo.put(itemname, item);
}
}
public void removeItemPhoto(String itemname) {
if (photo.containsKey(itemname))
{
photo.remove(itemname);
}
}
public void deductItemPhoto(String itemname, int qty)
{
Enumeration e = photo.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;
while (e.hasMoreElements())
{

VI BCA 97
event MANAGEMENT SYSTEM

tmpItem = (String[])e.nextElement();
if(itemname.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[2]);
if(qty >= units)
removeItemPhoto(itemname);
else
{
name=tmpItem[0];
price=Integer.parseInt(tmpItem[1]);
units = units - qty;
removeItemPhoto(itemname);
addItemPhoto(name,price,units);
}
break;
}
}
}
public void updateQuantityPhoto(String itemId, int quantity) {
if (photo.contains(itemId)) {
String[] tmpItem = (String[])photo.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}
public Enumeration getEnumerationPhoto() {
return photo.elements();
}
public float getCostPhoto() {
Enumeration e = photo.elements();
String[] tmpItem;
int totalCostp = 0;
while (e.hasMoreElements())
{

VI BCA 98
event MANAGEMENT SYSTEM

tmpItem = (String[])e.nextElement();
totalCostp += Integer.parseInt(tmpItem[1]) * Integer.parseInt(tmpItem[2]);
}
return totalCostp;
}
public int getNumOfItemsPhoto() {
Enumeration e = photo.elements();
int nump = 0;
while (e.hasMoreElements()) {
nump++;
}
return nump;
}
//HASHTABLE FOR DECORATION CART
public void addItemDecoration(String itemtype, String itemname, int rate, int qty) {
String[] item = {itemtype,itemname, Integer.toString(rate),Integer.toString(qty)};
decoration.put(itemtype, item);
}
public void removeItemDecoration(String itemname)
{
if (decoration.containsKey(itemname))
{
decoration.remove(itemname);
}
}
/*public void deductItemDecoration(String itemname, int qty)
{
Enumeration e = decoration.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;

VI BCA 99
event MANAGEMENT SYSTEM

while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
if(itemname.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[2]);
if(qty >= units)
removeItemDecoration(itemname);
else
{
name=tmpItem[0];
price=Integer.parseInt(tmpItem[1]);
units = units - qty;
removeItemDecoration(itemname);
addItemDecoration(name,price,units);
}
break;
}
}
}*/
/*public void updateQuantityDecoration(String itemId, int quantity) {
if (decoration.contains(itemId)) {
String[] tmpItem = (String[])decoration.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}*/
public Enumeration getEnumerationDecoration() {
return decoration.elements();
}
public float getCostDecoration() {
Enumeration e = decoration.elements();
String[] tmpItem;
int totalCostd = 0;

VI BCA 100
event MANAGEMENT SYSTEM

while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
totalCostd += (Integer.parseInt(tmpItem[2]) * Integer.parseInt(tmpItem[3]));
}
return totalCostd;
}
public int getNumOfItemsDecoration() {
Enumeration e = decoration.elements();
int numd = 0;
while (e.hasMoreElements()) {
numd++;
}
return numd;
}
//HASHTABLE FOR MUSIC CART
public void addItemMusic(String itemname, int rate) {
String[] item = {itemname, Integer.toString(rate)};
music.put(itemname, item);
}
public void removeItemMusic(String itemname) {
Enumeration e = music.elements();
while (e.hasMoreElements())
{
if (music.containsKey(itemname))
{
music.remove(itemname);
break;
}
}
}
/*public void deductItemDecoration(String itemname, int qty)
{

VI BCA 101
event MANAGEMENT SYSTEM

Enumeration e = decoration.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
if(itemname.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[2]);
if(qty >= units)
removeItemDecoration(itemname);
else
{
name=tmpItem[0];
price=Integer.parseInt(tmpItem[1]);
units = units - qty;

removeItemDecoration(itemname);
addItemDecoration(name,price,units);
}
break;
}
}
}*/
/*public void updateQuantityDecoration(String itemId, int quantity) {
if (decoration.contains(itemId)) {
String[] tmpItem = (String[])decoration.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}*/

VI BCA 102
event MANAGEMENT SYSTEM

public Enumeration getEnumerationMusic() {


return music.elements();
}
public float getCostMusic() {
Enumeration e = music.elements();
String[] tmpItem;
int totalCostm = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
totalCostm += Integer.parseInt(tmpItem[1]);
}
return totalCostm;
}
public int getNumOfItemsMusic() {
Enumeration e = music.elements();
int numm = 0;
while (e.hasMoreElements()) {
numm++;
}
return numm;
}
//HASHTABLE FOR MAKE-UP CART
public void addItemMakeup(String itemname, int qty, int rate) {
if(qty > 0){
String[] item = {itemname, Integer.toString(qty), Integer.toString(rate)};
makeup.put(itemname, item);
}
}
public void removeItemMakeup(String itemname) {
if (makeup.containsKey(itemname))
{

VI BCA 103
event MANAGEMENT SYSTEM

makeup.remove(itemname);
}
}
public void deductItemMakeup(String itemname, int qty)
{
Enumeration e = makeup.elements();
String[] tmpItem;
String id="";
String name="";
int price=0;
int units = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
if(itemname.equals(tmpItem[0]))
{
units = Integer.parseInt(tmpItem[1]);
if(qty >= units)
removeItemMakeup(itemname);
else
{
name=tmpItem[0];
price=Integer.parseInt(tmpItem[2]);
units = units - qty;

removeItemMakeup(itemname);
addItemMakeup(name, units, price);
}
break;
}
}
}
/*public void updateQuantityDecoration(String itemId, int quantity) {

VI BCA 104
event MANAGEMENT SYSTEM

if (decoration.contains(itemId)) {
String[] tmpItem = (String[])decoration.get(itemId);
tmpItem[3] = Integer.toString(quantity);
}
}*/
public Enumeration getEnumerationMakeup() {
return makeup.elements();
}
public float getCostMakeup() {
Enumeration e = makeup.elements();
String[] tmpItem;
int totalCostma = 0;
while (e.hasMoreElements())
{
tmpItem = (String[])e.nextElement();
totalCostma += Integer.parseInt(tmpItem[1]) * Integer.parseInt(tmpItem[2]);
}
return totalCostma;
}
public int getNumOfItemsMakeup() {
Enumeration e = makeup.elements();
int numma = 0;
while (e.hasMoreElements()) {
numma++;
}
return numma;
}
}

VI BCA 105
event MANAGEMENT SYSTEM

VI BCA 106
event MANAGEMENT SYSTEM

10. CONCLUSION AND FUTURE ENHANCEMENTS

CONCLUSION:

This web application is easy to use and user-friendly software. End-users are
expected to have some experience in using windows applications and browsing
the Internet. Event booking can be done through web is a very useful module in
this application. Clients can get appropriate information with less efforts and
time.

FUTURE ENHANCEMENTS:

 Booking can be made through mobile phones.


 Auditors can be involved for advising corporates.
 User involvement can be increased.
Etc.,

VI BCA 107
event MANAGEMENT SYSTEM

VI BCA 108
event MANAGEMENT SYSTEM

11. BIBLIOGRAPHY

1) Books Referred:

 Software Engineering by Roger Pressman


 Beginning JSP – Wrox Publication
 Database Systems by Abraham Silberschatz
 Oracle 10g by Gary Cornell and Horstman.

2) Websites referred:

 www.google.com
 www.w3schools.com/html
 www.htmlcodetutorial.com/
 http://en.wikipedia.org

VI BCA 109

You might also like