dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #24307
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11889: Resource tables, using web api resource, removed action class variant
------------------------------------------------------------
revno: 11889
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2013-09-03 21:11:14 +0200
message:
Resource tables, using web api resource, removed action class variant
removed:
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable/
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable/GenerateResourceTableAction.java
modified:
dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/resourceTable.js
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2013-09-01 18:30:05 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2013-09-03 19:11:14 +0000
@@ -177,6 +177,7 @@
log.info( "Data element category option combo table generated" );
sqlViewService.createAllViewTables();
+ log.info( "Sql views created" );
}
// -------------------------------------------------------------------------
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java 2013-08-23 16:00:30 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java 2013-09-03 19:11:14 +0000
@@ -35,7 +35,10 @@
import org.hisp.dhis.api.utils.ContextUtils;
import org.hisp.dhis.resourcetable.scheduling.ResourceTableTask;
import org.hisp.dhis.scheduling.DataMartTask;
+import org.hisp.dhis.scheduling.TaskCategory;
+import org.hisp.dhis.scheduling.TaskId;
import org.hisp.dhis.system.scheduling.Scheduler;
+import org.hisp.dhis.user.CurrentUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
@@ -63,10 +66,17 @@
@Autowired
private Scheduler scheduler;
+ @Autowired
+ private CurrentUserService currentUserService;
+
+ //TODO make tasks prototypes to avoid potential concurrency issues?
+
@RequestMapping( value = "/analytics", method = RequestMethod.PUT )
@PreAuthorize( "hasRole('ALL') or hasRole('F_DATA_MART_ADMIN')" )
public void analytics( HttpServletResponse response )
{
+ analyticsTableTask.setTaskId( new TaskId( TaskCategory.DATAMART, currentUserService.getCurrentUser() ) );
+
scheduler.executeTask( analyticsTableTask );
ContextUtils.okResponse( response, "Initiated analytics table update" );
@@ -76,6 +86,8 @@
@PreAuthorize( "hasRole('ALL') or hasRole('F_DATA_MART_ADMIN')" )
public void data( HttpServletResponse response )
{
+ dataMartTask.setTaskId( new TaskId( TaskCategory.DATAMART, currentUserService.getCurrentUser() ) );
+
scheduler.executeTask( dataMartTask );
ContextUtils.okResponse( response, "Initiated data mart update" );
@@ -85,6 +97,8 @@
@PreAuthorize( "hasRole('ALL') or hasRole('F_PERFORM_MAINTENANCE')" )
public void resourceTables( HttpServletResponse response )
{
+ resourceTableTask.setTaskId( new TaskId( TaskCategory.RESOURCETABLE_UPDATE, currentUserService.getCurrentUser() ) );
+
scheduler.executeTask( resourceTableTask );
ContextUtils.okResponse( response, "Initiated resource table update" );
=== removed directory 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable'
=== removed file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable/GenerateResourceTableAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable/GenerateResourceTableAction.java 2013-08-23 16:05:01 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/resourcetable/GenerateResourceTableAction.java 1970-01-01 00:00:00 +0000
@@ -1,212 +0,0 @@
-package org.hisp.dhis.dataadmin.action.resourcetable;
-
-/*
- * Copyright (c) 2004-2013, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import com.opensymphony.xwork2.Action;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.resourcetable.ResourceTableService;
-import org.hisp.dhis.sqlview.SqlViewService;
-import org.hisp.dhis.user.CurrentUserService;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class GenerateResourceTableAction
- implements Action
-{
- private static final Log log = LogFactory.getLog( GenerateResourceTableAction.class );
-
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private SqlViewService sqlViewService;
-
- public void setSqlViewService( SqlViewService sqlViewService )
- {
- this.sqlViewService = sqlViewService;
- }
-
- private ResourceTableService resourceTableService;
-
- public void setResourceTableService( ResourceTableService resourceTableService )
- {
- this.resourceTableService = resourceTableService;
- }
-
- private CurrentUserService currentUserService;
-
- public void setCurrentUserService( CurrentUserService currentUserService )
- {
- this.currentUserService = currentUserService;
- }
-
- // -------------------------------------------------------------------------
- // Input & Output
- // -------------------------------------------------------------------------
-
- private boolean organisationUnit;
-
- public void setOrganisationUnit( boolean organisationUnit )
- {
- this.organisationUnit = organisationUnit;
- }
-
- private boolean dataElementGroupSetStructure;
-
- public void setDataElementGroupSetStructure( boolean dataElementGroupSetStructure )
- {
- this.dataElementGroupSetStructure = dataElementGroupSetStructure;
- }
-
- private boolean indicatorGroupSetStructure;
-
- public void setIndicatorGroupSetStructure( boolean indicatorGroupSetStructure )
- {
- this.indicatorGroupSetStructure = indicatorGroupSetStructure;
- }
-
- private boolean organisationUnitGroupSetStructure;
-
- public void setOrganisationUnitGroupSetStructure( boolean organisationUnitGroupSetStructure )
- {
- this.organisationUnitGroupSetStructure = organisationUnitGroupSetStructure;
- }
-
- private boolean categoryStructure;
-
- public void setCategoryStructure( boolean categoryStructure )
- {
- this.categoryStructure = categoryStructure;
- }
-
- private boolean categoryOptionComboName;
-
- public void setCategoryOptionComboName( boolean categoryOptionComboName )
- {
- this.categoryOptionComboName = categoryOptionComboName;
- }
-
- private boolean dataElementStructure;
-
- public void setDataElementStructure( boolean dataElementStructure )
- {
- this.dataElementStructure = dataElementStructure;
- }
-
- private boolean periodStructure;
-
- public void setPeriodStructure( boolean periodStructure )
- {
- this.periodStructure = periodStructure;
- }
-
- private boolean dataElementCategoryOptionCombo;
-
- public void setDataElementCategoryOptionCombo( boolean dataElementCategoryOptionCombo )
- {
- this.dataElementCategoryOptionCombo = dataElementCategoryOptionCombo;
- }
-
- private String message;
-
- public String getMessage()
- {
- return message;
- }
-
- // -------------------------------------------------------------------------
- // Action implementation
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- sqlViewService.dropAllSqlViewTables();
-
- log.info( "'" + currentUserService.getCurrentUsername() + "': Dropped all sql views" );
-
- if ( organisationUnit )
- {
- resourceTableService.generateOrganisationUnitStructures();
- }
-
- if ( dataElementGroupSetStructure )
- {
- resourceTableService.generateDataElementGroupSetTable();
- }
-
- if ( indicatorGroupSetStructure )
- {
- resourceTableService.generateIndicatorGroupSetTable();
- }
-
- if ( organisationUnitGroupSetStructure )
- {
- resourceTableService.generateOrganisationUnitGroupSetTable();
- }
-
- if ( categoryStructure )
- {
- resourceTableService.generateCategoryTable();
- }
-
- if ( categoryOptionComboName )
- {
- resourceTableService.generateCategoryOptionComboNames();
- }
-
- if ( dataElementStructure )
- {
- resourceTableService.generateDataElementTable();
- }
-
- if ( periodStructure )
- {
- resourceTableService.generatePeriodTable();
- }
-
- if ( dataElementCategoryOptionCombo )
- {
- resourceTableService.generateDataElementCategoryOptionComboTable();
- }
-
- log.info( "'" + currentUserService.getCurrentUsername() + "': Generated resource tables" );
-
- sqlViewService.createAllViewTables();
-
- log.info( "'" + currentUserService.getCurrentUsername() + "': Created all views" );
-
- message = "Generated resource tables";
-
- return SUCCESS;
- }
-}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml 2013-07-22 11:47:18 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml 2013-09-03 19:11:14 +0000
@@ -17,16 +17,6 @@
<property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
</bean>
- <!-- Resource table -->
-
- <bean id="org.hisp.dhis.dataadmin.action.resourcetable.GenerateResourceTableAction"
- class="org.hisp.dhis.dataadmin.action.resourcetable.GenerateResourceTableAction"
- scope="prototype">
- <property name="resourceTableService" ref="org.hisp.dhis.resourcetable.ResourceTableService" />
- <property name="sqlViewService" ref="org.hisp.dhis.sqlview.SqlViewService" />
- <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- </bean>
-
<!-- Cache -->
<bean id="org.hisp.dhis.dataadmin.action.cache.ShowCacheAction"
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml 2013-07-25 09:37:43 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml 2013-09-03 19:11:14 +0000
@@ -44,11 +44,6 @@
<param name="requiredAuthorities">F_PERFORM_MAINTENANCE</param>
</action>
- <action name="generateResourceTable" class="org.hisp.dhis.dataadmin.action.resourcetable.GenerateResourceTableAction">
- <result name="success" type="velocity-xml">/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
- <param name="requiredAuthorities">F_PERFORM_MAINTENANCE</param>
- </action>
-
<!-- Cache -->
<action name="showCache" class="org.hisp.dhis.dataadmin.action.cache.ShowCacheAction">
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/resourceTable.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/resourceTable.js 2013-05-27 11:07:26 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/resourceTable.js 2013-09-03 19:11:14 +0000
@@ -1,62 +1,16 @@
-
-var selected = false;
-
-function generateResourceTable()
-{
- var organisationUnit = document.getElementById( "organisationUnit" ).checked;
- var dataElementGroupSetStructure = document.getElementById( "dataElementGroupSetStructure" ).checked;
- var indicatorGroupSetStructure = document.getElementById( "indicatorGroupSetStructure" ).checked;
- var organisationUnitGroupSetStructure = document.getElementById( "organisationUnitGroupSetStructure" ).checked;
- var categoryStructure = document.getElementById( "categoryStructure" ).checked;
- var categoryOptionComboName = document.getElementById( "categoryOptionComboName" ).checked;
- var dataElementStructure = document.getElementById( "dataElementStructure" ).checked;
- var periodStructure = document.getElementById( "periodStructure" ).checked;
- var dataElementCategoryOptionCombo = document.getElementById( "dataElementCategoryOptionCombo" ).checked;
-
- if ( organisationUnit || dataElementGroupSetStructure || indicatorGroupSetStructure || organisationUnitGroupSetStructure ||
- categoryStructure || categoryOptionComboName || dataElementStructure || periodStructure || dataElementCategoryOptionCombo )
- {
- setWaitMessage( i18n_generating_resource_tables );
-
- var params = {
- organisationUnit: organisationUnit,
- dataElementGroupSetStructure: dataElementGroupSetStructure,
- indicatorGroupSetStructure: indicatorGroupSetStructure,
- organisationUnitGroupSetStructure: organisationUnitGroupSetStructure,
- categoryStructure: categoryStructure,
- categoryOptionComboName: categoryOptionComboName,
- dataElementStructure: dataElementStructure,
- periodStructure: periodStructure,
- dataElementCategoryOptionCombo: dataElementCategoryOptionCombo
- };
-
- $.ajax({
- type: "post",
- url: "generateResourceTable.action",
- data: params,
- dataType: "xml",
- success: function(result){
- setMessage( i18n_resource_tables_generated );
- }
- });
- }
- else
- {
- setMessage( i18n_select_options );
- }
-}
-
-function toggleAll()
-{
- selected = !selected;
-
- document.getElementById( "organisationUnit" ).checked = selected;
- document.getElementById( "dataElementGroupSetStructure" ).checked = selected;
- document.getElementById( "indicatorGroupSetStructure" ).checked = selected;
- document.getElementById( "organisationUnitGroupSetStructure" ).checked = selected;
- document.getElementById( "categoryStructure" ).checked = selected;
- document.getElementById( "categoryOptionComboName" ).checked = selected;
- document.getElementById( "dataElementStructure" ).checked = selected;
- document.getElementById( "periodStructure" ).checked = selected;
- document.getElementById( "dataElementCategoryOptionCombo" ).checked = selected;
-}
+
+function generateResourceTable()
+{
+ $( "#notificationTable" ).show().prepend( "<tr><td>" + _loading_bar_html + "</td></tr>" );
+ $.ajax( {
+ url: "../api/resourceTables",
+ type: "put",
+ success: pingNotificationsTimeout
+ } );
+}
+
+function pingNotificationsTimeout()
+{
+ pingNotifications( "RESOURCETABLE_UPDATE", "notificationTable" );
+ setTimeout( "pingNotificationsTimeout()", 2500 );
+}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2013-05-27 11:07:26 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2013-09-03 19:11:14 +0000
@@ -5,61 +5,38 @@
var i18n_select_options = '$encoder.jsEscape( $i18n.getString( "select_options" ), "'" )';
</script>
+<style type="text/css">
+ul.resourceTables
+{
+ list-style-type: none;
+}
+
+ul.resourceTables li
+{
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+</style>
+
<h3>$i18n.getString( "resource_table" ) #openHelp( "resourceTables" )</h3>
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="organisationUnit"/>
- <label for="organisationUnit">$i18n.getString( "organisation_unit_structure" ) <span style="color:#606060">(_orgunitstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="dataElementGroupSetStructure"/>
- <label for="dataElementGroupSetStructure">$i18n.getString( "data_element_group_set_structure" ) <span style="color:#606060">(_dataelementgroupsetstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="indicatorGroupSetStructure"/>
- <label for="indicatorGroupSetStructure">$i18n.getString( "indicator_group_set_structure" ) <span style="color:#606060">(_indicatorgroupsetstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="organisationUnitGroupSetStructure"/>
- <label for="organisationUnitGroupSetStructure">$i18n.getString( "organisation_unit_group_set_structure" ) <span style="color:#606060">(_organisationunitgroupsetstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="categoryStructure"/>
- <label for="categoryStructure">$i18n.getString( "category_structure" ) <span style="color:#606060">(_categorystructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="categoryOptionComboName"/>
- <label for="categoryOptionComboName">$i18n.getString( "data_element_category_option_combo_name" ) <span style="color:#606060">(_categoryoptioncomboname)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="dataElementStructure"/>
- <label for="dataElementStructure">$i18n.getString( "data_element_structure" ) <span style="color:#606060">(_dataelementstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="periodStructure"/>
- <label for="periodStructure">$i18n.getString( "period_structure" ) <span style="color:#606060">(_periodstructure)</span></label>
-</p>
-
-<p>
- <input type="checkbox" name="resourceTableCheckBox" id="dataElementCategoryOptionCombo"/>
- <label for="dataElementCategoryOptionCombo">$i18n.getString( "data_element_category_option_combo" ) <span style="color:#606060">(_dataelementcategoryoptioncombo)</span></label>
-</p>
-
-<table>
- <tr>
- <td>
- <input type="button" value='$i18n.getString( "select_all" )' id="selectAllButton" onclick="toggleAll()" style="width:100px"/>
- <input type="button" value='$i18n.getString( "generate_resource_tables" )' onclick="generateResourceTable()" style="width:150px"/>
- </td>
- </tr>
-
+<ul class="resourceTables">
+<li>$i18n.getString( "organisation_unit_structure" ) <span style="color:#606060">(_orgunitstructure)</span></li>
+<li>$i18n.getString( "data_element_group_set_structure" ) <span style="color:#606060">(_dataelementgroupsetstructure)</span></li>
+<li>$i18n.getString( "indicator_group_set_structure" ) <span style="color:#606060">(_indicatorgroupsetstructure)</span></li>
+<li>$i18n.getString( "organisation_unit_group_set_structure" ) <span style="color:#606060">(_organisationunitgroupsetstructure)</span></li>
+<li>$i18n.getString( "category_structure" ) <span style="color:#606060">(_categorystructure)</span></li>
+<li>$i18n.getString( "data_element_category_option_combo_name" ) <span style="color:#606060">(_categoryoptioncomboname)</span></li>
+<li>$i18n.getString( "data_element_structure" ) <span style="color:#606060">(_dataelementstructure)</span></li>
+<li>$i18n.getString( "period_structure" ) <span style="color:#606060">(_periodstructure)</span></li>
+<li>$i18n.getString( "data_element_category_option_combo" ) <span style="color:#606060">(_dataelementcategoryoptioncombo)</span></li>
+</ul>
+
+<p><input type="button" value='$i18n.getString( "generate_resource_tables" )' onclick="generateResourceTable()" style="width:150px"/></p>
+
+<div>
+<table id="notificationTable" class="notificationTable" style="display:none">
+<col width="140">
+<col width="360">
</table>
-
-<span id="message"></span>
+</div>