Scarab commit: svn commit: r10587 - trunk/src/java/org/tigris/scarab: om reports

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: ronvoe122
Date: 2008-05-23 13:15:49-0700
New Revision: 10587

Modified:
   trunk/src/java/org/tigris/scarab/om/ActivityManager.java
   trunk/src/java/org/tigris/scarab/om/ModuleManager.java
   trunk/src/java/org/tigris/scarab/om/ReportManager.java
   trunk/src/java/org/tigris/scarab/om/ScarabModule.java
   trunk/src/java/org/tigris/scarab/reports/ReportBridge.java
   trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java

Log:
SCB1381: refined caching and db-queries of default report:
-The cache is now also flushed, if the module or report was changed.
-The cache-listener-functionality of torque is now used to flush the cache, so this doesn't pollute the core functionality.
-The query for non-deleted module reports is now implemented in the ReportManager, because it's not in the responsibility of ScarabModule. 

Modified: trunk/src/java/org/tigris/scarab/om/ActivityManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/ActivityManager.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/om/ActivityManager.java&p2=trunk/src/java/org/tigris/scarab/om/ActivityManager.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/ActivityManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/ActivityManager.java	2008-05-23 13:15:49-0700
@@ -376,14 +376,6 @@
         {
             throw new TorqueException(e); //EXCEPTION
         }
-
-        //set default report for current module to dirty
-        Module module=issue.getModule();
-        
-        if(module instanceof ScarabModule){
-            ((ScarabModule)module).setDefaultReportDirty(true);
-        }
-
         return activity;
     }
 }

Modified: trunk/src/java/org/tigris/scarab/om/ModuleManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/ModuleManager.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/om/ModuleManager.java&p2=trunk/src/java/org/tigris/scarab/om/ModuleManager.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/ModuleManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/ModuleManager.java	2008-05-23 13:15:49-0700
@@ -50,13 +50,11 @@
 import java.util.LinkedList;
 import java.util.ArrayList;
 import java.util.Iterator;
-import java.io.Serializable;
 
 import org.apache.torque.TorqueException;
 import org.apache.torque.om.Persistent;
 import org.apache.torque.util.Criteria;
 import org.apache.torque.manager.CacheListener;
