[jboss-svn-commits] JBL Code SVN: r12782 - in labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src: web/WEB-INF and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 22 11:58:30 EDT 2007


Author: wrzep
Date: 2007-06-22 11:58:30 -0400 (Fri, 22 Jun 2007)
New Revision: 12782

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/MetricsPortlet.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml
   labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet-instances.xml
   labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet.template.xml
Log:
JBLAB-868
implementing James' design


Added: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/MetricsPortlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/MetricsPortlet.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/java/org/jboss/forge/kosmos/MetricsPortlet.java	2007-06-22 15:58:30 UTC (rev 12782)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.forge.kosmos;
+
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.jboss.forge.common.ForgeHelper;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.kosmos.jira.LabsKosmosJiraDescriptor;
+import org.jboss.forge.kosmos.jira.LabsKosmosJiraWatcher;
+import org.jboss.forge.kosmos.svn.LabsKosmosSvnDescriptor;
+import org.jboss.forge.kosmos.svn.LabsKosmosSvnWatcher;
+import org.jboss.logging.Logger;
+import org.jboss.shotoku.aop.CacheItem;
+import org.jboss.shotoku.tools.Pair;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ * @author <a href="mailto:aron.gombas at midori.hu">Aron Gombas</a>
+ */
+public class MetricsPortlet extends GenericPortlet {
+	
+	protected final static Logger log = Logger.getLogger(MetricsPortlet.class);
+	
+	private static final String SERVICE_URL_INIT_PARAM = "service.url";
+	private static final String METRICS_JSP = "kosmos/labs/metrics.jsp";
+	private static final long METRICS_PORTLET_UPDATE_INTERVAL = 1000*60*30; // 30 minutes
+
+	@CacheItem(interval=METRICS_PORTLET_UPDATE_INTERVAL)
+	private static LabsKosmosJiraWatcher jiraWatcher;
+	
+	@CacheItem(interval=METRICS_PORTLET_UPDATE_INTERVAL)
+	private static LabsKosmosSvnWatcher svnWatcher;
+	
+	private String serviceUrl;
+	
+	@Override
+	public void init(PortletConfig config) throws PortletException {
+		serviceUrl = getInitParameter(SERVICE_URL_INIT_PARAM, config);
+		super.init(config);	
+	}
+	
+	@Override
+	public void doView(RenderRequest request, RenderResponse response) {
+		
+		String projectId = ProjectsHelper.getSelectedProjectId(request);
+
+		LabsKosmosJiraDescriptor jiraDesc = jiraWatcher.get(new Pair<String, String>(projectId,serviceUrl));
+		jiraDesc.fillContext(getPortletContext());
+		
+		LabsKosmosSvnDescriptor svnDesc = svnWatcher.get(new Pair<String, String>(projectId,serviceUrl));
+		svnDesc.fillContext(getPortletContext());
+		
+		getPortletContext().setAttribute("pref", request.getPreferences().getMap());
+		
+		response.setContentType("text/html");
+	        
+		PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
+								ForgeHelper.createRepoAccessPath("default", METRICS_JSP));
+	        
+	    try {
+	            rd.include(request, response);
+	    } catch(Exception ex) {
+	            log.error("Unable to include", ex);
+	    }        
+	}
+	
+	protected static String getInitParameter(String paramName, PortletConfig config) {
+	    String value = config.getInitParameter(paramName);        
+	    if(StringUtils.isBlank(value))
+	            throw new IllegalStateException("'" + paramName + "' is a required init-param");
+
+	    return value.trim();
+	}
+}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml	2007-06-22 15:40:52 UTC (rev 12781)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/jboss-portlet.xml	2007-06-22 15:58:30 UTC (rev 12782)
@@ -1,5 +1,12 @@
 <portlet-app>
 
+	<portlet>
+        <portlet-name>MetricsPortlet</portlet-name>
+        <transaction>
+            <trans-attribute>Required</trans-attribute>
+        </transaction>
+    </portlet>
+
     <portlet>
         <portlet-name>KosmosJIRAIssuesByAssingeePortlet</portlet-name>
         <transaction>

Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet-instances.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet-instances.xml	2007-06-22 15:40:52 UTC (rev 12781)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet-instances.xml	2007-06-22 15:58:30 UTC (rev 12782)
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <deployments>
-</deployments>
+</deployments>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet.template.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet.template.xml	2007-06-22 15:40:52 UTC (rev 12781)
+++ labs/jbosslabs/trunk/portal-extensions/forge-kosmos-portlets/src/web/WEB-INF/portlet.template.xml	2007-06-22 15:58:30 UTC (rev 12782)
@@ -3,9 +3,63 @@
              version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
     
-    <!-- JIRA portlets -->
+    <!-- Metrics Portlet (both JIRA and SVN) -->
     
     <portlet>
+        <description>Project Metrics Portlet</description>
+        <portlet-name>MetricsPortlet</portlet-name>
+        <display-name>Project Metrics Portlet</display-name>
+        <portlet-class>org.jboss.forge.kosmos.MetricsPortlet</portlet-class>
+        <init-param>
+      		<name>service.url</name>
+      		<value>#{kosmos.server.address}/kosmos-server/kosmos-services/jira-service</value>
+    	</init-param>
+        <supports>
+            <mime-type>text/html</mime-type>
+            <portlet-mode>VIEW</portlet-mode>
+        </supports>
+        <portlet-info>
+            <title>Project Metrics Portlet</title>
+        </portlet-info>
+        <portlet-preferences>
+            <preference>
+                <name>showJIRAIssuesByAssignee</name>
+                <value>true</value>
+            </preference>
+            <preference>
+                <name>showJIRAIssuesByStatus</name>
+                <value>true</value>
+            </preference>
+            <preference>
+                <name>showJIRAIssuesByPriority</name>
+                <value>true</value>
+            </preference>
+            <preference>
+                <name>showCommitHistory</name>
+                <value>true</value>
+            </preference>
+            <preference>
+                <name>showMostActiveCommiters</name>
+                <value>true</value>
+            </preference>
+            <preference>
+                <name>showRepositoryEntryHistory</name>
+                <value>true</value>
+            </preference>
+             <preference>
+                <name>showFilesByFileType</name>
+                <value>true</value>
+            </preference>
+             <preference>
+                <name>showMostActiveFiles</name>
+                <value>true</value>
+            </preference>
+        </portlet-preferences>
+    </portlet>
+    
+    <!-- JIRA Portlets -->
+    
+    <portlet>
         <description>Kosmos JIRA Open Issues By Assignee Portlet</description>
         <portlet-name>KosmosJIRAIssuesByAssigneePortlet</portlet-name>
         <display-name>Kosmos JIRA Open Issues By Assignee Portlet</display-name>
@@ -71,7 +125,7 @@
         </portlet-info>
     </portlet>
     
-    <!-- SVN portlets  --> 
+    <!-- SVN Portlets  --> 
     
     <portlet>
         <description>Kosmos Svn Activity</description>




More information about the jboss-svn-commits mailing list