JRubik v0.6

JRubik v0.6

JRubik is a swing UI dor OLAP datasources.

See:
          Description

Packages
es.aeat.eett.jRubik  
es.aeat.eett.jRubik.plugins  
es.aeat.eett.jRubik.rubik  
es.aeat.eett.jRubik.rubik.cell  
es.aeat.eett.jRubik.rubik.confi  
es.aeat.eett.jRubik.rubik.util  
es.aeat.eett.jRubik.rubik.util.export  
es.aeat.eett.jRubik.rubik.util.tree  
es.aeat.eett.plugins.action_basicStat  
es.aeat.eett.plugins.action_clipboard  
es.aeat.eett.plugins.action_confiPdf  
es.aeat.eett.plugins.action_hssf  
es.aeat.eett.plugins.action_memoryShow  
es.aeat.eett.plugins.action_pdf  
es.aeat.eett.plugins.action_showChart  
es.aeat.eett.plugins.bar_about  
es.aeat.eett.plugins.bar_Component  
es.aeat.eett.plugins.bar_export  
es.aeat.eett.plugins.bar_Navi  
es.aeat.eett.plugins.barMenu_printer  
es.aeat.eett.plugins.base_pdf  
es.aeat.eett.plugins.base_xml  
es.aeat.eett.plugins.basicStat  
es.aeat.eett.plugins.basicStat.operation  
es.aeat.eett.plugins.chart  
es.aeat.eett.plugins.infoRubik.deploy  
es.aeat.eett.plugins.infoRubik.index.general_index  
es.aeat.eett.plugins.infoRubik.index.index_core  
es.aeat.eett.plugins.infoRubik.jobs.job_core  
es.aeat.eett.plugins.infoRubik.jobs.olap_jobs.chart_job  
es.aeat.eett.plugins.infoRubik.jobs.olap_jobs.map_job  
es.aeat.eett.plugins.infoRubik.jobs.olap_jobs.table_job  
es.aeat.eett.plugins.infoRubik.layout  
es.aeat.eett.plugins.infoRubik.reports  
es.aeat.eett.plugins.infoRubik.showInfo  
es.aeat.eett.plugins.map  
es.aeat.eett.plugins.mdx_Frame  
es.aeat.eett.plugins.mdxMenu_BarBookmark  
es.aeat.eett.plugins.mdxMenu_BarMenu  
es.aeat.eett.plugins.mdxMenu_Base  
es.aeat.eett.plugins.mdxMenu_ScrollBookmark  
es.aeat.eett.plugins.mdxMenu_ScrollMenu  
es.aeat.eett.plugins.pane_memory  
es.aeat.eett.plugins.scrollNavi  
es.aeat.eett.plugins.show_sum  
es.aeat.eett.plugins.tableDrillThrough  
es.aeat.eett.plugins.tableNavi  
es.aeat.eett.plugins.tableNavi.jpivot  
es.aeat.eett.plugins.tableNavi.table  
es.aeat.eett.plugins.tableNavi.tableRubik  
es.aeat.eett.plugins.tableNavi.tableRubik.components  
es.aeat.eett.plugins.tableNavi.tableRubik.listeners  
es.aeat.eett.plugins.tableNavi.tableRubik.renders  

 

JRubik is a swing UI dor OLAP datasources.

Architecture description

The application encapsulated and distributed using a simple plugin system.

The aplication main controller implements the PluginListener interface. It allows, to the plugins registered as listeners, to throw diferent request to the contrller defined in this interface. Rubik informs to all the registered objects that implement the RubikListener interface.

Plugins

The plugins must implement the Plugin interface. PluginImpl is an abstract class with basic implementation of this interface. This class is good starting point for build a new plugin, extending this class and writing the method:

public Object getPluginObject(PluginListener pluginListener) throws PluginException.

Plugin declaration

The plugins are stored in the directory: pathApp/resources/lib/plugins
For a plugin contained in this directory, in order to be a valid plugin the Manifest file contained in the plugin jar file must to have a section called RubikPlugin with the following attributes:

This is a sample Manifest file:

Name: RubikPlugin
PluginName: action_basicStat
PluginType: -1
PluginLocale: es.aeat.eett.plugins.action_basicStat.locale.LocalizationBundle
PluginBaseClass: es.aeat.eett.plugins.action_basicStat.Action_basicStat
PluginIcon: es/aeat/etss/plugins/mdxMenu_ScrollMenu/estadisticas_nav.gif

Plugin types

Nowadays there are 8 plugin types:

Message management on the StatusBar and on the Error window.

The application uses the log4j framework. The RubikAppender class (extends AppenderSkeleton) takes the "es.aeat.eett" category logger and changes the log level to .INFO level if the level is higher than INFO. It register him self as a listener for events of this category and propagates the received events using the'RubikAppenderListener' interface to all the regustered listeners.

By default, the application have to log points: the statusbar and the application controller.

If the controller receives a message with a priority level higher or equal to ERROR_INT it shows the error window with this message.

Statusbar

It registers as RubikAppender listener:

RubikAppender.getInstance().addRubikAppenderListener(this);

and as an olapModel listener:

Rubik.getInstance().getOlapModel().addModelChangeListener(this);

When the OlapModel sends a filter change event and obtains the query filter and if it isnīt empty is shown, In tother case it shows the ready message.

When the RubikAppender informs about this change:

  1. If sortMensage=StatusBar.READY it behaves as in the last case
  2. If sortMensage!=StatusBar.READY it shows a sortMessage)

Example: If we create the plugin org.xx.myPlugin, for showing messages on the statusbar and error window, we have to accomplish the following steps:
Category cat = Logger.getLogger("org.xx.myPlugin");
if(!Level.INFO.isGreaterOrEqual(cat.getEffectiveLevel()))
cat.setLevel(Level.INFO);
cat.addAppender(RubikAppender.getInstance());

Usage:
To show a message: logger.warn("Message text");
Waiting message: logger.inof("Waiting message text");
Error message: logger.error(...);

- Changes to the orginal package Jars:
Changes on the mondrian-x.x.jar: mondrian.util.Format added spanish support: Locale_SPANISH


JRubik v0.6

JRubik v0.6