Over a million developers have joined DZone.

Interview: Access Control Software on the NetBeans Platform

DZone 's Guide to

Interview: Access Control Software on the NetBeans Platform

· Java Zone ·
Free Resource
FERMAX is a Spanish family company with headquarters in Valencia, Spain. Founded in 1949, the company specializes in designing, manufacturing and commercializing Audio/Video Door Entry and Access Control Systems. At present, FERMAX enjoys a prominent position among the leading brands worldwide.

Below follows an interview with Oswaldo Rubio, a software developer in the FERMAX R & D department. Products related to access control require both maintenance, software installation and information management. Oswaldo's work is the development and maintenance of fingerprint analysis desktop software that connects to the fingerprinting hardware that FERMAX manufactures.
Hi Oswaldo, what are some typical problems relating to fingerprint analysis software?

The first involves the communication between the fingerprint reader and the computer. For this we use a protocol over RS-485 serial port, USB-serial converters, or even a converter RS-485 to TCP that we ourselves have made.

We use the communication library RXTX (http://users.frii.com/jarvi/rxtx/) for safety and stability. Communication with the fingerprint reader is done at 19200bps. The sensor stores in memory the fingerprint pattern for analysis and sends it to the access controller identifier, which is responsible for controlling access to the site.

Perhaps the most important problem, as usual, relates to timeouts due to the nature of the protocol. It is very dependent on the  transport by which the communication is made. Because the writing speed in the reader's memory is quite slow, we make use of concurrent instances of cancellable SwingWorkers for those writes in parallel buses.

To clarify further, fingerprint analysis is performed on the reader, storing in the database a copy of the footprints in BLOB format. Other services added to the software are the ability to lock or unlock a door, as the reader is connected to an electric lock device.

And how did you choose to use the NetBeans Platform as the basis of this software?

In 2006, we chose the NetBeans IDE as our programming environment for small applications based on the Swing Application Framework, although the amount of legacy software that we had still depended on IDEs like Borland Delphi 7 and Visual Studio.

It really was not until mid-2009 that we began to discover the features of the NetBeans Platform and that is where I found a solution for the large amount of legacy software that had been so far dispersed up until that point. A seminar in Madrid by ImaginaWorks and JavaHispano made me finally move the rest of our new developments to the NetBeans Platform.

What are the main reasons you chose it?

The first reason is modularity and bound to it the ability to split an application into different modules with the advantages that this implies for the maintenance and independence of the code. We can create very high-level applications by reusing modules already implemented in other applications.

The second reason is the update manager. It is a difficult task for us to control the versions that the client has installed, especially the installation and maintainance of stable and updated versions. Now we have our own update server on which we place the modules once they have been tested on the development server.

Let's now look at the application.

OK. Here are some screenshots:


In the application, we have four important custom modules. Firstly, "Fermax API", containing all the abstract classes and interfaces that are implemented by a pair of communication modules to the bus, "IP Decoder" and "Serial Port". In addition, there's the module "FingerPrint Protocol", containing all the business logic and protocols to communicate with readers, regardless of the transport layer we are using, such as serial port, TCP, and USB. The persistence of the data we manage through an Apache Derby database embedded within the project. As modules added in the last stage of development, we integrated a module to the security layer and another to manage multilanguage applications, regardless of regional location.

The intention with this modular architecture is that it enables our customers to extend these capabilities with other features related to their own needs, such as presence control and payroll control. Coming soon, these will be distributed and posted to all our customers, which will include new functionality that currently is still in the legacy software.

Some things that could be improved about the NetBeans Platform?

The documentation associated with the project system. Although I can find very good documentation in books like "The Definitive Guide to the NetBeans Platform" and websites like http://platform.netbeans.org/tutorials on Actions and Lookup, the documentation is not so clear regarding the interfaces ProjectFactory and Project.

Otherwise, I think the NetBeans Platform is a development environment that, although it has a somewhat slow learning curve, enables you to implement large projects in a reasonable period of time, once you have acquired the requisite knowledge.

Do you have some tips and tricks for other NetBeans Platform developers?

Something that worries me and generates many errors is the packaging of the application. To avoid such errors in adding the missing libraries, configuration files and other external resources, I always include this sequence in the file "build.xml" of the NetBeans Platform project:

    <target name="build-zip" depends="suite.build-zip">

            <echo message="${app.name}: update zip-distribution with the necessary things for the customer..." />

            <zip destfile="${dist.dir}/${app.name}.zip" update="true">

                <!-- <zipfileset dir="res/" includes="testigo.txt" prefix="${app.name}" />-->

                <zipfileset dir="res/language/platform11/" prefix="${app.name}/platform11" />

                <zipfileset dir="res/language/etc/" prefix="${app.name}/etc" />

                <zipfileset dir="res/language/ide12/" prefix="${app.name}/ide12" />

                <zipfileset dir="res/fermaxlectorhuella/fermaxlectorhuella/config/" prefix="${app.name}/fermaxlectorhuella/config/" />

                <zipfileset dir="res/fermaxlectorhuella/bin/" includes="rxtxSerial.dll" prefix="${app.name}/bin" />              



Another tip is to use PackJacket (http://packjacket.sourceforge.net/) when building the installable, i.e., PackJacket is a GUI frontend of the IzPack Project.

Thanks for the interview Oswaldo and all the best with future developments relating to your fingerprint analysis software!



Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}