-import org.tigris.scarab.util.Log;
 
 /** 
  * This class manages Module objects.
@@ -184,80 +182,60 @@
         AttributeManager.addCacheListener(this);
         AttributeOptionManager.addCacheListener(this);
         IssueTypeManager.addCacheListener(this);
+        AttributeValueManager.addCacheListener(this);
+        ReportManager.addCacheListener(this);
     }
 
-    // -------------------------------------------------------------------
-    // CacheListener implementation
-
     public void addedObject(Persistent om)
     {
-        if (om instanceof RModuleAttribute)
+        try
         {
-            RModuleAttribute castom = (RModuleAttribute)om;
-            Integer key = castom.getModuleId();
-            try
+            if (om instanceof RModuleAttribute)
             {
-                Serializable obj = getInstance(key);
-                if (obj != null) 
-                {
-                    getMethodResult().removeAll(obj, 
-                        AbstractScarabModule.GET_R_MODULE_ATTRIBUTES);
-                }
+                Module module = ((RModuleAttribute)om).getModule();
+                getMethodResult().removeAll(module, AbstractScarabModule.GET_R_MODULE_ATTRIBUTES);
             }
-            catch(TorqueException e)
+            else if (om instanceof RModuleOption)
             {
-                Log.get().warn("Invalid Module id ", e);
+                Module module = ((RModuleOption)om).getModule();
+                getMethodResult().removeAll(module, AbstractScarabModule.GET_LEAF_R_MODULE_OPTIONS);
+                getMethodResult().removeAll(module, AbstractScarabModule.GET_ALL_R_MODULE_OPTIONS);
             }
-        }
-        else if (om instanceof RModuleOption)
-        {
-            RModuleOption castom = (RModuleOption)om;
-            Integer key = castom.getModuleId();
-            try
+            else if (om instanceof RModuleIssueType) 
             {
-                Serializable obj = getInstance(key);
-                if (obj != null) 
-                {
-                    getMethodResult().removeAll(obj, 
-                        AbstractScarabModule.GET_LEAF_R_MODULE_OPTIONS);
-                    getMethodResult().removeAll(obj, 
-                            AbstractScarabModule.GET_ALL_R_MODULE_OPTIONS);
-                }
+                Module module = ((RModuleIssueType)om).getModule();
+                getMethodResult().remove(module, AbstractScarabModule.GET_NAV_ISSUE_TYPES);
             }
-            catch(TorqueException e)
+            else if (om instanceof IssueType) 
             {
-                Log.get().warn("Invalid Module id ", e);
+                getMethodResult().clear();
             }
-        }
-        else if (om instanceof RModuleIssueType) 
-        {
-            RModuleIssueType castom = (RModuleIssueType)om;
-            Integer key = castom.getModuleId();
-            try
+            else if (om instanceof Attribute) 
             {
-                Serializable obj = getInstance(key);
-                if (obj != null) 
-                {
-                    getMethodResult().remove(obj, 
-                        AbstractScarabModule.GET_NAV_ISSUE_TYPES);
-                }
+                getMethodResult().clear();
             }
-            catch(TorqueException e)
+            else if (om instanceof AttributeOption) 
             {
-                Log.get().warn("Invalid Module id ", e);
+                getMethodResult().clear();
+            }
+            else if (om instanceof AttributeValue) 
+            {
+                Module module = ((AttributeValue)om).getIssue().getModule();
+                getMethodResult().removeAll( module, ScarabModule.GET_DEFAULTREPORT);
+            }
+            else if (om instanceof Report) 
+            {
+                Module module = ((Report)om).getModule();
+                if(module!=null)
+                {
+                    getMethodResult().removeAll(module, ScarabModule.GET_DEFAULTREPORT);
+                }          
             }
         }
-        else if (om instanceof IssueType) 
-        {
-            getMethodResult().clear();
-        }
-        else if (om instanceof Attribute) 
-        {
-            getMethodResult().clear();
-        }
-        else if (om instanceof AttributeOption) 
+        catch(TorqueException e)
         {
             getMethodResult().clear();
+            throw new RuntimeException(e);
         }
     }
 
@@ -276,7 +254,19 @@
         interestedCacheFields.add(AttributeGroupPeer.MODULE_ID);
         interestedCacheFields.add(AttributePeer.ATTRIBUTE_ID);
         interestedCacheFields.add(AttributeOptionPeer.OPTION_ID);
+        interestedCacheFields.add(AttributeValuePeer.ISSUE_ID);
         interestedCacheFields.add(IssueTypePeer.ISSUE_TYPE_ID);
+        interestedCacheFields.add(ReportPeer.REPORT_ID);
         return interestedCacheFields;
     }
+
+    protected Persistent putInstanceImpl(Persistent om)
+    throws TorqueException
+    {
+        Persistent oldOm = super.putInstanceImpl(om);
+        getMethodResult().removeAll((ScarabModule)om, ScarabModule.GET_DEFAULTREPORT);
+        List listeners = (List)listenersMap.get(ReportPeer.REPORT_ID);
+        notifyListeners(listeners, oldOm, om);
+        return oldOm;
+    }
 }

Modified: trunk/src/java/org/tigris/scarab/om/ReportManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/ReportManager.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/om/ReportManager.java&p2=trunk/src/java/org/tigris/scarab/om/ReportManager.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/ReportManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/ReportManager.java	2008-05-23 13:15:49-0700
@@ -47,7 +47,12 @@
 package org.tigris.scarab.om;
 
 
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.torque.TorqueException;
+import org.apache.torque.om.Persistent;
+import org.apache.torque.util.Criteria;
 
 /** 
  * This class manages Report objects.  
@@ -68,6 +73,30 @@
     {
         super();
         setRegion(getClassName().replace('.', '_'));
+        validFields = new HashMap();
+        validFields.put(ReportPeer.REPORT_ID, null);
+    }
+
+    public List getNotDeletedModuleReports(Module module) 
+        throws TorqueException
+    {
+        Criteria crit=new Criteria()
+           .add(ReportPeer.DELETED,false)
+           .add(ReportPeer.MODULE_ID,module.getModuleId())
+           .add(ReportPeer.SCOPE_ID,Scope.MODULE__PK);
+
+        List reports=ReportPeer.doSelect(crit);
+        
+        return reports;
+    }
+
+    protected Persistent putInstanceImpl(Persistent om)
+    throws TorqueException
+    {
+        Persistent oldOm = super.putInstanceImpl(om);
+        List listeners = (List)listenersMap.get(ReportPeer.REPORT_ID);
+        notifyListeners(listeners, oldOm, om);
+        return oldOm;
     }
 
 }

Modified: trunk/src/java/org/tigris/scarab/om/ScarabModule.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/ScarabModule.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/om/ScarabModule.java&p2=trunk/src/java/org/tigris/scarab/om/ScarabModule.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/ScarabModule.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/ScarabModule.java	2008-05-23 13:15:49-0700
@@ -125,13 +125,7 @@
     private String scheme     = null;
     private String scriptName = null;
     
-    private static final String GET_DEFAULTREPORT="getDefaultReport";
-    
-    /**
-     * true if the cached report of this module has to be updated,
-     * because some attribute values had changed in the module. 
-     */
-    private boolean defaultReportDirty=false;
+    public static final String GET_DEFAULTREPORT="getDefaultReport";
     
     /**
      * Get the value of domain.
@@ -1109,44 +1103,20 @@
 
     public String toString()
     {
-        return '{' + super.toString() + " - ID=" + getModuleId() + " - " 
-            + getName() + '}';
+        // This is required for caching.
+        // For a deeper explanation refer to Issue.toString().
+        return getModuleId()==null ? "new" : getModuleId().toString();
     }
     
     /**
      * Method returns all not deleted reports with scope module
      * @return
+     * @throws TorqueException 
      */
