Scarab commit: svn commit: r10844 - branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java

Johannes Höchstädter <[email protected]>
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: jhoech
Date: 2009-09-02 05:46:28-0700
New Revision: 10844

Modified:
   branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java

Log:
FIX - SCB2620 Applied patch from Hussayn for this issue, because I found it working. Was committed by Hussayn into the trunk in revision 10716 and 10717.

Modified: branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java?view=diff&pathrev=10844&r1=10843&r2=10844
==============================================================================
--- branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java	(original)
+++ branches/release/0.22/src/java/org/tigris/scarab/om/RModuleOption.java	2009-09-02 05:46:28-0700
@@ -236,51 +236,70 @@
     }
         
     public void delete()
-         throws TorqueException, ScarabException
+    throws TorqueException, ScarabException
     {                
-        final Module module = getModule();
+   final Module module = getModule();
 
-            final IssueType issueType = IssueTypeManager
-               .getInstance(getIssueTypeId(), false);
-            if (issueType.getLocked())
-            { 
-                throw new ScarabException(L10NKeySet.ExceptionDeleteOptionFromLockedIssueType);
-            }            
-            else
-            {
-                final Criteria c = new Criteria()
-                    .add(RModuleOptionPeer.MODULE_ID, getModuleId())
-                    .add(RModuleOptionPeer.ISSUE_TYPE_ID, getIssueTypeId())
-                    .add(RModuleOptionPeer.OPTION_ID, getOptionId());
-                RModuleOptionPeer.doDelete(c);
-                WorkflowFactory.getInstance().deleteWorkflowsForOption(getAttributeOption(), 
-                                             module, issueType);
-                // Correct the ordering of the remaining options
-                final List optIds = new ArrayList();
-                final List rmos = module.getRModuleOptions(getAttributeOption().getAttribute(), issueType, false);
-                for (int i=0; i<rmos.size();i++)
-                {
-                    final RModuleOption rmo = (RModuleOption)rmos.get(i);
-                    optIds.add(rmo.getOptionId());
-                }
-                final Criteria c2 = new Criteria()
-                    .add(RModuleOptionPeer.MODULE_ID, getModuleId())
-                    .add(RModuleOptionPeer.ISSUE_TYPE_ID, getIssueTypeId())
-                    .addIn(RModuleOptionPeer.OPTION_ID, optIds)
-                    .add(RModuleOptionPeer.PREFERRED_ORDER, getOrder(), Criteria.GREATER_THAN);
-                final List adjustRmos = RModuleOptionPeer.doSelect(c2);
-                for (int j=0; j<adjustRmos.size();j++)
-                {
-                    final RModuleOption rmo = (RModuleOption)adjustRmos.get(j);
-                    //rmos.remove(rmo);
-                    rmo.setOrder(rmo.getOrder() -1);
-                    rmo.save();
-                    //rmos.add(rmo);
-                }
-            }
-            // notify module cache of this change
-            ((ModuleManager)Torque.getManager(ModuleManager.MANAGED_CLASS))
-                .refreshedObject(this);
+       final IssueType issueType = IssueTypeManager
+          .getInstance(getIssueTypeId(), false);
+       if (issueType.getLocked())
+       { 
+           throw new ScarabException(L10NKeySet.ExceptionDeleteOptionFromLockedIssueType);
+       }            
+       else
+       {
+           Integer moduleId    = getModuleId();
+           Integer issueTypeId = getIssueTypeId();
+           Integer optionId    = getOptionId();
+           int orderNumber     = getOrder();
+
+           // delete the option
+           final Criteria c = new Criteria()
+               .add(RModuleOptionPeer.MODULE_ID, moduleId)
+               .add(RModuleOptionPeer.ISSUE_TYPE_ID, issueTypeId)
+               .add(RModuleOptionPeer.OPTION_ID, optionId);
+           RModuleOptionPeer.doDelete(c);
+           
+           // delete associated workflow
+           WorkflowFactory.getInstance().deleteWorkflowsForOption(getAttributeOption(), 
+                                        module, issueType);
+
+           // ======================================================
+           // Correct the ordering of the remaining options
+           // ======================================================
+
+           // first retrieve the list of still available option ids
+           final List optIds = new ArrayList();
+           final List rmos = module.getRModuleOptions(getAttributeOption().getAttribute(), issueType, false);
+           for (int i=0; i<rmos.size();i++)
+           {
+               final RModuleOption rmo = (RModuleOption)rmos.get(i);
+               optIds.add(rmo.getOptionId());
+           }
+          
+           // Need to perform the correction only if the deleted option had follow up options
+           if(optIds.size() > 0)
+           {
+               // update the list
+               final Criteria c2 = new Criteria()
+                   .add(RModuleOptionPeer.MODULE_ID,       moduleId)
+                   .add(RModuleOptionPeer.ISSUE_TYPE_ID,   issueTypeId)
+                   .addIn(RModuleOptionPeer.OPTION_ID,     optIds)
+                   .add(RModuleOptionPeer.PREFERRED_ORDER, orderNumber, Criteria.GREATER_THAN);
+               final List adjustRmos = RModuleOptionPeer.doSelect(c2);
+               for (int j=0; j<adjustRmos.size();j++)
+               {
+                   final RModuleOption rmo = (RModuleOption)adjustRmos.get(j);
+                   //rmos.remove(rmo);
+                   rmo.setOrder(rmo.getOrder() -1);
+                   rmo.save();
+                   //rmos.add(rmo);
+               }
+           }
+       }
+       // notify module cache of this change
+       ((ModuleManager)Torque.getManager(ModuleManager.MANAGED_CLASS))
+           .refreshedObject(this);
     }
 
     public void save(Connection con) throws TorqueException

------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2390173
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.