A Sample ReportWriter Component Case Study
Now that we have recapitulated the principles that we need to
keep in mind while designing any component, let us venture to
design such a component. For example, let us think that we need
to develop a Reporting component. This component in short needs
to support the following features:
- It
will accept the criteria for producing any report.
-
Against a set of valid criteria, it will fetch the data from a
data source and produce the report in a desired format.
I would at this point try to avoid any detailed discussion of
any other possible features that the ReportWriter component
might provide.
Business Type Model
With these features in mind, we can develop a sample Business
Type Model (BTM) for our ReportWriter component. This sample BTM
is presented in Figure 1.
Figure 1: The Business Type Model for the ReportWriter
component
This BTM shows the different components acting together to
produce the report. The Client component makes a report request to the
RequestHandler component. The RequestHandler component then makes a call to the
ReportWriter component supplying the report parameters to it. The ReportWriter
component then makes use of DAO component to obtain the data from a specific
data source, produces the report and hands it over to the RequestHandler
component to send it back to the appropriate client.
Designing the Classes
Once we have the BTM with us, it is time to get into the
real class structure. Deciding on the class structure is often an iterative
process. The initial design may get affected with slight requirement change or
changes in the existing components that the component in question is going to
use. In this context, the challenge is to come up with a design, which is
flexible enough to accommodate such changes.
Well then, lets proceed with designing the classes for our
ReportWriter component. First of all, let us consider the entry point to the
ReportWriter component. A Client makes a request to the ReportWriter. We need a
mechanism to handle this request. If you are developing a web-based
application, this request will typically be over HTTP. So, we need to have a
mechanism to handle the HTTP requests. In Java world, this is handled by using
a Servlet.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.