Scarab commit: svn commit: r11036 - trunk/src/java/org/tigris/scarab: om tools
[email protected] Fri, 22 Jul 2011 07:44:02 -0700 (PDT)
| Newsgroups | gmane.comp.java.scarab.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: dabbous
Date: 2011-07-22 07:44:02-0700
New Revision: 11036
Modified:
trunk/src/java/org/tigris/scarab/om/RModuleOption.java
trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
Log:
SCB3093 (Enhancement): improve API to Module_option entries
Modified: trunk/src/java/org/tigris/scarab/om/RModuleOption.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/RModuleOption.java?view=diff&pathrev=11036&r1=11035&r2=11036
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/RModuleOption.java (original)
+++ trunk/src/java/org/tigris/scarab/om/RModuleOption.java 2011-07-22 07:44:02-0700
@@ -73,10 +73,10 @@
implements Persistent
{
- private static final String R_MODULE_OPTION =
- "RModuleOption";
- private static final String GET_RMOS =
- "getRMOs";
+ private static final String R_MODULE_OPTION = "RModuleOption";
+ private static final String GET_RMOS = "getRMOs";
+ private static final String GET_RMOS_FOR_ISSUETYPE = "getRMOsForIssueType";
+ private static final String GET_RMOS_FOR_ISSUETYPE_AND_VALUE = "getRMOsForIssueTypeValue";
private int level;
@@ -376,25 +376,118 @@
public static List<RModuleOption> getRMOs(Integer moduleId)
throws TorqueException
-{
- List<RModuleOption> result = null;
- Object obj = ScarabCache.get(R_MODULE_OPTION, GET_RMOS, moduleId);
- if (obj == null)
- {
- Criteria crit = new Criteria()
- .add(RModuleOptionPeer.MODULE_ID, moduleId);
- crit.addAscendingOrderByColumn(
- RModuleOptionPeer.PREFERRED_ORDER);
- result = (List<RModuleOption>)RModuleOptionPeer.doSelect(crit);
- ScarabCache.put(result, R_MODULE_OPTION, GET_RMOS,
- moduleId);
- }
- else
{
- result = (List<RModuleOption>)obj;
+ List<RModuleOption> result = null;
+ Object obj = ScarabCache.get(R_MODULE_OPTION, GET_RMOS, moduleId);
+ if (obj == null)
+ {
+ Criteria crit = new Criteria()
+ .add(RModuleOptionPeer.MODULE_ID, moduleId);
+ crit.addAscendingOrderByColumn(
+ RModuleOptionPeer.PREFERRED_ORDER);
+ result = (List<RModuleOption>)RModuleOptionPeer.doSelect(crit);
+ ScarabCache.put(result, R_MODULE_OPTION, GET_RMOS,
+ moduleId);
+ }
+ else
+ {
+ result = (List<RModuleOption>)obj;
+ }
+ return result;
}
- return result;
-}
+
+ /**
+ * Return the list of ModuleOptions for the current Module/IssueType combination
+ * Precondition: ModuleId and IssuetypeId must be set to reasonable values
+ * @param moduleId
+ * @param issueTypeId
+ * @return
+ * @throws TorqueException
+ */
+ public static List<RModuleOption> getRMOs(Integer moduleId, Integer issueTypeId) throws TorqueException
+ {
+ List<RModuleOption> result = null;
+ Object obj = ScarabCache.get(R_MODULE_OPTION, GET_RMOS_FOR_ISSUETYPE , moduleId, issueTypeId);
+ if (obj == null)
+ {
+ Criteria crit = new Criteria()
+ .add(RModuleOptionPeer.MODULE_ID, moduleId)
+ .and(RModuleOptionPeer.ISSUE_TYPE_ID, issueTypeId);
+ crit.addAscendingOrderByColumn(
+ RModuleOptionPeer.PREFERRED_ORDER);
+ result = (List<RModuleOption>)RModuleOptionPeer.doSelect(crit);
+ ScarabCache.put(result, R_MODULE_OPTION, GET_RMOS_FOR_ISSUETYPE , moduleId, issueTypeId);
+ }
+ else
+ {
+ result = (List<RModuleOption>)obj;
+ }
+ return result;
+ }
+ /**
+ * Return the list of ModuleOptions for the current Module/IssueType combination
+ * having the given DisplayValue. This is a convenience method, so we can
+ * use a human readable element in the velocity environment.
+ *
+ * [HD]: This is used in a very weird context where i need to manually associate
+ * Elements of 2 dependent attribute lists with each other. Idealy Scarab would allow
+ * to define inter attribute dependencies like:
+ *
+ * if attribute x has value A then attribute y must be set to B
+ * if attribute y has value C then attribute x must become a selection list containing all allowed values)
+ *
+ * For now this is done as needed within hard coded extension macros. And there
+ * i want to use the Display values instead of the OptionIds (knowing that this is a bad hack which may introduce redundancies).
+ * the plan is to get true dependencies added to the data model (I am working on it).
+ *
+ * Precondition: ModuleId and IssuetypeId must be set to reasonable values
+ * @param moduleId
+ * @param issueTypeId
+ * @return
+ * @throws TorqueException
+ */
+ public static List<RModuleOption> getRMOs(Integer moduleId, Integer issueTypeId, String displayValue) throws TorqueException
+ {
+ List<RModuleOption> result = null;
+ Object obj = ScarabCache.get(R_MODULE_OPTION, GET_RMOS_FOR_ISSUETYPE_AND_VALUE , moduleId, issueTypeId, displayValue);
+ if (obj == null)
+ {
+ Criteria crit = new Criteria()
+ .add(RModuleOptionPeer.MODULE_ID, moduleId)
+ .and(RModuleOptionPeer.ISSUE_TYPE_ID, issueTypeId)
+ .and(RModuleOptionPeer.DISPLAY_VALUE, displayValue);
+ crit.addAscendingOrderByColumn(
+ RModuleOptionPeer.PREFERRED_ORDER);
+ result = (List<RModuleOption>)RModuleOptionPeer.doSelect(crit);
+ ScarabCache.put(result, R_MODULE_OPTION, GET_RMOS_FOR_ISSUETYPE_AND_VALUE , moduleId, issueTypeId, displayValue);
+ }
+ else
+ {
+ result = (List<RModuleOption>)obj;
+ }
+ return result;
+ }
+
+ /**
+ * See above for explanation.
+ * This is another convenience method which returns the first RModuleOptions which meets the
+ * given criteria. (Knowing that it is a bad solution).
+ * @param moduleId
+ * @param issueTypeId
+ * @param displayValue
+ * @return
+ * @throws TorqueException
+ */
+ public static RModuleOption getFirstRMO(Integer moduleId, Integer issueTypeId, String displayValue) throws TorqueException
+ {
+ RModuleOption result = null;
+ List<RModuleOption> rmos = getRMOs(moduleId, issueTypeId, displayValue);
+ if (rmos != null && rmos.size() > 0)
+ {
+ result = rmos.get(0);
+ }
+ return result;
+ }
}
Modified: trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java?view=diff&pathrev=11036&r1=11035&r2=11036
==============================================================================
--- trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java (original)
+++ trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java 2011-07-22 07:44:02-0700
@@ -119,6 +119,7 @@
import org.tigris.scarab.om.RModuleAttributeManager;
import org.tigris.scarab.om.RModuleIssueType;
import org.tigris.scarab.om.RModuleIssueTypePeer;
+import org.tigris.scarab.om.RModuleOption;
import org.tigris.scarab.om.ROptionOption;
import org.tigris.scarab.om.ReportManager;
import org.tigris.scarab.om.ScarabUser;
@@ -3469,6 +3470,23 @@
return RModuleIssueTypePeer.retrieveByPK(moduleId, issueTypeId);
}
+ /**
+ * Get the module options for a specific module/issueType combination
+ * Used for the frontend (maybe refactor into separate tool ? )
+ * @param moduleId
+ * @return
+ * @throws TorqueException
+ */
+ public RModuleOption getFirstModuleOption(Module module, IssueType issueType, String displayValue) throws TorqueException
+ {
+ RModuleOption result = null;
+ if (module != null && issueType != null && displayValue != null)
+ {
+ result = RModuleOption.getFirstRMO(module.getModuleId(), issueType.getIssueTypeId(), displayValue);
+ }
+ return result;
+ }
+
public void clearCachedQueryResult()
{
data.getUser().removeTemp("queryResult");
------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2800954