Welcome!

Java IoT Authors: Carmen Gonzalez, Elizabeth White, Yeshim Deniz, Liz McMillan, Jnan Dash

Related Topics: Java IoT, Eclipse

Java IoT: Product Review

Reporting Solutions Using Crystal Reports for Eclipse

Modeled for ease of use, with an intuitive report design and toolset

SAP (Business Objects) has recently released Crystal Reports for Eclipse version 2.0 to provide reporting solutions for Java-based applications. This is available as free to use (within an organization) and has the advantage that it is built on the most tested and reliable component (Java Reporting Component in Crystal Reports) that has been in market for quite a few years now. This article discusses the features of CR4Ev2.0, usability of its designer and API, and starting off with an overview of Crystal Reports product architecture.

Crystal Reports - Product Overview
Crystal Reports is delivered in three editions with features added upon with each edition and its core feature diagrammatically depicted in Figure 1.

Crystal Reports Developer and Server editions have SDKs for Report Integration that aid in report viewing, printing and exporting in applications, customizable report viewers and report creation APIs. In case of Developer editions, the report processing resides within application and in Server editions it can be offloaded to a Reporting Server.

There are two sets of SDKs available for each of SAP (Business Objects) supported technology platforms (Java and .NET) and for Java these are namely:

  • Java Reporting Component (JRC): This is used to perform report processing within application.
  • Report Application Server SDK (RAS SDK): This is used to work with Report Application Server where report processing is done on the server and Java application uses RAS SDK for communication with the server.

JRC shares many classes with the RAS SDK, and the JRC-specific classes are thin wrappers around RAS classes.

CR4E vs JRC
JRC was introduced in Crystal Reports 9 and is a reliable component in Crystal Reports product. Crystal Reports have refined this component and bundled it as a separate package known as CR4E, which contains Crystal Reports for Java (CRJ) and Crystal Reports Designer components. The designer component is available as a plug-in to Eclipse and is used for designing and previewing reports. The Crystal Reports for Java component is used for the runtime generation of reports within Java applications.

RAS SDK is the client component for the RAS server-client reporting solution, where the SDK communicates with the RAS server for report processing. With the CRJ SDK, the same classes as that of RAS SDK are used but report processing requests are sent to an in-process Java Report Engine.

A great enhancement of CRJ over JRC is the introduction of RAS-type report creation and modification capabilities. With the CRJ, it's possible to programmatically modify a report on-the-fly: create new fields, introduce new data connections and tables, modify images, add lines and boxes, etc. Anything that can be done to a report using the CR4E embedded designer can also be done programmatically using CRJ as the designer uses the same SDK.

Few points in comparison between CR4E and JRC are jotted in Table 1.

Features of CR4E
Already, few features of CR4E are exposed through its comparison with the JRC above, the following makes the list complete:

  1. Ability to integrate reporting into Java-based web or desktop applications.
  2. Provides SDK that enables report creation and modification within Java code.
  3. Helps Java developer switch on to the Report designer role easily in reporting projects.
  4. POJO can also be used as a data source for reports.
  5. Accesses all major databases from within Eclipse IDE as report template data source.
  6. Supports for all major operating systems and browsers.
  7. Comes with extension SDKs to extend and enhance the default Eclipse editor.
  8. Use of Eclipse Update Manager to check and install updates automatically.

Aspects of CR4E Designer
CR4Ev2.0 is provided as a plug-in for Eclipse IDE and works for an Eclipse version greater than 3.4.1. Figure 2 captures the commonly used aspects in the designer and same is detailed further.

Layout tab: Layout tab is the designer view and has the palette with all reporting controls. The controls from palette can be dragged & dropped onto the designer area at the required position.

Preview tab: Preview tab is used to preview the report designed in layout view and the report can also be directly edited in this view. The data source for the report is changed using the ‘Set Datasource Location' menu item under ‘Crystal Reports'.

Datasource Explorer wizard: This wizard is used to create a connection profile for the datasource used in the reports. The CR4E supports relational databases, flat file, web services, XML and POJO as datasources.  Once the connection profile is created, the required objects in datasource can be dragged & dropped onto the data view (tab).

Field Explorer wizard: This wizard displays the database objects in the data pane for use in the report. Also, parameters and formulas are created using this view and then placed on to the report layout.

Usage of CR4E APIs
After creating report templates using CR4E designer, the common reporting need is to generate reports dynamically from report templates based on the parameters passed to it. This scenario is walked through below to demonstrate the use of CR4E APIs for generating reports from a standalone Java application (see Figure 3).

The use of CR4E API programmatically in each of this task is explained below:

1)      Initiate
Report processing is done by Crystal Report Java component (and not by Report Application Server) and this component is initiated as below:

ReportClientDocument boReportClientDocument = new ReportClientDocument();
boReportClientDocument.setReportAppServer (ReportClientDocument.inprocConnectionString);

