Drag & drop | Framework | Java classes | JavaScript namespaces | JavaServer faces templates

Open Oracle

Oracle is a strong supporter of numerous Open Source initiatives. Whenever possible Mizar builds on Open Source foundations, especially when they are actively supported by Oracle. Mizar has built a large library of open source Java and JavaScript classes to integrate JavaServer Faces for both the open source MyFaces Trinidad JSF implementation and Oracle's own ADF Rich Client. The Java classes binding the JSF view layer to the Oracle database are built using Java Persistence Architecture (JPA) beans using Eclipselink an open source JPA Provider. Both MyFaces Trinidad and Eclipselink are strongly supported by Oracle.

Mizar's Technology Assets

Mizar's primary technology asset is the Mizar Framework, which provides an open source framework that integrates Oracle's latest Web, Database, and Spatial technologies. Exclusive of copyright notices the Mizar Library is made up of more than 117,000 lines (3.5 million characters) of Java, JavaScript and JavaServer Faces code and represents the work of four highly experienced developers over a six year period, which we conservatively estimate at 10 to 15 man years of dedicated effort.


Oracle's newest Fusion 11g technology combines their core RDBMS with Oracle WebLogic Server using a powerful JavaServer Faces component library called Oracle ADF Rich Client Faces, which extends the Oracle sponsored open source MyFaces – Trinidad project.

Why not just Drag & Drop?

Oracle strongly promotes their Drag & Drop technology and for good reason. The Drag & Drop paradigm is targeted at the non-programmer typical of many Oracle installations. The oft-echoed sound bite is that Drag & Drop technologies make it possible for non-programmers to create advanced applications. And this is true; Oracle's newest Drag & Drop tools are amazingly productive at creating relatively simple one-off applications. But Oracle's Drag & Drop tools suffer the same limitations that Microsoft's and other's do: they are devilishly difficult to maintain and upgrade and they lock the system into the Oracle development metaphor. Advanced demonstrations come packaged with specific ADF release libraries, because they will only work properly with one specific release. If the goal is to create attractive, quick, one-off applications – which is true of a large number of applications – then Drag & Drop is an appropriate technology. We've used it ourselves when this is the case.


Drag & Drop technologies are designed to provide non-programmers with easy-to-use tools but insiders (including Drag & Drop developers) know that they limit reusability and long term extensibility because they are difficult to maintain and upgrade. It has been admitted that "if you've got good Java programming skills you'd program in Java rather than Drag & Drop".

Back To Top

The Mizar Framework

The Mizar Framework is an integrated set of Java, JavaServer Faces (JSPX), and JavaScript files.
The Framework is highly modularized and has grown over six years, four major technology changes, and dozens of beta releases of Oracle and Open Source libraries. We know the Mizar Library is maintainable and extensible because we've seen it through numerous changes in both Oracle and Open Source technologies:

  • Oracle RDBMS 9i, 10g, and 11g
  • Oracle Application Server 10g, OAS 11g Beta, and Oracle 11g WebLogic Server
  • Oracle Toplink to the open source EclipseLink
  • Oracle MapViewer 10g through to Oracle Maps 11g.

Although the Framework includes over 117,000 lines of code it is highly compact and represents an even larger code base than might be first thought. Leveraging the Object Oriented power of Java abstract classes and interfaces the same code is used by dozens or hundreds of inheriting classes. As an example, the code required to create a spatial filter – by polygon, circle, or point – for every application and for every spatial database table type is handled by declaring the specific database Java bean to extend the Mizar Framework GeometryBean and the associated JavaServer Faces Table class to extend TrinidadSpatialTable. Not only is spatial filtering enabled but hundreds of spatially relevant behaviors are inherited automatically.



The deep generalization and abstraction used by the Mizar Framework means that custom applications require as little as 15% customization and most of that is associated with client specific Java Beans. (A Java Bean is a Java language representation of a database row.) Applications can be prototyped rapidly and the custom development effort quickly focuses on the unique aspects of the project.

Library Packages

The Mizar Framework can be described in four major package families supporting an application and each with distinct and hierarchical dependencies.


Back To Top

MizarCommon