-    public List getNotDeletedModuleReports(){
-        Criteria crit=new Criteria();
-
-        //not deleted
-        crit.add(ReportPeer.DELETED,false);
-
-//      not deleted
-        crit.add(ReportPeer.MODULE_ID,this.getModuleId());
-
-        //scope module
-        crit.add(ReportPeer.SCOPE_ID,2);
-
-        List reports=null;
-
-        try {
-            reports=ReportPeer.doSelect(crit);
-        } catch (TorqueException e) {
-
-            reports=null;
-        }
-
-        return reports;
-    }
-
-    public boolean isDefaultReportDirty() {
-        return defaultReportDirty;
-    }
-
-    public void setDefaultReportDirty(boolean defaultReportDirty) {
-        this.defaultReportDirty = defaultReportDirty;
+    public List getNotDeletedModuleReports() 
+        throws TorqueException
+    {
+        return ReportManager.getManager().getNotDeletedModuleReports(this);
     }
 
     /**
@@ -1154,43 +1124,23 @@
      * @author jhoech
      */
     public ReportBridge getDefaultReport()
-    throws Exception
-{     
-        String id = GlobalParameterManager.getString(GlobalParameter.DEFAULT_REPORT,this);
-              
-        ReportBridge defaultReport=null;
+        throws Exception
+    {     
+        ReportBridge defaultReport=(ReportBridge) ModuleManager.getMethodResult()
+           .get(this,GET_DEFAULTREPORT);
             
-        boolean reportDeleted=false;
-        
-        if(id != null && id.length() > 0){
-
-            defaultReport =(ReportBridge) ReportManager.getMethodResult().get(this,GET_DEFAULTREPORT,this);
-            
-            if(this.isDefaultReportDirty()||defaultReport==null||!defaultReport.getReportId().toString().equals(id)){
-                defaultReport = new ReportBridge(ReportManager.getInstance(new NumberKey(id), true));
-                ReportManager.getMethodResult().put(defaultReport,this,GET_DEFAULTREPORT,this);
-                this.setDefaultReportDirty(false);
-            }
+        if(defaultReport==null){
+            String reportId = GlobalParameterManager.getString(GlobalParameter.DEFAULT_REPORT,this);
+            Report report=reportId.equals("") ? null : 
+                ReportManager.getInstance(new NumberKey(reportId));
 
-            if(defaultReport!=null){
-                Criteria crit =new Criteria();
-                crit.add(ReportPeer.REPORT_ID,id);
-                List l=ReportPeer.doSelect(crit); 
-                Iterator iter=l.iterator();
-               
-                while(iter.hasNext()){
-                    Report report=(Report) iter.next();
-                    if(report.getDeleted())reportDeleted=true;
-                }
+            if(report!=null && !report.getDeleted())
+            {
+                defaultReport = new ReportBridge(report);     
+                ModuleManager.getMethodResult().put(defaultReport,this,GET_DEFAULTREPORT);
             }
         }
-
-        //return null if report is deleted
-        if(defaultReport!=null&&reportDeleted){
-            return null;
-        }
-        else{
-            return defaultReport;
-        }
+            
+        return defaultReport;
     }
 }

Modified: trunk/src/java/org/tigris/scarab/reports/ReportBridge.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/reports/ReportBridge.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/reports/ReportBridge.java&p2=trunk/src/java/org/tigris/scarab/reports/ReportBridge.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/reports/ReportBridge.java	(original)
+++ trunk/src/java/org/tigris/scarab/reports/ReportBridge.java	2008-05-23 13:15:49-0700
@@ -610,7 +610,7 @@
     }    
 
     /**
-     * Method returns a refreshed instance of the cached table model
+     * Returns a cached table model of the Report
      * @param searcher
      * @return
      * @throws Exception
@@ -618,14 +618,11 @@
     public ReportTableModel getCachedModel(ScarabUser searcher)
         throws Exception
     {        
-        ScarabModule module=(ScarabModule)getModule();
-
         ReportTableModel model=(ReportTableModel) ReportManager.getMethodResult().get(this,GET_CACHED_MODEL,searcher);
 
         if(model==null){
             generatedDate=new Date();
             model=new ReportTableModel(this, getGeneratedDate(), searcher);
-            module.setDefaultReportDirty(false);
         }
 
         ReportManager.getMethodResult().put(model,this,GET_CACHED_MODEL,searcher);

Modified: trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java?view=diff&rev=10587&p1=trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java&p2=trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java&r1=10586&r2=10587
==============================================================================
--- trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java	(original)
+++ trunk/src/java/org/tigris/scarab/reports/ReportTableModel.java	2008-05-23 13:15:49-0700
@@ -325,45 +325,44 @@
             //could use a categories list to make this simpler
             if (columnHeadings != null && columnHeadings.size() == 1 && 
                     ((ReportHeading)columnHeadings.get(0)).get(0) instanceof ReportDate) 
+            {
+                Date date = ((ReportDate) ((ReportHeading) columnHeadings.get(0))
+                             .get(column)).dateValue();
+                if (date.getTime() <= System.currentTimeMillis())
                 {
-                    Date date = ((ReportDate) ((ReportHeading) columnHeadings.get(0))
-                                 .get(column)).dateValue();
-                    if (date.getTime() <= System.currentTimeMillis())
-                    {
-                        contents = new Integer(getIssueCount(getRowDataArray(row),
-                                                             date));
-                    }
-                    else
-                    {
-                        // Dates in the future are not applicable to reporting.
-                        contents = "";
-                    }
+                    contents = new Integer(getIssueCount(getRowDataArray(row),
+                                                         date));
                 }
-                else if (rowHeadings != null && rowHeadings.size() == 1 && 
-                         ((ReportHeading)rowHeadings.get(0)).get(0) instanceof ReportDate)
+                else
                 {
-                    Date date = ((ReportDate)((ReportHeading)rowHeadings.get(0))
-                                 .get(row)).dateValue();
-                    if (date.getTime() <= System.currentTimeMillis())
-                    {
-                       contents = new Integer(getIssueCount(
-                            getColumnDataArray(column), date));
-                    }
-                    else
-                    {
-                       // Dates in the future are not applicable to reporting.
-                       contents = "";
-                    }
+                    // Dates in the future are not applicable to reporting.
+                    contents = "";
+                }
+            }
+            else if (rowHeadings != null && rowHeadings.size() == 1 && 
+                     ((ReportHeading)rowHeadings.get(0)).get(0) instanceof ReportDate)
+            {
+                Date date = ((ReportDate)((ReportHeading)rowHeadings.get(0))
+                             .get(row)).dateValue();
+                if (date.getTime() <= System.currentTimeMillis())
+                {
+                   contents = new Integer(getIssueCount(
+                        getColumnDataArray(column), date));
                 }
                 else
                 {
-
-                    contents = new Integer(getIssueCount(
-                        getRowDataArray(row), getColumnDataArray(column), date)); 
+                   // Dates in the future are not applicable to reporting.
+                   contents = "";
                 }
-        }
+            }
+            else
+            {
+                contents = new Integer(getIssueCount(
+                    getRowDataArray(row), getColumnDataArray(column), date)); 
+            }
 
-        ReportManager.getMethodResult().put(contents,this,GET_VALUE_AT,new Integer(row),new Integer(column));
+            ReportManager.getMethodResult().put(contents,this,GET_VALUE_AT,new Integer(row),new Integer(column));
+        }
 
         return contents;
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.