2)      Load
Next task is loading the report template for report generation as below:

boReportClientDocument.open("SampleReport.rpt", OpenReportOptions._openAsReadOnly);

3)      Read

This task is a two-step process; one is to set the connection information for datasource and next is to set the values for input parameters in the report.

a)   Set connection information: In most cases, the datasource configured in report template during report design will not be the same one used by the report generation application. So, the datasource connection information for the report template needs to be replaced thro' the following lines of code:

dbController.replaceConnection(oldConnectionInfo, newConnectionInfo, pFields, replaceParams);

dbController - DatabaseController object that is retrieved from ReportClientDocument object for managing database connections

oldConnectionInfo - ConnectionInfo object that is retrieved from  DatabaseController object and contains details of existing datasource such as database URL, Server Type, username, password etc.

newConnectionInfo - New ConnectionInfo object that is constructed to replace oldConnectionInfo object

b)   Set input parameters: Data displayed on the report is restricted based on the parameter values supplied to the report, same is programmatically done below:

ParameterFieldController parameterFieldController =
boReportClientDocument.getDataDefController().getParameterFieldController();
parameterFieldController.setCurrentValue("","a","123");

4)   Export
The final step is to export the generated report in required format as in lines of code below:

PrintOutputController printOutputController =
boReportClientDocument.getPrintOutputController();
ByteArrayInputStream byteIS =    (ByteArrayInputStream) printOutputController.export(ReportExportFormat.PDF);

The report stream can be written to a file etc. as needed.

An important point to note during development using CR4E is that it contains both JRC and CRJ APIs and both the APIs have most classes with same name so import statement is critical in determining which APIs are used.  To use CRJ, import classes under package name:

com.crystaldecisions.sdk.occa.report.application and for JRC, package name is com.crystaldecisions.reports.sdk

Conclusion
The design and development of reporting solution using CR4E is done using the designer plug-in for Eclipse and Crystal Reports for Java components that are enhanced from reliable Java Reporting Component of Crystal Reports. Modeled with ease of use, intuitive report design and toolset, simple licensing and support from SAP (Business Objects) helps CR4E to be considered as a reporting solution for Java projects.

Reference

More Stories By Ravi M

M.Ravi is a Senior Technical Architect, specialized in providing architecture and design solutions on broad of spectrum of areas such as JEE, SOA, ESB, BI, CRM & SAS.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
dhamikd 03/14/10 10:12:00 AM EDT

Very much useful writing and very much explanative, where I was confused with JRC and Crystal Report for JAVA. Also the steps you have mentioned for loading and exporting a report was very much useful for me. Other than SAP site, Im seeing another useful write up. If possible, could you please clarify my doubt?
I want to load a report that was designed by Crystal Designer v10 and data source is Access / Excel (DAO) where ms access database has been used. Now I want to load the same report, but data source should be POJO. Could you please guide me how can i go for this. thanks.