The MizarCommon collection includes all Java classes that are free of any other package dependencies. These classes can be used in any Java application and do not depend on JPA or Faces or a Java EE platform.

  • Annotations: Classes for added Java Annotations, primarily used to associated labels and layout metadata with JPA Java Beans.
  • Collections: Extensions and utilities for various List and Map collections.
  • Lang: Extensions to standard java.lang classes.
  • Credentials: Interfaces to expose Security classes.
  • Forms: Classes to implement Forms Annotations. Forms Annotations are added to JPA Java Bean to provide information to generic forms generators, spread sheets, and report writers to facilitate layout and labeling.
  • Geodesy: Classes to measure distances and areas in geographic space (latitude-longitude) and to perform simple translations between geographic and UTM coordinate space.
  • Geometry: Classes to handle geometries for points, polylines, and polygons including intersection, distance and area functions.
  • GraphTheory: Classes include Graph, Edge, Node, and Face which enable route tracing and topology building. These methods are also used to facilitate data conflation and reduction algorithms.
  • Statistics: A simple class to provide min, max, average, and standard deviation for numeric data found in Collections (Lists & Maps)
  • USAddress: A powerful class that will parse 98% or more of user input addresses into standard USPS form as defined by USPS Publication 28. The library has been used to convert existing databases and interactive user input to standardized formats.

Back To Top

MizarPersistence

The Persistence packages provide a bridge between Java and a Relational Database using either JDBC or JPA connections. Classes supporting JDBC support both direct and managed (Java EE) connection. The MizarPersistence packages depend on MizarCommon alone and can be run in either a Java EE middle-tier environment or with Java SE as a Swing or Command-line application.

  • mapviewer.provider: Classes to extend Oracle's MapViewer to permit display of data not already in Oracle Spatial format.
  • jdbc,convert : Classes to convert Oracle (and Postgres) data to and from ESRI Shape Files.
  • jdbc.metadata: Classes to access JDBC metadata used to perform generic operations on any database table and to support database metadata editing.
  • jdbc.utils: Classes to provide basic connection operations and operations on spatial data.
  • jpa.beans: JPA Java Beans for Oracle metadata views and abstract GenericBean and GeometryBean classes extended by all Mizar Framework application Java Beans.
  • jpa.convert: JPA versions of beans to read and write ESRI Shape Files. These only work for Oracle at this time.
  • jpa.customizers: Classes called by JPA internals to perform custom operations. We have used these to enable the libraries to transparently work on both WebLogic and Oracle Application Server.
  • jpa.facade: A JPA facade is a class that performs database operations using JPA Beans. This package provides all the direct interaction with the database and is used by all other classes to select, update, insert, or delete database records. The package also includes abstract classes for the QueryBuilder which is available to all application tables. The Query builder system provides a Faces popup that automatically presents value, range, or select list choices customized for integer, floating point, string or date data to the user with optional spatial filtering to build data sets. The jpa.facade level of these classes is independent of Faces and can be used in any Java application.
  • jpa.utils: Includes classes for geometry operations including re-projection, geometry operations, conversion to and from Well Known Text (WKT).
  • MizarMetadata: an associated set of packages include JPA Java Beans to access metadata for internal Oracle Spatial and MapViewer objects. These classes include functionality to automatically parse and render Oracle Spatial XML data.
  • MizarAddressing: an associated set of packages that include JPA Java Beans and utilities for US Street addressing, routing, and geocoding. Classes support the Mizar Street model, NAVTEQ and MAF/TIGER Edges data.
  • MizarCensus: an associated set of packages that include JPA Java Beans for MAF/TIGER and U.S.Census data (summary files 1, 2, 3, & 4).

Back To Top

MizarFaces

