Author: ronvoe122
Date: 2008-05-21 13:20:59-0700
New Revision: 10581
Modified:
trunk/project.properties
trunk/src/conf/conf/TurbineResources.properties
trunk/src/java/org/tigris/scarab/om/AttributeManager.java
trunk/src/java/org/tigris/scarab/om/AttributePeer.java
trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java
trunk/src/java/org/tigris/scarab/screens/ViewIssue.java
trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java
trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm
trunk/xdocs/scarab_properties.xml
Log:
Issue SCB2506:
- moved the property containing the additional Attributes for the dependency-list from TurbineResources.properties to project.properties. The property can now be changed using the Configuration-Page.
- improved the caching of the Attribute-list, to reduce the db-access.
- exposed the Attributes-list via ViewIssue instead of ScarabGlobalTool.
- removed some unnecessary checks in the template and the view-class.
Modified: trunk/project.properties
Url: http://scarab.tigris.org/source/browse/scarab/trunk/project.properties?view=diff&rev=10581&p1=trunk/project.properties&p2=trunk/project.properties&r1=10580&r2=10581
==============================================================================
--- trunk/project.properties (original)
+++ trunk/project.properties 2008-05-21 13:20:59-0700
@@ -1224,6 +1224,14 @@
scarab.issue.max.copy=25
+# ---------------------
+# scarab.issue.dependencies.displayattributes
+# ---------------------
+#
+# Additional Attributes which are displayed for dependencies.
+
+scarab.issue.dependencies.additionalDisplayAttributes=
+
# ---------------------------------
# scarab.viewIssue.singleScreenOnly
# ---------------------------------
Modified: trunk/src/conf/conf/TurbineResources.properties
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/conf/TurbineResources.properties?view=diff&rev=10581&p1=trunk/src/conf/conf/TurbineResources.properties&p2=trunk/src/conf/conf/TurbineResources.properties&r1=10580&r2=10581
==============================================================================
--- trunk/src/conf/conf/TurbineResources.properties (original)
+++ trunk/src/conf/conf/TurbineResources.properties 2008-05-21 13:20:59-0700
@@ -811,4 +811,3 @@
template.TemplateList.vm.noIssueTypesForwardsTo=IssueTypeList.vm
template.admin/XMLExportIssues.vm.noIssueTypesForwardsTo=IssueTypeList.vm
template.admin/XMLImportIssues.vm.noIssueTypesForwardsTo=IssueTypeList.vm
-scarab.common.dependency.tabattributes=[JIRA] Version
Modified: trunk/src/java/org/tigris/scarab/om/AttributeManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/AttributeManager.java?view=diff&rev=10581&p1=trunk/src/java/org/tigris/scarab/om/AttributeManager.java&p2=trunk/src/java/org/tigris/scarab/om/AttributeManager.java&r1=10580&r2=10581
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/AttributeManager.java (original)
+++ trunk/src/java/org/tigris/scarab/om/AttributeManager.java 2008-05-21 13:20:59-0700
@@ -81,6 +81,7 @@
Persistent oldOm = super.putInstanceImpl(om);
List listeners = (List)listenersMap.get(AttributePeer.ATTRIBUTE_ID);
notifyListeners(listeners, oldOm, om);
+ getMethodResult().removeAll(AttributePeer.ATTRIBUTE_PEER, AttributePeer.GET_ATTRIBUTES);
return oldOm;
}
Modified: trunk/src/java/org/tigris/scarab/om/AttributePeer.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/AttributePeer.java?view=diff&rev=10581&p1=trunk/src/java/org/tigris/scarab/om/AttributePeer.java&p2=trunk/src/java/org/tigris/scarab/om/AttributePeer.java&r1=10580&r2=10581
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/AttributePeer.java (original)
+++ trunk/src/java/org/tigris/scarab/om/AttributePeer.java 2008-05-21 13:20:59-0700
@@ -65,6 +65,7 @@
public class AttributePeer
extends BaseAttributePeer
{
+ public static final String GET_ATTRIBUTES = "GET_ATTRIBUTES";
public static final Integer ASSIGNED_TO__PK = new Integer(2);
public static final Integer STATUS__PK = new Integer(3);
public static final Integer RESOLUTION__PK = new Integer(4);
@@ -74,8 +75,7 @@
public static final String USER = "user";
public static final String NON_USER = "non-user";
- private static final String ATTRIBUTE_PEER =
- "AttributePeer";
+ public static final String ATTRIBUTE_PEER = "AttributePeer";
/**
* Gets a List of all of the Attribute objects in the database.
@@ -84,20 +84,17 @@
String sortColumn, String sortPolarity)
throws TorqueException
{
- List result = null;
- Boolean deletedBool = (includeDeleted ? Boolean.TRUE : Boolean.FALSE);
- Serializable[] keys = {ATTRIBUTE_PEER, attributeType, deletedBool,
+ Serializable[] cacheKey = {ATTRIBUTE_PEER, GET_ATTRIBUTES, attributeType, Boolean.valueOf(includeDeleted),
sortColumn, sortPolarity};
- Object obj = ScarabCache.get(keys);
- if (obj == null)
- {
+ List attributes = (List)AttributeManager.getMethodResult().get(cacheKey);
+ if(attributes==null)
+ {
Criteria crit = new Criteria();
crit.add(AttributePeer.ATTRIBUTE_ID, 0, Criteria.NOT_EQUAL);
if (!includeDeleted)
{
crit.add(AttributePeer.DELETED, 0);
}
- // add user type criteria - user or non-user
if (attributeType.equals("user"))
{
crit.add(AttributePeer.ATTRIBUTE_TYPE_ID,
@@ -108,7 +105,6 @@
crit.add(AttributePeer.ATTRIBUTE_TYPE_ID,
AttributeTypePeer.USER_TYPE_KEY, Criteria.NOT_EQUAL);
}
- // sort criteria
if (sortColumn.equals("desc"))
{
addSortOrder(crit, AttributePeer.DESCRIPTION,
@@ -128,23 +124,20 @@
}
else if (!sortColumn.equals("user"))
{
- // sort by name
addSortOrder(crit, AttributePeer.ATTRIBUTE_NAME,
sortPolarity);
}
- result = doSelect(crit);
- }
- else
- {
- result = (List)obj;
- }
- if (sortColumn.equals("user"))
- {
- result = sortAttributesByCreatingUser(result, sortPolarity);
+
+ attributes = doSelect(crit);
+
+ if (sortColumn.equals("user"))
+ {
+ attributes = sortAttributesByCreatingUser(attributes, sortPolarity);
+ }
+
+ AttributeManager.getMethodResult().put(attributes, cacheKey);
}
-
- ScarabCache.put(result, keys);
- return result;
+ return attributes;
}
/**
Modified: trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java?view=diff&rev=10581&p1=trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java&p2=trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java&r1=10580&r2=10581
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java (original)
+++ trunk/src/java/org/tigris/scarab/om/GlobalParameterManager.java 2008-05-21 13:20:59-0700
@@ -46,6 +46,7 @@
* individuals on behalf of CollabNet.
*/
+import java.util.Arrays;
import java.util.List;
import java.io.Serializable;
@@ -338,4 +339,21 @@
{
setString(name, module, (value ? "T" : "F"));
}
+
+ /**
+ * return the global value of parameter <name>
+ *
+ * @param name
+ * @return Empty List if the parameter is not defined
+ */
+ public static List getStringList(String name)
+ throws TorqueException
+ {
+ return toStringList(getString(name));
+ }
+
+ private static List toStringList(String string)
+ {
+ return Arrays.asList(string.split(";"));
+ }
}
Modified: trunk/src/java/org/tigris/scarab/screens/ViewIssue.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/screens/ViewIssue.java?view=diff&rev=10581&p1=trunk/src/java/org/tigris/scarab/screens/ViewIssue.java&p2=trunk/src/java/org/tigris/scarab/screens/ViewIssue.java&r1=10580&r2=10581
==============================================================================
--- trunk/src/java/org/tigris/scarab/screens/ViewIssue.java (original)
+++ trunk/src/java/org/tigris/scarab/screens/ViewIssue.java 2008-05-21 13:20:59-0700
@@ -46,7 +46,10 @@
* individuals on behalf of Collab.Net.
*/
-// Turbine Stuff
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import org.apache.turbine.RunData;
import org.apache.turbine.TemplateContext;
@@ -58,6 +61,9 @@
import org.tigris.scarab.tools.localization.L10NMessage;
import org.tigris.scarab.util.Log;
import org.tigris.scarab.util.ScarabLink;
+import org.tigris.scarab.om.Attribute;
+import org.tigris.scarab.om.AttributePeer;
+import org.tigris.scarab.om.GlobalParameterManager;
import org.tigris.scarab.om.Issue;
import org.tigris.scarab.om.IssueManager;
import org.tigris.scarab.om.ScarabModule;
@@ -70,6 +76,7 @@
*/
public class ViewIssue extends Default
{
+ private static final String ADDITIONAL_DISPLAY_ATTRIBUTES = "scarab.issue.dependencies.additionalDisplayAttributes";
/**
* Checks the validity of the issue before displaying the ViewIssue page, and
* sets the proper alert messages for the cases of invalid, moved or deleted issues.
@@ -79,46 +86,38 @@
super.doBuildTemplate(data, context);
ScarabRequestTool scarabR = getScarabRequestTool(context);
Issue issue = null;
- try
+ String id = data.getParameters().getString("id");
+ issue = getReferredIssue(id, (ScarabModule)scarabR.getCurrentModule());
+ boolean hasViewPermission = false;
+ boolean hasDeletePermission = false;
+ // Deleted issues will appear to not have existed before
+ if (issue == null || issue.getDeleted())
+ {
+ L10NMessage msg = new L10NMessage(L10NKeySet.IssueIdNotValid, id);
+ scarabR.setAlertMessage(msg);
+ }
+ else
{
- String id = data.getParameters().getString("id");
- issue = getReferredIssue(id, (ScarabModule)scarabR.getCurrentModule());
- boolean hasViewPermission = false;
- boolean hasDeletePermission = false;
- // Deleted issues will appear to not have existed before
- if (issue == null || issue.getDeleted())
+ hasViewPermission = scarabR.hasPermission(ScarabSecurity.ISSUE__VIEW, issue.getModule());
+ hasDeletePermission=scarabR.hasPermission(ScarabSecurity.ISSUE__DELETE, issue.getModule());
+ context.put("currentIssue", issue);
+ context.put("hasViewPermission", hasViewPermission?Boolean.TRUE:Boolean.FALSE);
+ context.put("hasDeletePermission", hasDeletePermission?Boolean.TRUE:Boolean.FALSE);
+ context.put("additionalDisplayAttributes", getAdditionalDisplayAttributes());
+ if (!hasViewPermission)
{
- L10NMessage msg = new L10NMessage(L10NKeySet.IssueIdNotValid, id);
+ L10NMessage msg = new L10NMessage(L10NKeySet.NoPermissionToViewIssue, id);
scarabR.setAlertMessage(msg);
}
- else
+ else if (issue.getMoved())
{
- // Initialize the values the ViewIssue.vm template needs
- hasViewPermission = scarabR.hasPermission(ScarabSecurity.ISSUE__VIEW, issue.getModule());
- hasDeletePermission=scarabR.hasPermission(ScarabSecurity.ISSUE__DELETE, issue.getModule());
- context.put("currentIssue", issue);
- context.put("hasViewPermission", hasViewPermission?Boolean.TRUE:Boolean.FALSE);
- context.put("hasDeletePermission", hasDeletePermission?Boolean.TRUE:Boolean.FALSE);
- if (!hasViewPermission)
- {
- L10NMessage msg = new L10NMessage(L10NKeySet.NoPermissionToViewIssue, id);
- scarabR.setAlertMessage(msg);
- }
- else if (issue.getMoved())
- {
- ScarabLink link = (ScarabLink)context.get("link");
- Issue newIssue = scarabR.getIssueIncludingDeleted(issue.getIssueNewId());
- L10NMessage msg = new L10NMessage(L10NKeySet.IssueIsNowLocatedIn,
- link.getIssueIdLink(newIssue), newIssue.getUniqueId());
- scarabR.setAlertMessage(msg);
- }
+ ScarabLink link = (ScarabLink)context.get("link");
+ Issue newIssue = scarabR.getIssueIncludingDeleted(issue.getIssueNewId());
+ L10NMessage msg = new L10NMessage(L10NKeySet.IssueIsNowLocatedIn,
+ link.getIssueIdLink(newIssue), newIssue.getUniqueId());
+ scarabR.setAlertMessage(msg);
}
}
- catch (Exception e)
- {
- Log.get().error("doBuildTemplate: " + e);
- }
-
}
private Issue getReferredIssue(String id, ScarabModule module)
@@ -158,4 +157,31 @@
}
return title;
}
+ /**
+ * returns a list of all attributes which should be displayed
+ * in the dependency tab.
+ * @return
+ */
+ private List getAdditionalDisplayAttributes()
+ throws Exception
+ {
+ List displayAttributeNames = GlobalParameterManager.getStringList(
+ ADDITIONAL_DISPLAY_ATTRIBUTES
+ );
+
+ List displayAttributes = new ArrayList();
+ for(Iterator names=displayAttributeNames.iterator();names.hasNext();)
+ {
+ final String displayAttributeName = (String)names.next();
+
+ for(Iterator attributes = AttributePeer.getAttributes().iterator();attributes.hasNext();)
+ {
+ Attribute attribute = (Attribute)attributes.next();
+ if(displayAttributeName.equals(attribute.getName())){
+ displayAttributes.add(attribute);
+ }
+ }
+ }
+ return displayAttributes;
+ }
}
Modified: trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java?view=diff&rev=10581&p1=trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java&p2=trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java&r1=10580&r2=10581
==============================================================================
--- trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java (original)
+++ trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java 2008-05-21 13:20:59-0700
@@ -936,52 +936,4 @@
}
return result;
}
-
-
- /**
- * returns a list with all attributes which are set for the dependency tab.
- * currently implementation from http://www.solitone.org/scarab/issues/id/SCB2506
- * this is currently hardcoded via the scarab.common.dependency.tabattributes property.
- * TODO patches to provide more dynamic specifications of attributes columns to show are wanted.
- * @return
- */
- public static List getGlobalDependencyAttributes(){
-
- try
- {
-
- final String value = Turbine.getConfiguration()
- .getString("scarab.common.dependency.tabattributes");
-
- if(value.length()>0){
-
- final String[] a_value = value.split(";");
- final Attribute[] a_attributes = new Attribute[a_value.length];
- final List attributes=AttributePeer.getAttributes();
-
- //map every attribute name from the property file to the specific attribute
- for(int i=0;i<a_value.length;i++){
-
- final Iterator iter = attributes.iterator();
-
- while(iter.hasNext()){
-
- final Attribute attr = (Attribute)iter.next();
-
- if(attr.getName().equals(a_value[i])){
- a_attributes[i]=attr;
- }
- }
- }
-
- return Arrays.asList(a_attributes);
- }
-
- }
- catch (Exception e)
- {
- Log.get().error(e);
- }
- return null;
- }
}
Modified: trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm?view=diff&rev=10581&p1=trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm&p2=trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm&r1=10580&r2=10581
==============================================================================
--- trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm (original)
+++ trunk/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab4Dep.vm 2008-05-21 13:20:59-0700
@@ -168,22 +168,16 @@
$l10n.PrivateIssue
#end
</td>
-
-
- #set ($tab_attributes=$scarabG.getGlobalDependencyAttributes())
- #if($tab_attributes)
- #foreach ($attr in $tab_attributes)
- <td width="100%" #addBackground("$blockingStatus" "$status")>
- #set ($attrvalue=[])
- #set ($attrvalue=$depend.getAttributeValue($attr.AttributeId))
- #if($attrvalue.Value)
- $attrvalue.Value
- #else
- $l10n.None
- #end
- </td>
- #end
- #end
+ #foreach ($attr in $additionalDisplayAttributes)
+ <td width="100%" #addBackground("$blockingStatus" "$status")>
+ #set ($attrvalue=$depend.getAttributeValue($attr.AttributeId))
+ #if($attrvalue.Value)
+ $attrvalue.Value
+ #else
+ $l10n.None
+ #end
+ </td>
+ #end
</tr>
## --------------------------------------------------------
@@ -304,14 +298,11 @@
<th nowrap="nowrap" >$l10n.BlockedStatus</th>
<th nowrap="nowrap" >$l10n.IssueId</th>
<th nowrap="nowrap" >$l10n.Summary</th>
- #set ($tab_attributes=$scarabG.getGlobalDependencyAttributes())
- #if($tab_attributes)
- #foreach ($attr in $tab_attributes)
- <th nowrap="nowrap" >
- $attr.Name
- </th>
- #end
- #end
+ #foreach ($attr in $additionalDisplayAttributes)
+ <th nowrap="nowrap" >
+ $attr.Name
+ </th>
+ #end
</tr>
Modified: trunk/xdocs/scarab_properties.xml
Url: http://scarab.tigris.org/source/browse/scarab/trunk/xdocs/scarab_properties.xml?view=diff&rev=10581&p1=trunk/xdocs/scarab_properties.xml&p2=trunk/xdocs/scarab_properties.xml&r1=10580&r2=10581
==============================================================================
--- trunk/xdocs/scarab_properties.xml (original)
+++ trunk/xdocs/scarab_properties.xml 2008-05-21 13:20:59-0700
@@ -881,20 +881,6 @@
<type>Runtime</type>
<file/>
</property>
-
-<property>
- <name>scarab.common.dependency.tabattributes</name>
- <default></default>
- <comment/>
- <type>Runtime</type>
- <file/>
- <details>
- Put here all names of the attributes,
- which you want to see additionally
- in the dependency tab.
- </details>
- </property>
-
<group name="NTLM domain">
<details>
These properties will allow Scarab to try to authenticate users against a
@@ -1448,6 +1434,11 @@
<details>Max number of issues that can be copied in one shot.</details>
</property>
<property>
+ <name>scarab.issue.dependencies.additionalDisplayAttributes</name>
+ <default></default>
+ <details>Additional Attributes which are displayed for in the Dependencies-Tab.</details>
+ </property>
+ <property>
<name>scarab.viewIssue.singleScreenOnly</name>
<default>false</default>
<details>Scarab.properties key for restricting viewIssue to long form (single screen).</details>
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.