@ThingsExpo Stories
IoT solutions exploit operational data generated by Internet-connected smart “things” for the purpose of gaining operational insight and producing “better outcomes” (for example, create new business models, eliminate unscheduled maintenance, etc.). The explosive proliferation of IoT solutions will result in an exponential growth in the volume of IoT data, precipitating significant Information Governance issues: who owns the IoT data, what are the rights/duties of IoT solutions adopters towards t...
WebRTC is the future of browser-to-browser communications, and continues to make inroads into the traditional, difficult, plug-in web communications world. The 6th WebRTC Summit continues our tradition of delivering the latest and greatest presentations within the world of WebRTC. Topics include voice calling, video chat, P2P file sharing, and use cases that have already leveraged the power and convenience of WebRTC.
Unsecured IoT devices were used to launch crippling DDOS attacks in October 2016, targeting services such as Twitter, Spotify, and GitHub. Subsequent testimony to Congress about potential attacks on office buildings, schools, and hospitals raised the possibility for the IoT to harm and even kill people. What should be done? Does the government need to intervene? This panel at @ThingExpo New York brings together leading IoT and security experts to discuss this very serious topic.
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, provided an overview of the evolution of the Internet and the Database and the future of their combination – the Blockchain. Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life sett...
20th Cloud Expo, taking place June 6-8, 2017, at the Javits Center in New York City, NY, will feature technical sessions from a rock star conference faculty and the leading industry players in the world. Cloud computing is now being embraced by a majority of enterprises of all sizes. Yesterday's debate about public vs. private has transformed into the reality of hybrid cloud: a recent survey shows that 74% of enterprises have a hybrid cloud strategy.
Whether your IoT service is connecting cars, homes, appliances, wearable, cameras or other devices, one question hangs in the balance – how do you actually make money from this service? The ability to turn your IoT service into profit requires the ability to create a monetization strategy that is flexible, scalable and working for you in real-time. It must be a transparent, smoothly implemented strategy that all stakeholders – from customers to the board – will be able to understand and comprehe...
An IoT product’s log files speak volumes about what’s happening with your products in the field, pinpointing current and potential issues, and enabling you to predict failures and save millions of dollars in inventory. But until recently, no one knew how to listen. In his session at @ThingsExpo, Dan Gettens, Chief Research Officer at OnProcess, discussed recent research by Massachusetts Institute of Technology and OnProcess Technology, where MIT created a new, breakthrough analytics model for ...
DevOps is being widely accepted (if not fully adopted) as essential in enterprise IT. But as Enterprise DevOps gains maturity, expands scope, and increases velocity, the need for data-driven decisions across teams becomes more acute. DevOps teams in any modern business must wrangle the ‘digital exhaust’ from the delivery toolchain, "pervasive" and "cognitive" computing, APIs and services, mobile devices and applications, the Internet of Things, and now even blockchain. In this power panel at @...
More and more brands have jumped on the IoT bandwagon. We have an excess of wearables – activity trackers, smartwatches, smart glasses and sneakers, and more that track seemingly endless datapoints. However, most consumers have no idea what “IoT” means. Creating more wearables that track data shouldn't be the aim of brands; delivering meaningful, tangible relevance to their users should be. We're in a period in which the IoT pendulum is still swinging. Initially, it swung toward "smart for smar...
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo 2016 in New York. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place June 6-8, 2017, at the Javits Center in New York City, New York, is co-located with 20th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry p...
"We build IoT infrastructure products - when you have to integrate different devices, different systems and cloud you have to build an application to do that but we eliminate the need to build an application. Our products can integrate any device, any system, any cloud regardless of protocol," explained Peter Jung, Chief Product Officer at Pulzze Systems, in this SYS-CON.tv interview at @ThingsExpo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
Internet of @ThingsExpo has announced today that Chris Matthieu has been named tech chair of Internet of @ThingsExpo 2017 New York The 7th Internet of @ThingsExpo will take place on June 6-8, 2017, at the Javits Center in New York City, New York. Chris Matthieu is the co-founder and CTO of Octoblu, a revolutionary real-time IoT platform recently acquired by Citrix. Octoblu connects things, systems, people and clouds to a global mesh network allowing users to automate and control design flo...
In addition to all the benefits, IoT is also bringing new kind of customer experience challenges - cars that unlock themselves, thermostats turning houses into saunas and baby video monitors broadcasting over the internet. This list can only increase because while IoT services should be intuitive and simple to use, the delivery ecosystem is a myriad of potential problems as IoT explodes complexity. So finding a performance issue is like finding the proverbial needle in the haystack.
Data is the fuel that drives the machine learning algorithmic engines and ultimately provides the business value. In his session at 20th Cloud Expo, Ed Featherston, director/senior enterprise architect at Collaborative Consulting, will discuss the key considerations around quality, volume, timeliness, and pedigree that must be dealt with in order to properly fuel that engine.
According to Forrester Research, every business will become either a digital predator or digital prey by 2020. To avoid demise, organizations must rapidly create new sources of value in their end-to-end customer experiences. True digital predators also must break down information and process silos and extend digital transformation initiatives to empower employees with the digital resources needed to win, serve, and retain customers.
The WebRTC Summit New York, to be held June 6-8, 2017, at the Javits Center in New York City, NY, announces that its Call for Papers is now open. Topics include all aspects of improving IT delivery by eliminating waste through automated business models leveraging cloud technologies. WebRTC Summit is co-located with 20th International Cloud Expo and @ThingsExpo. WebRTC is the future of browser-to-browser communications, and continues to make inroads into the traditional, difficult, plug-in web co...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
The Internet of Things (IoT) promises to simplify and streamline our lives by automating routine tasks that distract us from our goals. This promise is based on the ubiquitous deployment of smart, connected devices that link everything from industrial control systems to automobiles to refrigerators. Unfortunately, comparatively few of the devices currently deployed have been developed with an eye toward security, and as the DDoS attacks of late October 2016 have demonstrated, this oversight can ...
What happens when the different parts of a vehicle become smarter than the vehicle itself? As we move toward the era of smart everything, hundreds of entities in a vehicle that communicate with each other, the vehicle and external systems create a need for identity orchestration so that all entities work as a conglomerate. Much like an orchestra without a conductor, without the ability to secure, control, and connect the link between a vehicle’s head unit, devices, and systems and to manage the ...
"Once customers get a year into their IoT deployments, they start to realize that they may have been shortsighted in the ways they built out their deployment and the key thing I see a lot of people looking at is - how can I take equipment data, pull it back in an IoT solution and show it in a dashboard," stated Dave McCarthy, Director of Products at Bsquare Corporation, in this SYS-CON.tv interview at @ThingsExpo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.