The MizarFaces packages require both MizarCommon and MizarPersistence and bind these to JavaServer Faces.

  • Constants: Classes that can be set using JSF faces-config.xml metadata files for both Session and Application scoped properties. This allows us to customize most applications using XML configuration files rather than having to modify Java code.
  • PhaseListener: The server side of JavaServer Faces communicates with the client sessions through Phase Listeners. These classes enable Ajax operations within the context of the normal JSF Life Cycle. This is the case when AJAX operations must read or update data displayed on the Faces page.
  • AJAX: Where an AJAX operation does not require access to the JSF session context a stand-alone AJAX Servlet is used. This is often the case when operations are restricted to a Map, such as location, distance, and area calculators.
  • MizarTrindad: is an associated set of packages that extend MizarFaces to be aware of MyFaces Trinidad. Trinidad was donated to the Apache MyFaces organization by Oracle and is largely supported by Oracle. Trinidad provides the foundation for Oracle's ADF Rich Client Faces.
    • TrinidadCollections: This is the core of the Mizar Framework paradigm. TrinidadCollection extends JPAFacade providing display functionality for Faces. A TrinidadCollection manages a set of TrinidadRows. A TrinidadRow extends a JPA JavaBean (GenericBean) providing Faces awareness. TrinidadCollections are extended by TrinidadTable, and TrinidadTree which may in turn be extended by TrinidadSpatialTable and TrinidadSpatialTree. These classes provide a wide range of standard and configurable behaviors tying together multiple tables and maps in a common unified User Interface experience.
  • MizarADFRichFaces: is a very small set of classes that extend MizarTrinidad to handle features that are unique to Oracle's ADF Rich Client Faces. The vast majority of the Mizar Framework functionality is focused on MyFaces Trinidad and Oracle ADF Rich Client Faces is considered a special implementation. This permits the Framework to work with a MyFaces implementation, which might deploy databases other than Oracle enabling the development of virtually identical applications in a completely Free Open Source environment.

Back To Top

MizarSecurity

The MizarSecurity packages provide a powerful middle-tier user authentication system that supports an LDAP type credential paradigm. Users are granted Permissions, which applications can be programmed against. The same application can be used by Guests, Reviewers, Editors, and Administrators and will dynamically change depending on the user's permissions. Complex sets of permissions can be bundled into Roles or Groups. Roles are sets of Permissions; Groups are sets of Roles and Permissions. Groups are often organized in association with spatial areas. Thus someone might have Edit permissions within their own County but not in other counties.

  • Administrator: The Mizar Framework includes a powerful interactive Credential Administrator application that can be branded with the client's logo and banners. The Administrator application permits editing of Users, Roles, Group, Permissions, and extended User Properties. Additional utility functionality is included to manage Oracle MapViewer instances.

Source Code Assets

Source assets are organized as Java code, JavaScript Code, and JavaServer Faces Templates.


Back To Top

Java Classes

Java is the standard enterprise language for Oracle applications, both in the database and the middle-tier. Oracle has been a major contributor to Java for over a decade; they acquired Java with the 2010 Sun Microsystems acquisition; and have made substantial commitments to the language since the acquisition. Java has a long future for the Oracle, Open Source, and other development communities.

Back To Top

JavaScript Namespaces

JavaScript is a web-browser supported client side programming language that resembles Java. JavaScript has taken on a new life as the supporting architecture for the client side of JavaServer Pages and Ajax technologies.

Back To Top

JavaServer Faces Templates

Oracle, and most of the software world, has undergone a revolution as the first phase of web application techniques have been replaced by a much stronger and more professional second generation tools. The first generation of solutions was built with the crudest of tools. Tools evolved from basic J2EE Servlets and JavaServer Pages (JSP) to Struts frameworks. All of these involved considerable plumbing and resulted in code that as difficult to maintain and extend as it was to write in the first place.

Conceived in 2001 the first release of JavaServer Faces appeared in 2003, initially released as Java Specification Request 127 (JSR-127) which states one of its goals is to "… establish a standard API for creating Java Web application GUIs, which will eliminate the burden of creating and writing GUI infrastructure for developers." JSF is about user interfaces in the traditional sense; buttons, text fields, check boxes, sliders, menu bars, pop-ups, calendars, color pickers, and many many more. JSF accomplishes this without the need for the HTML markup code typical of the first decade of web development. JSF is about readable and maintainable code that will enable the creation of substantially larger, more complex applications that just happen to be web distributed.

Oracle has an excellent white paper on this topic found at http://www.oracle.com/technology/products/jdev/collateral/4gl/papers/JSF_For_4gl.pdf

Oracle's considerable commitment to JSF and their willingness to donate their work to the Open Source communities is such that their latest JSF tag library, ADF Rich Faces, will form the foundation of Oracle Forms and Reports. And, even Oracle technical staff admit that the power of this foundation system put together with JDeveloper will rival and supersede anything that can be created with the declarative tools such as Oracle Forms.

JavaServer Faces is a Java Enterprise Edition component (JSR 314). Mizar has created a number of standardized templates that bind to the JavaScript and Java classes. These templates are simply added to an application to enable a wide range of behaviors; from establishing spatial search criteria to displaying lists of displayable Layers (Themes).

Back To Top