From: <jbo...@li...> - 2006-01-20 21:04:21
|
Author: wrzep Date: 2006-01-20 16:04:14 -0500 (Fri, 20 Jan 2006) New Revision: 2155 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Columns.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Plugin.java Log: Added metric page (available after clicking on column header) to place there not only stats but graphs as well. http://jira.jboss.com/jira/browse/JBLAB-595 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -22,6 +22,10 @@ package org.jboss.forge.status; +import java.util.Set; + +import org.jboss.forge.common.projects.Projects; +import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; import org.jboss.forge.status.plugins.Plugin; import org.jboss.logging.Logger; import org.jboss.portal.common.context.DelegateContext; @@ -53,13 +57,6 @@ } /** - * @return Column name - */ - public String getName() { - return name; - } - - /** * Fills the given context with information appropriate for * the Status Matrix cell, located in the project row and this column. * @@ -70,7 +67,16 @@ DelegateContext entryContext = projectContext.next("entry"); - entryContext.put("name", getName()); + fillHeaderInfo(entryContext); + fillValue(entryContext, projectId); + } + + public void fillHeaderInfo(DelegateContext columnContext) { + columnContext.put("name", getName()); + columnContext.put("id", getId()); + } + + public void fillValue(DelegateContext entryContext, String projectId) { try { Long value = plugin.getValue(projectId); @@ -82,4 +88,42 @@ log.error("Could not get value for plugin: " + plugin.getId(), e); } } + + /** + * Fills the given context with column information for given projects. + * + * @param columnContext context to fill + * @param projects projects to fill context for + */ + public void fillContext(DelegateContext columnContext, Projects projects) { + + fillHeaderInfo(columnContext); + + Set<String> projectIds = projects.getProjectIds( + new NullPermissionsChecker(), null); + for (String projectId : projectIds) { + + DelegateContext projectContext = columnContext.next("project"); + + projectContext.put("name", projects.getProjectName(projectId)); + projectContext.put("link", projects.getProjectLink(projectId)); + projectContext.put("id", projectId); + + fillValue(projectContext, projectId); + } + } + + /** + * @return Column plugin id + */ + public String getId() { + return plugin.getId(); + } + + /** + * @return Column name + */ + public String getName() { + return name; + } } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Columns.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Columns.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Columns.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -80,6 +80,14 @@ } /** + * @param projects Projects present in the Status Matrix + */ + public Columns(Projects projects) { + this.projects = projects; + columns = new ArrayList<Column>(); + } + + /** * Adds to the columns list columns defined in columnsRoot. * * @param columnsRoot Node defining columns list @@ -135,7 +143,7 @@ * @param context DelegateContext to fill */ public void fillContext(DelegateContext context) { - fillColumnsNames(context); + fillColumnNames(context); fillValues(context); } @@ -147,7 +155,7 @@ * @param projectId id of project to fill context for */ public void fillContext(DelegateContext context, String projectId) { - fillColumnsNames(context); + fillColumnNames(context); fillProjectContext(context, projectId); } @@ -156,13 +164,13 @@ * * @param context DelegateContext to fill */ - private void fillColumnsNames(DelegateContext context) { + private void fillColumnNames(DelegateContext context) { for (Iterator iter = columns.iterator(); iter.hasNext();) { Column column = (Column) iter.next(); DelegateContext columnContext = new DelegateContext(); - columnContext.put("name", column.getName()); + column.fillHeaderInfo(columnContext); context.append("column", columnContext); } @@ -242,4 +250,19 @@ column.fillProjectContext(projectContext, projectId); } } + + /** + * Adds columns from <code>columnsToAdd</code> to the columns list. + */ + public void add(Columns columnsToAdd) { + + for (Column col : columnsToAdd.columns) { + columns.add(col); + } + + } + + public List<Column> getColumns() { + return columns; + } } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -52,6 +52,9 @@ /** Columns to display on the project specyfic page */ private Columns projectPageColumns; + /** All columns used in the Status Matrix */ + private Columns allColumns; + /** Plugins used in the Status Matrix */ private Plugins plugins; @@ -80,6 +83,10 @@ // Get columns to display on the project page Node projectPageRoot = XmlTools.getFirstNodeWithName(statusRoot, PROJECT_PAGE_COLLUMNS_TAG); projectPageColumns = new Columns(projectPageRoot, plugins, projects); + + allColumns = new Columns(projects); + allColumns.add(mainPageColumns); + allColumns.add(projectPageColumns); } /** @@ -96,7 +103,7 @@ */ public Map<String, DelegateContext> getProjectContexts() { - Map<String,DelegateContext> contextsMap = new HashMap<String,DelegateContext>(); + Map<String, DelegateContext> prjMap = new HashMap<String, DelegateContext>(); Set<String> projectIdsSet = projects.getProjectIds( (PermissionsChecker) new NullPermissionsChecker(), null); @@ -106,9 +113,24 @@ DelegateContext context = new DelegateContext(); projectPageColumns.fillContext(context, projectId); - contextsMap.put(projectId, context); + prjMap.put(projectId, context); } - return contextsMap; + return prjMap; } + + public Map<String, DelegateContext> getColumnContexts() { + + Map<String, DelegateContext> colMap = new HashMap<String, DelegateContext>(); + + for (Column col : allColumns.getColumns()) { + + DelegateContext context = new DelegateContext(); + col.fillContext(context, projects); + + colMap.put(col.getId(), context); + } + + return colMap; + } } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -44,6 +44,7 @@ private DelegateContext context; private Map<String,DelegateContext> projectContexts; + private Map<String,DelegateContext> columnContexts; private Status status; @@ -74,6 +75,7 @@ status.fillContext(context); projectContexts = status.getProjectContexts(); + columnContexts = status.getColumnContexts(); } public DelegateContext getContext() { @@ -84,6 +86,10 @@ return projectContexts.get(id); } + public DelegateContext getColumnContext(String id) { + return columnContexts.get(id); + } + private Node getRoot(ContentManager cm, String path) throws IOException, SAXException, ResourceDoesNotExist { DOMParser parser = new DOMParser(); parser.parse(new InputSource(cm.getNode(path).getContentInputStream())); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusPortlet.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -42,6 +42,7 @@ public class StatusPortlet extends JBossPortlet { private static final String PROJECT_DETAILS_ACTION = "viewProjectDetails"; + private static final String COLUMN_DETAILS_ACTION = "viewColumnDetails"; @Override public void doView(JBossRenderRequest request, JBossRenderResponse response) @@ -60,9 +61,16 @@ DelegateContext context = null; if ((id != null) && (action.equals(PROJECT_DETAILS_ACTION))) { - jspPath = StatusTools.getDetailsJspCmPath(); + jspPath = StatusTools.getPrjDetailsJspCmPath(); context = desc.getProjectContext(id); - } else { + } + + if ((id != null) && (action.equals(COLUMN_DETAILS_ACTION))) { + jspPath = StatusTools.getColumnDetailsJspCmPath(); + context = desc.getColumnContext(id); + } + + if (id == null) { // Request for main Matrix page jspPath = StatusTools.getJspCmPath(); context = desc.getContext(); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -33,10 +33,26 @@ private final static String STATUS_JSP = "status.jsp"; private final static String STATUS_JSP_DIR = "status"; private final static String PROJECT_DETAILS_JSP = "project_details.jsp"; + private final static String COLUMN_DETAILS_JSP = "column_details.jsp"; @Inject private static ContentManager cm; + public static synchronized StatusDescriptor getDesc(final String portalName) { + String cacheKey = StatusDescriptor.class.getName(); + + StatusDescriptor desc = (StatusDescriptor) ForgeHelper + .getForgeManagement().getFromCache(portalName, cacheKey); + + if (desc == null) + desc = (StatusDescriptor) ForgeHelper.getForgeManagement() + .addNodeWatcher(portalName, + cacheKey, + new StatusNodeWatcher(cm)); + + return desc; + } + /** * Path to the xml file with the Status Matrix properties. */ @@ -93,24 +109,16 @@ } /** - * Path to the jsp file responsible file displaying project details. + * Path to the jsp file responsible for displaying project details. */ - public static String getDetailsJspCmPath() { + public static String getPrjDetailsJspCmPath() { return STATUS_JSP_DIR + "/" + PROJECT_DETAILS_JSP; } - - public static synchronized StatusDescriptor getDesc(final String portalName) { - String cacheKey = StatusDescriptor.class.getName(); - - StatusDescriptor desc = (StatusDescriptor) ForgeHelper - .getForgeManagement().getFromCache(portalName, cacheKey); - if (desc == null) - desc = (StatusDescriptor) ForgeHelper.getForgeManagement() - .addNodeWatcher(portalName, - cacheKey, - new StatusNodeWatcher(cm)); - - return desc; + /** + * Path to the jsp file responsible displaying column details. + */ + public static String getColumnDetailsJspCmPath() { + return STATUS_JSP_DIR + "/" + COLUMN_DETAILS_JSP; } } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Plugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Plugin.java 2006-01-20 10:54:07 UTC (rev 2154) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/Plugin.java 2006-01-20 21:04:14 UTC (rev 2155) @@ -49,6 +49,8 @@ throws InvalidPluginPropertiesException { this.properties = properties; this.id = id; + + System.out.println("Plugin (" + id + ")"); } /** |