You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2005-12-17 15:00:11
|
Author: wrzep Date: 2005-12-17 10:00:05 -0500 (Sat, 17 Dec 2005) New Revision: 1832 Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java Removed: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java Log: moved kosmos plugin superclass to plugins package http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Deleted: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-17 14:53:48 UTC (rev 1831) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-17 15:00:05 UTC (rev 1832) @@ -1,110 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., 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.status; - -import org.jboss.forge.common.XmlTools; -import org.jboss.forge.common.projects.Projects; -import org.jboss.forge.status.plugins.InvalidPluginPropertiesException; -import org.jboss.forge.status.plugins.StatusPlugin; - -import org.jboss.logging.Logger; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.w3c.dom.Node; - -/** -* @author Pawel Wrzeszcz -*/ - -public abstract class KosmosStatusPlugin extends StatusPlugin { - - protected abstract String getKosmosServiceProperty(); - - private Map<String,Map> projectsMaps; - - protected String serviceURL; - - protected Logger log; - - public KosmosStatusPlugin() { - super(); - - log = Logger.getLogger(this.getClass()); - projectsMaps = new HashMap<String,Map>(); - } - - public void init(String name, String id, Projects projects, Node propertiesNode) throws InvalidPluginPropertiesException { - super.init(name, id, projects,propertiesNode); - - Map<String,String> properties = XmlTools.getMapFromNodeElements(propertiesNode); - getProperties(properties); - } - - private void getProperties(Map<String,String> properties) throws InvalidPluginPropertiesException { - - if (properties.isEmpty()) { - throw new InvalidPluginPropertiesException("Missing properties for " + getName() + " plugin."); - } - - serviceURL = properties.get(getKosmosServiceProperty()); - - if (serviceURL == null) { - throw new InvalidPluginPropertiesException( - "Missing " + getKosmosServiceProperty() + " property for " + getName() + " plugin."); - } - } - - protected abstract int getPluginSpecyficValue(Map projectMap); - protected abstract int getPluginSpecyficDefaultValue(); - - protected abstract Map getProjectMap(String projectId); - - protected void printMap(Map map) { //debug - if (map != null) { - - for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { - Object obj = (Object) iter.next(); - System.out.println("object: " + obj + " binding: " + map.get(obj)); - } - } - } - - public int getValue(String projectId) { - - if (!projectsMaps.containsKey(projectId)) { - projectsMaps.put(projectId, getProjectMap(projectId)); - } - - Map projectMap = projectsMaps.get(projectId); - - if (projectMap == null) { - return getPluginSpecyficDefaultValue(); - } - - return getPluginSpecyficValue(projectMap); - } - -} Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java 2005-12-17 14:53:48 UTC (rev 1831) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java 2005-12-17 15:00:05 UTC (rev 1832) @@ -0,0 +1,108 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., 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.status.plugins; + +import org.jboss.forge.common.XmlTools; +import org.jboss.forge.common.projects.Projects; + +import org.jboss.logging.Logger; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.w3c.dom.Node; + +/** +* @author Pawel Wrzeszcz +*/ + +public abstract class KosmosStatusPlugin extends StatusPlugin { + + protected abstract String getKosmosServiceProperty(); + + private Map<String,Map> projectsMaps; + + protected String serviceURL; + + protected Logger log; + + public KosmosStatusPlugin() { + super(); + + log = Logger.getLogger(this.getClass()); + projectsMaps = new HashMap<String,Map>(); + } + + public void init(String name, String id, Projects projects, Node propertiesNode) throws InvalidPluginPropertiesException { + super.init(name, id, projects,propertiesNode); + + Map<String,String> properties = XmlTools.getMapFromNodeElements(propertiesNode); + getProperties(properties); + } + + private void getProperties(Map<String,String> properties) throws InvalidPluginPropertiesException { + + if (properties.isEmpty()) { + throw new InvalidPluginPropertiesException("Missing properties for " + getName() + " plugin."); + } + + serviceURL = properties.get(getKosmosServiceProperty()); + + if (serviceURL == null) { + throw new InvalidPluginPropertiesException( + "Missing " + getKosmosServiceProperty() + " property for " + getName() + " plugin."); + } + } + + protected abstract int getPluginSpecyficValue(Map projectMap); + protected abstract int getPluginSpecyficDefaultValue(); + + protected abstract Map getProjectMap(String projectId); + + protected void printMap(Map map) { //debug + if (map != null) { + + for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { + Object obj = (Object) iter.next(); + System.out.println("object: " + obj + " binding: " + map.get(obj)); + } + } + } + + public int getValue(String projectId) { + + if (!projectsMaps.containsKey(projectId)) { + projectsMaps.put(projectId, getProjectMap(projectId)); + } + + Map projectMap = projectsMaps.get(projectId); + + if (projectMap == null) { + return getPluginSpecyficDefaultValue(); + } + + return getPluginSpecyficValue(projectMap); + } + +} Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java 2005-12-17 14:53:48 UTC (rev 1831) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java 2005-12-17 15:00:05 UTC (rev 1832) @@ -26,7 +26,7 @@ import java.util.List; import java.util.Map; -import org.jboss.forge.status.KosmosStatusPlugin; +import org.jboss.forge.status.plugins.KosmosStatusPlugin; import org.jboss.logging.Logger; import com.caucho.hessian.client.HessianProxyFactory; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java 2005-12-17 14:53:48 UTC (rev 1831) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java 2005-12-17 15:00:05 UTC (rev 1832) @@ -22,7 +22,7 @@ package org.jboss.forge.status.plugins.svn; -import org.jboss.forge.status.KosmosStatusPlugin; +import org.jboss.forge.status.plugins.KosmosStatusPlugin; import org.jboss.logging.Logger; import java.net.MalformedURLException; |
From: <jbo...@li...> - 2005-12-17 14:53:56
|
Author: wrzep Date: 2005-12-17 09:53:48 -0500 (Sat, 17 Dec 2005) New Revision: 1831 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/Status.java Log: displaying only columns listed in the status.xml http://jira.jboss.com/jira/browse/JBLAB-415 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 2005-12-17 14:06:00 UTC (rev 1830) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2005-12-17 14:53:48 UTC (rev 1831) @@ -23,6 +23,7 @@ package org.jboss.forge.status; import org.jboss.forge.status.plugins.Plugin; +import org.jboss.portal.common.context.DelegateContext; /** * @author Pawel Wrzeszcz @@ -37,4 +38,13 @@ this.plugin = plugin; System.out.println("Column " + name + " / " + (plugin == null ? "null" : plugin.getId())); } + + public String getName() { + return name; + } + + public void fillProjectContext(DelegateContext projectContext, String projectId) { + DelegateContext entryContext = projectContext.next("entry"); + entryContext.put("value", plugin.getValue(projectId)); + } } 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 2005-12-17 14:06:00 UTC (rev 1830) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-17 14:53:48 UTC (rev 1831) @@ -81,15 +81,12 @@ private HashSet<String> pluginsElements; Status(String portalName, Node statusRoot, Node statusPluginsRoot, Node scorePluginsRoot) { + this.portalName = portalName; log = Logger.getLogger(this.getClass()); initPluginElements(); - // Get general properties - mainPageColumns = getPageColumns(statusRoot, MAIN_PAGE_COLLUMNS_TAG); - System.out.println("mainPageColumns: " + mainPageColumns); - // Get the projects projects = ProjectsHelper.getProjects(portalName); @@ -104,9 +101,13 @@ allPlugins = new HashMap<String, Plugin>(); allPlugins.putAll(statusPlugins); allPlugins.putAll(scorePlugins); + + // Get columns to display + mainPageColumns = getPageColumns(statusRoot, MAIN_PAGE_COLLUMNS_TAG); } private List<Column> getPageColumns(Node statusRoot, String nodeTag) { + List<Column> columns = new ArrayList<Column>(); Node pageRoot = XmlTools.getFirstNodeWithName(statusRoot, nodeTag); @@ -115,21 +116,24 @@ for (int i = 0; i < columnsList.getLength(); i++) { Node columnNode = columnsList.item(i); - String name = null; - Node nameNode = XmlTools.getFirstNodeWithName(columnNode, "name"); - if (nameNode != null) { - name = XmlTools.unmarshallText(nameNode); - } - Plugin plugin = null; + if (columnNode.getNodeType() == Node.ELEMENT_NODE) { + Node nameNode = XmlTools.getFirstNodeWithName(columnNode, "name"); + String name = XmlTools.unmarshallText(nameNode); - Column column = new Column(name,plugin); - columns.add(column); + Node pluginNode = XmlTools.getFirstNodeWithName(columnNode, "plugin"); + String pluginId = XmlTools.unmarshallText(pluginNode); + Plugin plugin = allPlugins.get(pluginId); + + Column column = new Column(name,plugin); + columns.add(column); + } } - return null; + return columns; } private Set<Node> getPluginsNodes(Node pluginsRoot) { + HashSet<String> pluginElementSet = new HashSet<String>(); pluginElementSet.add(PLUGIN_ELEMENT); Set<Node> pluginsNodes = getChildNodesSet(pluginsRoot, pluginElementSet); @@ -138,6 +142,7 @@ } private void initPluginElements() { + pluginsElements = new HashSet<String>(); pluginsElements.add(PLUGIN_ID_ELEMENT); @@ -146,47 +151,46 @@ pluginsElements.add(PLUGIN_WEIGHT_ELEMENT); pluginsElements.add(PLUGIN_PROPERTIES_ELEMENT); } - - /** * Fills the given context with podcast information. * * @param context Context to fill. */ public void fillContext(DelegateContext context) { - - // Set collumns names - for (Iterator iter = allPlugins.values().iterator(); iter.hasNext();) { - Plugin plugin = (Plugin) iter.next(); + + fillColumnsNames(context); + fillValues(context); + } + + private void fillColumnsNames(DelegateContext context) { + + for (Iterator iter = mainPageColumns.iterator(); iter.hasNext();) { + Column column = (Column) iter.next(); - DelegateContext collumnContext = new DelegateContext(); - collumnContext.put("name", plugin.getName()); - collumnContext.put("id", plugin.getId()); + DelegateContext columnContext = new DelegateContext(); + columnContext.put("name", column.getName()); - context.append("collumn", collumnContext); + context.append("collumn", columnContext); } + } + + /** Fills the context with appropiate values (from each column) for each project. */ + private void fillValues(DelegateContext context) { + Set<String> projectIds = projects.getProjectIds( + (PermissionsChecker) new NullPermissionsChecker(), null); - /* Fill the context with appropiate values (from each plugin) for each project, */ - /* including final score as well. */ - - PermissionsChecker permissionsChecker = (PermissionsChecker) new NullPermissionsChecker(); - String projectLevel = null; - Set<String> projectIds = projects.getProjectIds(permissionsChecker, projectLevel); - int position = 0; for (Iterator iter = projectIds.iterator(); iter.hasNext();) { String projectId = (String) iter.next(); position++; - DelegateContext projectContext = new DelegateContext(); + DelegateContext projectContext = context.next("project"); fillProjectContext(projectContext, projectId, position); - - context.append("project", projectContext); } } - + private void fillProjectContext(DelegateContext projectContext, String projectId, int position) { @@ -195,17 +199,14 @@ projectContext.put("name", projects.getProjectName(projectId)); projectContext.put("link", projects.getProjectLink(projectId)); - fillEntries(projectContext, allPlugins.values(), projectId); + fillEntries(projectContext, mainPageColumns, projectId); } - private void fillEntries(DelegateContext projectContext, Collection<Plugin> plugins, String projectId) { - for (Iterator iter = plugins.iterator(); iter.hasNext();) { - Plugin plugin = (Plugin) iter.next(); - - DelegateContext entryContext = new DelegateContext(); - entryContext.put("value", plugin.getValue(projectId)); - - projectContext.append("entry", entryContext); + private void fillEntries(DelegateContext projectContext, Collection<Column> columns, String projectId) { + for (Iterator iter = columns.iterator(); iter.hasNext();) { + Column column = (Column) iter.next(); + + column.fillProjectContext(projectContext, projectId); } } @@ -218,7 +219,7 @@ Plugin plugin = getPlugin(pluginNode, scorePlugins); if (plugin != null) { - plugins.put(plugin.getName(), plugin); + plugins.put(plugin.getId(), plugin); } } @@ -228,7 +229,6 @@ private Plugin getPlugin(Node pluginNode, boolean scorePlugin) { // Get plugin info from pluginNode - String pluginType = pluginNode.getNodeName(); Map<String,Node> pluginProperties = getChildNodesMap(pluginNode, pluginsElements); String pluginClassString = XmlTools.unmarshallText(pluginProperties.get(PLUGIN_CLASS_ELEMENT)); @@ -271,22 +271,6 @@ return plugin; } - - - private Map<String,String> getChildNodesStringMap(Node root) { - HashMap<String,String> ret = new HashMap<String,String>(); - NodeList list = root.getChildNodes(); - - for (int i = 0; i < list.getLength(); i++) { - Node n = list.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE) { - ret.put(n.getNodeName(),XmlTools.unmarshallText(n)); - } - } - - return ret; - } - /** * For the given Node, computes Set of it's child Nodes. * Only child Nodes with names included in <code>nodesNames</code> Set @@ -330,20 +314,5 @@ return ret; } - - private Set<String> getStringsFromNode(Node root, String element) { - HashSet<String> s = new HashSet<String>(); - - HashSet<String> nodesNames = new HashSet<String>(); - nodesNames.add(element); - - Set<Node> nodes = getChildNodesSet(root, nodesNames); - - for (Iterator iter = nodes.iterator(); iter.hasNext();) { - Node n = (Node) iter.next(); - s.add(XmlTools.unmarshallText(n)); - } - - return s; - } + } |
From: <jbo...@li...> - 2005-12-17 14:06:07
|
Author: wrzep Date: 2005-12-17 09:06:00 -0500 (Sat, 17 Dec 2005) New Revision: 1830 Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java Log: http://jira.jboss.com/jira/browse/JBLAB-415 PAwel Added: 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 2005-12-17 13:16:07 UTC (rev 1829) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2005-12-17 14:06:00 UTC (rev 1830) @@ -0,0 +1,40 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., 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.status; + +import org.jboss.forge.status.plugins.Plugin; + +/** +* @author Pawel Wrzeszcz +*/ +public class Column { + + String name; + Plugin plugin; + + public Column(String name, Plugin plugin) { + this.name = name; + this.plugin = plugin; + System.out.println("Column " + name + " / " + (plugin == null ? "null" : plugin.getId())); + } +} |
Author: wrzep Date: 2005-12-17 08:16:07 -0500 (Sat, 17 Dec 2005) New Revision: 1829 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.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/plugins/ScorePlugin.java Log: status.xml parsing (list of columns to display on the main matrix page) http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-17 01:20:01 UTC (rev 1828) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-17 13:16:07 UTC (rev 1829) @@ -34,6 +34,7 @@ /** * @author adamw + * @author Pawel Wrzeszcz * Common helper xml parsing functions. */ public class XmlTools { @@ -147,7 +148,7 @@ return unmarshallText(n); } - + /** * Reads and returns a HTML block contained in the children of the specified * node. 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 2005-12-17 01:20:01 UTC (rev 1828) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-17 13:16:07 UTC (rev 1829) @@ -22,6 +22,7 @@ package org.jboss.forge.status; +import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -62,19 +63,18 @@ private final static String PLUGIN_WEIGHT_ELEMENT = "weight"; private final static String PLUGIN_PROPERTIES_ELEMENT = "properties"; - private static final String MAIN_PAGE_COLLUMNS_TAG = "main-page"; - private static final String PROJECT_PAGE_COLLUMNS_TAG = "project-page"; + private static final String MAIN_PAGE_COLLUMNS_TAG = "main"; + private static final String PROJECT_PAGE_COLLUMNS_TAG = "project"; private String portalName; private Projects projects; - private List<String> mainPagePlugins; - private List<String> projectPagePlugins; + private List<Column> mainPageColumns; - private List<Plugin> statusPlugins; - private List<Plugin> scorePlugins; - private List<Plugin> allPlugins; + private Map<String, Plugin> statusPlugins; + private Map<String, Plugin> scorePlugins; + private Map<String, Plugin> allPlugins; private Logger log; @@ -87,9 +87,8 @@ initPluginElements(); // Get general properties - Map<String,Node> statusNodeMap = XmlTools.getNodeMapFromNodeElements(statusRoot); - mainPagePlugins = getPagePlugins(statusRoot, MAIN_PAGE_COLLUMNS_TAG); - projectPagePlugins = getPagePlugins(statusRoot, PROJECT_PAGE_COLLUMNS_TAG); + mainPageColumns = getPageColumns(statusRoot, MAIN_PAGE_COLLUMNS_TAG); + System.out.println("mainPageColumns: " + mainPageColumns); // Get the projects projects = ProjectsHelper.getProjects(portalName); @@ -102,13 +101,31 @@ Set<Node> scorePluginsNodes = getPluginsNodes(scorePluginsRoot); scorePlugins = getPlugins(scorePluginsNodes, true); - allPlugins = new ArrayList<Plugin>(); - allPlugins.addAll(statusPlugins); - allPlugins.addAll(scorePlugins); + allPlugins = new HashMap<String, Plugin>(); + allPlugins.putAll(statusPlugins); + allPlugins.putAll(scorePlugins); } - private List<String> getPagePlugins(Node statusRoot, String nodeTag) { + private List<Column> getPageColumns(Node statusRoot, String nodeTag) { + List<Column> columns = new ArrayList<Column>(); + Node pageRoot = XmlTools.getFirstNodeWithName(statusRoot, nodeTag); + + NodeList columnsList = pageRoot.getChildNodes(); + for (int i = 0; i < columnsList.getLength(); i++) { + Node columnNode = columnsList.item(i); + + String name = null; + Node nameNode = XmlTools.getFirstNodeWithName(columnNode, "name"); + if (nameNode != null) { + name = XmlTools.unmarshallText(nameNode); + } + Plugin plugin = null; + + Column column = new Column(name,plugin); + columns.add(column); + } + return null; } @@ -140,7 +157,7 @@ public void fillContext(DelegateContext context) { // Set collumns names - for (Iterator iter = allPlugins.iterator(); iter.hasNext();) { + for (Iterator iter = allPlugins.values().iterator(); iter.hasNext();) { Plugin plugin = (Plugin) iter.next(); DelegateContext collumnContext = new DelegateContext(); @@ -178,10 +195,10 @@ projectContext.put("name", projects.getProjectName(projectId)); projectContext.put("link", projects.getProjectLink(projectId)); - fillEntries(projectContext, allPlugins, projectId); + fillEntries(projectContext, allPlugins.values(), projectId); } - private void fillEntries(DelegateContext projectContext, List<Plugin> plugins, String projectId) { + private void fillEntries(DelegateContext projectContext, Collection<Plugin> plugins, String projectId) { for (Iterator iter = plugins.iterator(); iter.hasNext();) { Plugin plugin = (Plugin) iter.next(); @@ -192,8 +209,8 @@ } } - private List<Plugin> getPlugins(Set<Node> pluginsNodes, boolean scorePlugins) { - ArrayList<Plugin> plugins = new ArrayList<Plugin>(); + private Map<String,Plugin> getPlugins(Set<Node> pluginsNodes, boolean scorePlugins) { + Map<String,Plugin> plugins = new HashMap<String,Plugin>(); for (Iterator iter = pluginsNodes.iterator(); iter.hasNext();) { Node pluginNode = (Node) iter.next(); @@ -201,7 +218,7 @@ Plugin plugin = getPlugin(pluginNode, scorePlugins); if (plugin != null) { - plugins.add(plugin); + plugins.put(plugin.getName(), plugin); } } @@ -235,7 +252,7 @@ plugin = (Plugin) pluginClass.newInstance(); if (scorePlugin) { - ((ScorePlugin) plugin).init(pluginName, pluginId, statusPlugins, pluginSpecificPropertiesNode); + ((ScorePlugin) plugin).init(pluginName, pluginId, statusPlugins.values(), pluginSpecificPropertiesNode); } else { /* score plugin */ ((StatusPlugin) plugin).init(pluginName, pluginId, projects, pluginSpecificPropertiesNode); } 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 2005-12-17 01:20:01 UTC (rev 1828) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-12-17 13:16:07 UTC (rev 1829) @@ -24,6 +24,7 @@ import java.io.IOException; import org.apache.xerces.parsers.DOMParser; +import org.jboss.forge.common.XmlTools; import org.jboss.portal.common.context.DelegateContext; import org.jboss.portlet.JBossRenderRequest; @@ -46,10 +47,16 @@ public StatusDescriptor(String portalName, ContentManager cm) { try { String statusPath = StatusTools.getXmlCmPath(portalName); + //System.out.println("statusPath: " + statusPath); Node statusRoot = getRoot(cm , statusPath); + //System.out.println("statusRoot: " + XmlTools.unmarshallText(statusRoot)); + //System.out.println("statusRoot: " + statusRoot); String statusPluginsPath = StatusTools.getXmlStatusPluginsCmPath(portalName); Node statusPluginsRoot = getRoot(cm, statusPluginsPath); + //System.out.println("statusPluginsPath: " + statusPluginsPath); + //System.out.println("statusPluginsRoot: " + statusPluginsRoot); + //System.out.println("statusPluginsRoot: " + XmlTools.unmarshallText(statusPluginsRoot)); String scorePluginsPath = StatusTools.getXmlScorePluginsCmPath(portalName); Node scorePluginsRoot = getRoot(cm, scorePluginsPath); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ScorePlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ScorePlugin.java 2005-12-17 01:20:01 UTC (rev 1828) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ScorePlugin.java 2005-12-17 13:16:07 UTC (rev 1829) @@ -22,7 +22,7 @@ package org.jboss.forge.status.plugins; -import java.util.List; +import java.util.Collection; import org.w3c.dom.Node; @@ -32,9 +32,9 @@ public abstract class ScorePlugin extends Plugin { - protected List<Plugin> plugins; + protected Collection<Plugin> plugins; - public void init(String name, String id, List<Plugin> plugins, Node propertiesNode) throws InvalidPluginPropertiesException { + public void init(String name, String id, Collection<Plugin> plugins, Node propertiesNode) throws InvalidPluginPropertiesException { this.plugins = plugins; init(name, id, propertiesNode); } |
From: <jbo...@li...> - 2005-12-17 01:20:10
|
Author: unibrew Date: 2005-12-16 20:20:01 -0500 (Fri, 16 Dec 2005) New Revision: 1828 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Poll.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java Log: [JBLAB-407] Updating Polls' sources. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Poll.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Poll.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Poll.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -1,45 +1,57 @@ package org.jboss.forge.common.projects; +import java.util.Hashtable; +import java.util.Map; +import java.util.Set; + public class Poll { private String question; - private long positive; - private long negative; private String pollId; + private Map<String,Integer> votes; - public Poll (long positive, long negative, String question, String pollId) { - this.positive = positive; - this.negative = negative; + public Poll (Set<String>answers,String question, String pollId) { + votes = new Hashtable<String,Integer>(answers.size()); + for (String answer : answers){ + votes.put(answer,new Integer(0)); + } this.question = question; this.pollId = pollId; } + public Poll (Map<String,Integer>votes,String question, String pollId) { + this.votes = votes; + if (votes==null) this.votes = new Hashtable<String,Integer>(); + this.question = question; + this.pollId = pollId; + } + public Poll (String question) { this.question = question; this.pollId= Integer.toString((int)(Math.random()*Integer.MAX_VALUE)); } - public void incrementPositive () { - positive++; + public void incrementAnswer (String answer) { + if (votes.get(answer)!=null) { + votes.put(answer,votes.get(answer)+1); + } } - - public void incrementNegative () { - negative++; - } @Override public boolean equals(Object obj) { - return ((Poll)obj).getQuestion().equals(question); + Poll poll = ((Poll)obj); + if (poll.getQuestion().equals(question) + && poll.getAnswers().containsAll(votes.keySet()) + && votes.keySet().containsAll(poll.getAnswers()) ) { + return true; + } + return false; } - public long getNegative() { - return negative; + public Integer getAnswerVotes (String answer) { + return votes.get(answer); } - public long getPositive() { - return positive; - } - public String getQuestion() { return question; } @@ -48,6 +60,23 @@ return pollId; } + public Set<String> getAnswers(){ + return votes.keySet(); + } + public void vote (String answer) { + if (votes.containsKey(answer)) { + votes.put(answer,votes.get(answer)+1); + } + } + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("POLLID: "+this.getPollId()); + sb.append("QUESTION: "+this.getQuestion()); + for (String answer :this.getAnswers()) { + sb.append("ANSWER "+answer); + } + return sb.toString(); + } } Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -25,8 +25,11 @@ import java.io.IOException; import java.io.InputStream; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Random; +import java.util.Set; import org.apache.xerces.parsers.DOMParser; import org.jboss.forge.common.XmlTools; @@ -50,6 +53,11 @@ public static final String QUESTION = "question"; /** + * Name of tag in poll.xml containing one poll's answers. + */ + public static final String ANSWER = "answer"; + + /** * Name of tag in poll.xml containing poll. */ public static final String POLL = "poll"; @@ -70,22 +78,41 @@ polls = new LinkedList<Poll>(); for (int i = 0; i < nodes.getLength(); i++) { n = nodes.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE) { + if (n.getNodeType() == Node.ELEMENT_NODE) { + String tempQuestion = null; + Set<String> tempAnswers = new HashSet<String>(); + System.out.println("[POLLSDESCRIPTOR] IN POLLS"); if (n.getNodeName().equals(POLL)) { + System.out.println("[POLLSDESCRIPTOR] IN POLL"); NodeList counterProps = n.getChildNodes(); for (int j=0;j< counterProps.getLength() ; j++) { + System.out.println("[POLLSDESCRIPTOR] IN CHILDREN OF POLL"); property = counterProps.item(j); if (property.getNodeType()== Node.ELEMENT_NODE){ + System.out.println("[POLLSDESCRIPTOR] IN ELEMENT OF POLL"); if (property.getNodeName().equals(QUESTION) && XmlTools.unmarshallText(property) != null && !XmlTools.unmarshallText(property).trim().equals("")) { - polls.add(new Poll(XmlTools.unmarshallText(property).trim())); + + tempQuestion = XmlTools.unmarshallText(property).trim(); + System.out.println("[POLLSDESCRIPTOR] IN QUESTION: "+tempQuestion); + } else if (property.getNodeName().equals(ANSWER) && XmlTools.unmarshallText(property) != null + && !XmlTools.unmarshallText(property).trim().equals("")) { + tempAnswers.add(XmlTools.unmarshallText(property).trim()); + System.out.println("[POLLSDESCRIPTOR] IN answer: "+XmlTools.unmarshallText(property).trim()); } } } + if (tempQuestion!=null && !tempQuestion.equals("") && tempAnswers.size()>0) { + System.out.println ("ADDING A POLL TO THE POLLS"); + polls.add(new Poll(tempAnswers,tempQuestion,Integer.toString((int)(Math.random()*99999999)))); + } } } } - + System.out.println ("Displaying Polls from PollDescriptor just after reading it."); + for (Poll poll : polls) { + System.out.println (poll); + } } /** Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -24,6 +24,7 @@ package org.jboss.forge.common.projects; import java.io.File; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -40,9 +41,35 @@ import org.jboss.portlet.JBossRenderResponse; import org.jboss.shotoku.ContentManager; +/** + * This class is used for creating context for PollsPortlet and is + * serving many different static methods and final variables used in Polls project. + * @author Ryszard Kozmik + * + */ public class PollTools { /** + * Name of the request parameter which tells if user voted. + */ + public static final String VOTED_PARAMETER_NAME = "voted"; + + /** + * Value of request parameter for false. + */ + public static final String FALSE = "false"; + + /** + * Value of request parameter for true. + */ + public static final String TRUE = "true"; + + /** + * Name of the request parameter which tells that user requested details page. + */ + public static final String DETAILED_VIEW_REQUEST="details"; + + /** * Dir in portal where the JSP view file is. */ public static final String POLLS_DIR="polls"; @@ -76,7 +103,7 @@ * @param portalName * @return Path to polls descriptor. */ - public static String getMainXmlPath (String portalName) { + public static String getMainXmlPath (final String portalName) { return portalName + File.separator + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.POLLS_DESC; } @@ -88,15 +115,29 @@ * Project id name for which the poll descriptor path will be constructed. * @return Path to project's poll descriptor. */ - public static String getProjectXmlPath(String portalName,String projectId) { + public static String getProjectXmlPath(final String portalName,final String projectId) { return portalName+File.separator+ProjectsHelper.MEMBERS_DIR+File.separator+projectId+ File.separator+ProjectsHelper.POLL_DESC; } + /** + * This method returns PollsDescriptor received from Cache. If there is no object + * in the cache it creates new one, puts it into Cache and returns the object. + * @param portalName + * Name of the portal. + * @param contentManager + * ContentManager object used for access to cms. + * @return + * PollsDescriptor object. + */ public static PollsDescriptor getDesc(final String portalName,ContentManager contentManager) { + + // Trying to get descriptor from the Cache. PollsDescriptor desc = (PollsDescriptor) ForgeHelper .getForgeManagement().getFromCache(portalName, PollsDescriptor.class.getName()); + + // If descriptor doesn't exist - create new one. if (desc==null) { desc = (PollsDescriptor) ForgeHelper.getForgeManagement() .addNodeWatcher(portalName, @@ -139,8 +180,23 @@ return POLLS_DIR + File.separator + POLLS_VOTING_JSP; } - public static Context getInfoContext (String portalName,String projectId, + /** + * This method produces conten context for JSP view file showing + * information about voting. + * @param portalName + * Just portal name. + * @param projectId + * Project Id name from which request for context is comming. + * @param cm + * ContentManager object used for access to cms. + * @param response + * JBossRenderResponse object which is used for creating urls. + * @return + * Content context for information JSP page. + */ + public static Context getInfoContext (final String portalName,final String projectId, ContentManager cm,JBossRenderResponse response) { + // If the projectId is null method returns empty DelegateContext object. if (projectId==null) { return new DelegateContext(); @@ -166,6 +222,20 @@ Map<String,Poll> values = desc.getPollsStatsForProject(projectId); // Filling the context for portlet. + /** + * Context structure: + * <polls>ONE + * <poll>MANY + * <question />ONE + * <renderUrl/>ONE + * <renderUrlDetailed />ONE + * <answers>MANY + * <votes />ONE + * <text />ONE + * </answers> + * </poll> + * </polls> + */ DelegateContext polls = ctx.next("polls"); Poll temporary=null; for (String pollId:values.keySet()) { @@ -177,15 +247,35 @@ url.setParameter("pollId",pollId); url.setParameter("details","true"); poll.put("renderUrlDetailed",url.toString()); - poll.put("positive",Long.toString(temporary.getPositive())); - poll.put("negative",Long.toString(temporary.getNegative())); + + for (String tempAnswer : temporary.getAnswers()) { + DelegateContext answers = poll.next("answers"); + answers.put("votes",temporary.getAnswerVotes(tempAnswer)); + answers.put("text",tempAnswer); + } } return ctx; - } - public static Context getDetailsContext (String portalName,String projectId,String pollId, + /** + * This method produces conten context for JSP view file showing + * detailed information about voting. + * @param portalName + * Just portal name. + * @param projectId + * Project Id name from which request for context is comming. + * @param pollId + * Id of a Poll for which the detailed information context must be produced. + * @param cm + * ContentManager object used for access to cms. + * @param response + * JBossRenderResponse object which is used for creating urls. + * @return + * Content context for detailed information JSP page. + */ + public static Context getDetailsContext (final String portalName,final String projectId,final String pollId, ContentManager cm,JBossRenderResponse response) { + // If the projectId is null method returns empty DelegateContext object. if (projectId==null) { return new DelegateContext(); @@ -209,41 +299,69 @@ // Getting the polls for given projectId. Map<String,String> values = desc.getDetailStatsForPoll(pollId); + Collection<String> answersRedundant = values.values(); - //Sumarizing negative and positive votes to separate lists. - Set<String> positiveVotes = new HashSet<String>(); - Set<String> negativeVotes = new HashSet<String>(); - for (String userId : values.keySet()) { - if (values.get(userId).equals(PollsDescriptor.POSITIVE_VOTE)) { - positiveVotes.add(userId); - } else if (values.get(userId).equals(PollsDescriptor.NEGATIVE_VOTE)) { - negativeVotes.add(userId); - } - } + // Getting possible answers + Set<String> answers = new HashSet<String>(); + answers.addAll(answersRedundant); // Filling the context for portlet. + /** + * Context structure: + * <poll>ONE + * <question />ONE + * <renderUrlVoting />ONE + * <renderUrlInfo />ONE + * <answer>MANY + * <text />ONE + * <user>MANY + * <id />ONE + * </user> + * </answer> + * </poll> + */ DelegateContext poll = ctx.next("poll"); Poll tempPoll = desc.getPoll(projectId,pollId); poll.put("question",tempPoll!=null?tempPoll.getQuestion():""); - poll.put("renderUrl",response.createRenderURL().toString()); + PortletURL url = response.createRenderURL(); + poll.put("renderUrlVoting",url.toString()); + url.setParameter(VOTED_PARAMETER_NAME,TRUE); + poll.put("renderUrlInfo",url.toString()); - Iterator posIt = positiveVotes.iterator(); - Iterator negIt = negativeVotes.iterator(); - - while (posIt.hasNext() || negIt.hasNext()) { - DelegateContext votes = poll.next("votes"); - votes.put("positiveUser",posIt.hasNext()?(String)posIt.next():""); - votes.put("negativeUser",negIt.hasNext()?(String)negIt.next():""); + for (String answer : answers) { + DelegateContext answerCtx = poll.next("answer"); + answerCtx.put("text",answer); + for (String user : values.keySet()) { + if (values.get(user).equals(answer)) { + DelegateContext userCtx = answerCtx.next("user"); + userCtx.put("id",user); + } + } + } - + return ctx; } - + /** + * This method produces conten context for JSP view file showing + * detailed information about voting. + * @param portalName + * Just portal name. + * @param projectId + * Project Id name from which request for context is comming. + * @param cm + * ContentManager object used for access to cms. + * @param response + * JBossRenderResponse object which is used for creating urls. + * @return + * Content context for detailed information JSP page. + */ public static Context getVotingContext (String portalName, String projectId, ContentManager cm,JBossRenderResponse response) { + // If the projectId is null method returns empty DelegateContext object. if (projectId==null) { return new DelegateContext(); @@ -265,18 +383,44 @@ return ctx; } + /* // Getting the polls for given projectId. Map<String,String> values = desc.getPollsInfoForProject(projectId); + Collection<String> answersRedundant = values.values(); + // Getting possible answers + Set<String> answers = new HashSet<String>(); + answers.addAll(answersRedundant);*/ + + List<Poll> pollDesc = desc.getPollsInfoForProject(projectId); + // Filling the context for portlet. + /** + * Context structure: + * <polls>ONE + * <poll>MANY + * <question>ONE + * <actionUrl>ONE + * <pollId>ONE + * <answer>MANY + * <text />ONE + * </answer> + * </poll> + * </polls> + */ DelegateContext polls = ctx.next("polls"); - for (String pollId:values.keySet()) { + for (Poll pollObj : pollDesc) { DelegateContext poll = polls.next("poll"); - poll.put("question",values.get(pollId)); + poll.put("question",pollObj.getQuestion()); poll.put("actionUrl",response.createActionURL().toString()); - poll.put("pollId",pollId); + poll.put("pollId",pollObj.getPollId()); + + for (String answer : pollObj.getAnswers()) { + DelegateContext answerCtx = poll.next("answer"); + answerCtx.put("text",answer); + } } return ctx; } Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -46,24 +46,19 @@ /** - * Name of tag in polls descriptor containing poll's value of positive votes. + * Name of tag in polls descriptor containing votes for poll's answer. */ - public static final String POSITIVE_VOTES = "positive"; + public static final String VOTES = "votes"; /** - * Name of tag in polls descriptor containing poll's value of negative votes. + * Name of tag in polls descriptor containing one of poll's answers. */ - public static final String NEGATIVE_VOTES = "negative"; + public static final String ANSWER = "answer"; /** - * String which describes positive vote. + * Name of tag in polls descriptor containing text of one of poll's answer. */ - public static final String POSITIVE_VOTE = "1"; - - /** - * String which describes negative vote. - */ - public static final String NEGATIVE_VOTE = "0"; + public static final String TEXT = "text"; /** * Name of tag in polls descriptor containing poll's question. @@ -151,14 +146,17 @@ // projects' poll descriptors. synchronizePolls(descriptors); + System.out.println ("PollsDescriptor created successfuly"); } catch (Exception e) { e.printStackTrace(); } } - public synchronized Map<String,String> getPollsInfoForProject(String projectId) { + public synchronized List<Poll> getPollsInfoForProject(String projectId) { List<Poll> polls = getProjectPolls(projectId); - Hashtable<String,String> values = null; + List<Poll> pollsCopy = new ArrayList<Poll>(polls.size()); + pollsCopy.addAll(polls); + /*Map<String,String> values = null; if (polls!=null) { values = new Hashtable<String,String>(polls.size()); for (Poll poll:polls) { @@ -168,7 +166,8 @@ } else { values = new Hashtable<String,String>(); } - return values; + return values;*/ + return pollsCopy; } public synchronized Map<String,Poll> getPollsStatsForProject(String projectId) { @@ -420,24 +419,36 @@ Node newQuestion = doc.createElement(QUESTION); Node newQuestionText = doc.createTextNode(poll.getQuestion()); newQuestion.appendChild(newQuestionText); - - Node newPositiveVotes = doc.createElement(POSITIVE_VOTES); - Node newPositiveVotesText = doc.createTextNode(Long.toString(poll.getPositive())); - newPositiveVotes.appendChild(newPositiveVotesText); - - Node newNegativeVotes = doc.createElement(NEGATIVE_VOTES); - Node newNegativeVotesText = doc.createTextNode(Long.toString(poll.getNegative())); - newNegativeVotes.appendChild(newNegativeVotesText); + newPoll.appendChild(newQuestion); + + Node newPollId = doc.createElement(POLL_ID); Node newPollIdText = doc.createTextNode(poll.getPollId()); newPollId.appendChild(newPollIdText); - newPoll.appendChild(newQuestion); - newPoll.appendChild(newPositiveVotes); - newPoll.appendChild(newNegativeVotes); newPoll.appendChild(newPollId); + + for (String answer : poll.getAnswers()) { + Node newAnswer = doc.createElement(ANSWER); + + Node newAnswerText = doc.createElement(TEXT); + Node newAnswerTextText = doc.createTextNode(answer); + newAnswerText.appendChild(newAnswerTextText); + + newAnswer.appendChild(newAnswerText); + + Node newAnswerVotes = doc.createElement(VOTES); + Node newAnswerVotesText = doc.createTextNode(poll.getAnswerVotes(answer).toString()); + newAnswerVotes.appendChild(newAnswerVotesText); + + newAnswer.appendChild(newAnswerVotes); + + + newPoll.appendChild(newAnswer); + } + newProject.appendChild(newPoll); } @@ -445,9 +456,14 @@ } } + + /** GOTOWA!!! - * Method simply just increments the positive counter value for - * given in parameters <code>projectId question</code>. + * Method simply just increments the counter value for + * <code>answer</code> for given in parameters <code>projectId</code> + * and <code>pollId</code> + * @param answer + * Answer for which user gives his vote. * @param userId * User login name. * @param pollId @@ -455,7 +471,7 @@ * @param projectId * Project id name for which is this question. */ - synchronized public boolean votePositive (String pollId,String userId, String projectId) { + synchronized public boolean vote (String answer,String pollId,String userId, String projectId) { System.out.println ("TRYING TO VOTE"); List<Poll> projectPolls = polls.get(projectId); if (projectPolls!=null) { @@ -466,59 +482,22 @@ break; } } - if (!database.votedOnPoll(pollId,userId,POSITIVE_VOTE)) { + if (!database.votedOnPoll(pollId,userId,answer)) { return false; } if (poll!=null) { System.out.println ("VOTING AND CHANGING STATUS"); // Status change to inform about counters modification. changeStatus=true; - poll.incrementPositive(); + poll.vote(answer); return true; } } return false; } + /** GOTOWA!!! - * Method simply just increments the negative counter value for - * given in parameters <code>projectId question</code>. - * - * @param userId - * User login name. - * @param pollId - * Poll's id number. - * @param projectId - * Project id name for which is this question. - */ - synchronized public boolean voteNegative (String pollId,String userId,String projectId) { - System.out.println ("TRYING TO VOTE"); - List<Poll> projectPolls = polls.get(projectId); - if (projectPolls!=null) { - Poll poll = null; - for (Poll p : projectPolls) { - if (p.getPollId().equals(pollId)) { - poll = p; - break; - } - } - if (!database.votedOnPoll(pollId,userId,NEGATIVE_VOTE)) { - return false; - } - if (poll!=null) { - System.out.println ("VOTING AND CHANGING STATUS"); - // Status change to inform about counters modification. - changeStatus=true; - poll.incrementNegative(); - return true; - } - } - return false; - } - - - - /** GOTOWA!!! * This method returns true if there is at least one poll, * connected with given in parameter <projectId>, defined. * If not method returns false. @@ -562,13 +541,12 @@ if (projectNode.getNodeType() == Node.ELEMENT_NODE && projectNode.getNodeName().equals(PROJECT)) { NodeList pollNodes = projectNode.getChildNodes(); String tempProjectId = XmlTools.getAttributeValue(projectNode,PROJECT_ID); - String tempQuestion = null; - String tempPositiveVotes = null; - String tempNegativeVotes = null; - String tempPollId = null; for (int j=0;j< pollNodes.getLength() ; j++) { pollNode = pollNodes.item(j); - if (pollNode.getNodeType()== Node.ELEMENT_NODE && pollNode.getNodeName().equals(POLL)){ + String tempQuestion = null; + Map<String,Integer> answerVotes = new Hashtable<String,Integer>(); + String tempPollId = null; + if (pollNode.getNodeType()== Node.ELEMENT_NODE && pollNode.getNodeName().equals(POLL)) { NodeList properties = pollNode.getChildNodes(); for (int k=0;k< properties.getLength() ; k++) { property = properties.item(k); @@ -576,32 +554,43 @@ String nodeTextCnt = XmlTools.unmarshallText(property); if (property.getNodeName().equals(QUESTION) && nodeTextCnt != null && !nodeTextCnt.trim().equals("")) { tempQuestion = nodeTextCnt.trim(); - } else if (property.getNodeName().equals(POSITIVE_VOTES) && nodeTextCnt !=null && !nodeTextCnt.trim().equals("")) { - tempPositiveVotes = nodeTextCnt.trim(); - } else if (property.getNodeName().equals(NEGATIVE_VOTES) && nodeTextCnt !=null && !nodeTextCnt.trim().equals("")) { - tempNegativeVotes = nodeTextCnt.trim(); + } else if (property.getNodeName().equals(ANSWER)) { + NodeList answerProperties = property.getChildNodes(); + String answerText=null; + Integer answerVotesValue=null; + for (int l=0;l<answerProperties.getLength();l++){ + Node answerProp = answerProperties.item(l); + if (answerProp.getNodeType()==Node.ELEMENT_NODE) { + String nodeContent = XmlTools.unmarshallText(answerProp); + if (answerProp.getNodeName().equals(TEXT) && nodeContent != null && !nodeContent.trim().equals("")) { + answerText = nodeContent.trim(); + } else if (answerProp.getNodeName().equals(VOTES) && nodeContent != null && !nodeContent.trim().equals("")) { + answerVotesValue = new Integer(nodeContent.trim()); + } + } + } + if (answerVotesValue!=null && answerText!=null) { + answerVotes.put(answerText,answerVotesValue); + } } else if (property.getNodeName().equals(POLL_ID) && nodeTextCnt !=null && !nodeTextCnt.trim().equals("")) { tempPollId = nodeTextCnt.trim(); } } } } - } - if (tempProjectId!=null && tempQuestion!=null && tempPositiveVotes!=null - && tempNegativeVotes!=null && tempPollId!=null) { - if (values.get(tempProjectId)==null) { - values.put(tempProjectId,new ArrayList<Poll>()); - } - values.get(tempProjectId).add( - new Poll(Long.valueOf(tempPositiveVotes), - Long.valueOf(tempNegativeVotes),tempQuestion,tempPollId)); - System.out.println ("JESTEM PRZED CREATE"); - if (!database.checkForPollFile(tempPollId)) { - System.out.println ("JESTEM W CREATE"); - database.createNewPollFile(tempPollId); - } - System.out.println ("JESTEM PO CREATE"); - } + if (tempProjectId!=null && tempQuestion!=null && tempPollId!=null && answerVotes.size()>0 ) { + if (values.get(tempProjectId)==null) { + values.put(tempProjectId,new ArrayList<Poll>()); + } + values.get(tempProjectId).add(new Poll(answerVotes,tempQuestion,tempPollId)); + System.out.println ("JESTEM PRZED CREATE"); + if (!database.checkForPollFile(tempPollId)) { + System.out.println ("JESTEM W CREATE"); + database.createNewPollFile(tempPollId); + } + System.out.println ("JESTEM PO CREATE"); + } + } } } return values; Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -67,7 +67,7 @@ new PollsDescriptor(portalName, contentManager); rw = new ResourceWatcher(contentManager); // Registering ResourceWatcher to watch for main polls descriptor file change. - rw.watchResource(PollTools.getMainXmlPath(portalName)); + //rw.watchResource(PollTools.getMainXmlPath(portalName)); // Getting the project ids names where are poll descriptors. pollDescriptors = descriptor.getPollDescriptors(portalName).keySet(); @@ -86,8 +86,13 @@ */ public Object nodeUpdate(String portalName, Object currentValue) { System.out.println ("IN UPDATE CHANGE STATUS: "+((PollsDescriptor)currentValue).hasChanged()); - if (currentValue==null || rw.checkResources() - || !checkForNewResources((PollsDescriptor)currentValue,portalName)) { + boolean resources = rw.checkResources(); + boolean descriptors = false; + if (currentValue!=null) descriptors = checkForNewResources((PollsDescriptor)currentValue,portalName); + System.out.println ("CHECKING RESOURCES: "+resources); + System.out.println ("DESCRITPROS: "+descriptors); + if (currentValue==null || resources//rw.checkResources() + || !descriptors){//checkForNewResources((PollsDescriptor)currentValue,portalName)) { System.out.println("CREATING NEW DESCRIPTOR OBJECT."); return getDescriptor(portalName); } else if (((PollsDescriptor)currentValue).hasChanged()){ Modified: trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java =================================================================== --- trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2005-12-16 23:31:19 UTC (rev 1827) +++ trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2005-12-17 01:20:01 UTC (rev 1828) @@ -29,10 +29,7 @@ */ public class PollsPortlet extends JBossPortlet { - public static final String VOTED_PARAMETER_NAME = "org.jboss.forge.polls.voted"; - public static final String FALSE = "false"; - public static final String TRUE = "true"; - public static final String DETAILED_VIEW_REQUEST="details"; + @Inject ContentManager contentManager; @@ -55,10 +52,10 @@ } else { System.out.println ("USER IS NULL"); } - String voted = request.getParameter(VOTED_PARAMETER_NAME); + String voted = request.getParameter(PollTools.VOTED_PARAMETER_NAME); Context pollContext=null; PortletRequestDispatcher rd = null; - if (voted!=null && voted.compareTo(TRUE)==0) { + if (voted!=null && voted.compareTo(PollTools.TRUE)==0) { System.out.println ("USER VOTED"); // Getting the poll context. pollContext = PollTools.getInfoContext(portalName,projectId,contentManager,response); @@ -66,8 +63,8 @@ ForgeHelper.createRepoAccessPath(portalName, PollTools .getInfoJsp())); - } else if (request.getParameter(DETAILED_VIEW_REQUEST)!=null && - request.getParameter(DETAILED_VIEW_REQUEST).compareTo(TRUE)==0 ) { + } else if (request.getParameter(PollTools.DETAILED_VIEW_REQUEST)!=null && + request.getParameter(PollTools.DETAILED_VIEW_REQUEST).compareTo(PollTools.TRUE)==0 ) { System.out.println ("DETAILED VIEW"); @@ -99,7 +96,7 @@ String pollId = request.getParameter("pollId"); PortletURL url=response.createRenderURL(); System.out.println ("HELLO I'M IN POLLPORTLET VOTE: "+vote); - String userId = request.getUser()==null?Integer.toString((int)(Math.random()*100000)):request.getUser().getUserName(); + String userId = request.getUser()==null?"user"+Integer.toString((int)(Math.random()*100000)):request.getUser().getUserName(); // Getting name of the project on which the download counter is used. String projectId = ProjectsHelper.getSelectedProjectId(request); @@ -113,24 +110,13 @@ } if (vote != null && !vote.equals("")) { - System.out.println ("USER VOTE"); - response.setRenderParameter(VOTED_PARAMETER_NAME,TRUE); - if (vote.equals(TRUE)){ - System.out.println ("VOTING POSITIVLY"); - System.out.println ("POLLID:"+pollId+" userId:"+userId+" PROJECTID: "+projectId); - if (PollTools.getDesc(portalName,contentManager).votePositive(pollId,userId,projectId)) { - System.out.println ("ZAGŁOSOWANO"); - } else { - System.out.println ("GŁOS ODRZUCONO"); - } - } else if (vote.equals(FALSE)){ - System.out.println("VOTING NEGATIVLY"); - System.out.println ("POLLID:"+pollId+" userId:"+userId+" PROJECTID: "+projectId); - if (PollTools.getDesc(portalName,contentManager).voteNegative(pollId,userId,projectId)) { - System.out.println ("ZAGŁOSOWANO"); - } else { - System.out.println ("GŁOS ODRZUCONO"); - } + response.setRenderParameter(PollTools.VOTED_PARAMETER_NAME,PollTools.TRUE); + System.out.println ("VOTING"); + System.out.println ("VOTE: "+vote+"POLLID:"+pollId+" userId:"+userId+" PROJECTID: "+projectId); + if (PollTools.getDesc(portalName,contentManager).vote(vote,pollId,userId,projectId)) { + System.out.println ("ZAGŁOSOWANO"); + } else { + System.out.println ("GŁOS ODRZUCONO"); } } else { System.out.println ("USER ZONK"); |
From: <jbo...@li...> - 2005-12-16 23:31:25
|
Author: wrzep Date: 2005-12-16 18:31:19 -0500 (Fri, 16 Dec 2005) New Revision: 1827 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: code cleanup, added info whether item/channel has or hasn't got an image http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 22:54:29 UTC (rev 1826) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 23:31:19 UTC (rev 1827) @@ -22,6 +22,7 @@ package org.jboss.forge.podcast; +import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.HashMap; @@ -156,7 +157,9 @@ if (imageProperties != null) { nodeContext.put("image", imageProperties[1]); nodeContext.next("hasImage"); - } + } else { + nodeContext.next("hasNotImage"); + } } /** @@ -199,6 +202,8 @@ if ((channelImage != null) && (channelImage.getLocation() != null)) { nodeContext.put("channel-image", channelImage.getLocation().toString()); nodeContext.next("channel-hasImage"); + } else { + nodeContext.next("channel-hasNotImage"); } } @@ -287,21 +292,13 @@ * @return Set of all items from feeds described in the given Set. */ private Set<ItemIF> getAllItems(Set<Map<String,Node>> nodes) { - /* - LogFactory lf = LogFactory.getFactory(); - //org.apache.commons.logging.log = lf.getInstance(FeedParser.class) - String[] atribs = lf.getAttributeNames(); - for (int i = 0; i < atribs.length; i++) { - System.out.println("atrib " + atribs[i] + " = " + lf.getAttribute(atribs[i])); - } - */ HashSet<ItemIF> ret = new HashSet<ItemIF>(); Node urlNode = null; String urlString = null; - for (Iterator iter = nodes.iterator(); iter.hasNext();) { + for (Iterator<Map<String,Node>> iter = nodes.iterator(); iter.hasNext();) { try { Map<String,Node> nodeProperties = (Map<String,Node>) iter.next(); @@ -311,16 +308,18 @@ if (urlString.charAt(0) == '/') { // local link urlString = serverAdress + urlString; } + URL url = new URL(urlString); + + /*TODO updating when change registred only (using http protocol) HttpURLConnection connection = (HttpURLConnection) url.openConnection(); Date date = new Date(connection.getDate()); - //System.out.println("date: " + date + " (" + urlString + ")"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("HEAD"); con.connect(); date = new Date(con.getDate()); - //System.out.println("date: " + date + " (" + urlString + ")"); + */ ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url.openStream()); ret.addAll(channel.getItems()); |
From: <jbo...@li...> - 2005-12-16 22:54:38
|
Author: wrzep Date: 2005-12-16 17:54:29 -0500 (Fri, 16 Dec 2005) New Revision: 1826 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: item and channel images parsing http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 21:09:02 UTC (rev 1825) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 22:54:29 UTC (rev 1826) @@ -132,6 +132,7 @@ * @param item ItemIF to get information from */ private void fillItemInfo(DelegateContext nodeContext, ItemIF item) { + nodeContext.put("title", item.getTitle()); nodeContext.put("description", item.getDescription()); @@ -147,6 +148,15 @@ if (link != null) { nodeContext.put("link", link.toString()); } + + // For unknown reasons there is not item.getImage() method (informa version 0.6.5) + String[] imageProperties = item.getElementValues("image", + new String[] {"title", "url", "link", "width", "height", "description"} ); + + if (imageProperties != null) { + nodeContext.put("image", imageProperties[1]); + nodeContext.next("hasImage"); + } } /** @@ -176,22 +186,19 @@ * @param item ChannelIF to get information from */ private void fillChannelInfo(DelegateContext nodeContext, ChannelIF channel) { + nodeContext.put("channel-title", channel.getTitle()); URL channelLocation = channel.getLocation(); + if (channelLocation != null) { nodeContext.put("channel-link", channelLocation.toString()); } ImageIF channelImage = channel.getImage(); - System.out.println("image: " + channelImage); - if (channelImage != null) { - System.out.println("location: " + channelImage.getLocation() + - " / link: " + channelImage.getLink()); - } - if ((channelImage != null) && (channelImage.getLocation() != null)) { nodeContext.put("channel-image", channelImage.getLocation().toString()); + nodeContext.next("channel-hasImage"); } } |
Author: wrzep Date: 2005-12-16 16:09:02 -0500 (Fri, 16 Dec 2005) New Revision: 1825 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java Log: completely rearranged code for filling context in Podcast.java to make it more understandable ;-) http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-16 16:46:56 UTC (rev 1824) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-16 21:09:02 UTC (rev 1825) @@ -104,13 +104,33 @@ for (int i = 0; i < list.getLength(); i++) { Node n = list.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { - properties.put(n.getNodeName(),XmlTools.unmarshallText(n)); + properties.put(n.getNodeName(), XmlTools.unmarshallText(n)); } } return properties; } + /** + * Reads all child nodes of the given node and returns them as a map. + * + * @param root Node from which to read the child nodes. + * @return A map binding child nodes names with appropriate nodes. + */ + public static Map<String, Node> getNodeMapFromNodeElements(Node root) { + Map<String, Node> properties = new HashMap<String, Node>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + properties.put(n.getNodeName(), n); + } + } + + return properties; + } + /** * From the given node, gets the value of the specified attribute. * @param root Node to read the attribute from. Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 16:46:56 UTC (rev 1824) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2005-12-16 21:09:02 UTC (rev 1825) @@ -125,8 +125,77 @@ allItemsArr = getAllItems(nodes).toArray(); java.util.Arrays.sort((Object[]) allItemsArr, new ItemComparator(true)); } + /** + * Fills the given context with item information + * + * @param nodeContext Context to fill + * @param item ItemIF to get information from + */ + private void fillItemInfo(DelegateContext nodeContext, ItemIF item) { + nodeContext.put("title", item.getTitle()); + nodeContext.put("description", item.getDescription()); + + Date date = item.getDate(); + if (date != null) { + DateFormat dateFormat = DateFormat.getInstance(); + dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT")); + String dateString = dateFormat.format(date) + " GMT"; + nodeContext.put("date", dateString); + } + + URL link = item.getLink(); + if (link != null) { + nodeContext.put("link", link.toString()); + } + } /** + * Fills the given context with enclosure information + * + * @param nodeContext Context to fill + * @param item ItemEnclosureIF to get information from + */ + private void fillEnclosureInfo(DelegateContext nodeContext, ItemEnclosureIF enclosure) { + URL enclosureLocation = null; + + if (enclosure != null) { + enclosureLocation = enclosure.getLocation(); + } + + if (enclosureLocation != null) { + nodeContext.put("enclosure-link", enclosureLocation.toString()); + nodeContext.put("enclosure-type", enclosure.getType()); + nodeContext.put("enclosure-size", Math.round(enclosure.getLength() / BYTES_IN_MB)); + } + } + + /** + * Fills the given context with channel information + * + * @param nodeContext Context to fill + * @param item ChannelIF to get information from + */ + private void fillChannelInfo(DelegateContext nodeContext, ChannelIF channel) { + nodeContext.put("channel-title", channel.getTitle()); + URL channelLocation = channel.getLocation(); + if (channelLocation != null) { + nodeContext.put("channel-link", channelLocation.toString()); + } + + ImageIF channelImage = channel.getImage(); + + System.out.println("image: " + channelImage); + if (channelImage != null) { + System.out.println("location: " + channelImage.getLocation() + + " / link: " + channelImage.getLink()); + } + + if ((channelImage != null) && (channelImage.getLocation() != null)) { + nodeContext.put("channel-image", channelImage.getLocation().toString()); + } + } + + /** * Fills the given context with podcast information. * * @param context Context to fill. @@ -138,61 +207,21 @@ for (int i = 0; i < iterations; i++) { ItemIF item = (ItemIF) allItemsArr[i]; DelegateContext nodeContext = new DelegateContext(); - - // filling the context with item information nodeContext.put("no", i+1); - nodeContext.put("title", item.getTitle()); - nodeContext.put("description", item.getDescription()); - Date date = item.getDate(); - if (date != null) { - DateFormat dateFormat = DateFormat.getInstance(); - dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT")); - String dateString = dateFormat.format(date) + " GMT"; - nodeContext.put("date", dateString); - } + fillItemInfo(nodeContext, item); + + fillEnclosureInfo(nodeContext, item.getEnclosure()); - URL link = item.getLink(); - if (link != null) { - nodeContext.put("link", link.toString()); - } + fillChannelInfo(nodeContext, item.getChannel()); - // filling the context with enclosure information - - ItemEnclosureIF enclosure = item.getEnclosure(); - URL enclosureLocation = null; - - if (enclosure != null) { - enclosureLocation = enclosure.getLocation(); - } - - if (enclosureLocation != null) { - nodeContext.put("enclosure-link", enclosureLocation.toString()); - nodeContext.put("enclosure-type", enclosure.getType()); - nodeContext.put("enclosure-size", Math.round(enclosure.getLength() / BYTES_IN_MB)); - } - - // filling the context with channel information - - ChannelIF channel = item.getChannel(); - - nodeContext.put("channel-title", channel.getTitle()); - URL channelLocation = channel.getLocation(); - if (channelLocation != null) { - nodeContext.put("channel-link", channelLocation.toString()); - } - - ImageIF channelImage = channel.getImage(); - if ((channelImage != null) && (channelImage.getLocation() != null)) { - nodeContext.put("channel-image", channelImage.getLocation().toString()); - } - - // TODO itunes tags + // TODO itunes tags parsing /* System.out.println("channel / element value / author = " + channel.getElementValue("itunes:author")); System.out.println("item / element value / image = " + item.getElementValue("itunes:image")); */ + context.append("podcast", nodeContext); } } 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 2005-12-16 16:46:56 UTC (rev 1824) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-16 21:09:02 UTC (rev 1825) @@ -61,10 +61,17 @@ private final static String PLUGIN_CLASS_ELEMENT = "class"; private final static String PLUGIN_WEIGHT_ELEMENT = "weight"; private final static String PLUGIN_PROPERTIES_ELEMENT = "properties"; + + private static final String MAIN_PAGE_COLLUMNS_TAG = "main-page"; + private static final String PROJECT_PAGE_COLLUMNS_TAG = "project-page"; private String portalName; private Projects projects; + + private List<String> mainPagePlugins; + private List<String> projectPagePlugins; + private List<Plugin> statusPlugins; private List<Plugin> scorePlugins; private List<Plugin> allPlugins; @@ -76,10 +83,14 @@ Status(String portalName, Node statusRoot, Node statusPluginsRoot, Node scorePluginsRoot) { this.portalName = portalName; - log = Logger.getLogger(this.getClass()); initPluginElements(); + // Get general properties + Map<String,Node> statusNodeMap = XmlTools.getNodeMapFromNodeElements(statusRoot); + mainPagePlugins = getPagePlugins(statusRoot, MAIN_PAGE_COLLUMNS_TAG); + projectPagePlugins = getPagePlugins(statusRoot, PROJECT_PAGE_COLLUMNS_TAG); + // Get the projects projects = ProjectsHelper.getProjects(portalName); @@ -96,6 +107,11 @@ allPlugins.addAll(scorePlugins); } + private List<String> getPagePlugins(Node statusRoot, String nodeTag) { + + return null; + } + private Set<Node> getPluginsNodes(Node pluginsRoot) { HashSet<String> pluginElementSet = new HashSet<String>(); pluginElementSet.add(PLUGIN_ELEMENT); |
From: <jbo...@li...> - 2005-12-16 12:54:05
|
Author: aron.gombas Date: 2005-12-16 07:53:54 -0500 (Fri, 16 Dec 2005) New Revision: 1823 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/model/ScmRepositoryChange.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java trunk/labs/kosmos/web-portlet/pages/svn_monitoring_activity_details.jsp Log: Files modified are counted on log entries Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/model/ScmRepositoryChange.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/model/ScmRepositoryChange.java 2005-12-16 12:28:50 UTC (rev 1822) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/model/ScmRepositoryChange.java 2005-12-16 12:53:54 UTC (rev 1823) @@ -15,17 +15,31 @@ * @version $Id$ */ public class ScmRepositoryChange { - /** Date of the change. */ - public Date date; - /** Author of the change. */ - public String author; + /** Date of this change. */ + private Date date; + /** Author of this change. */ + private String author; /** Change log message. */ - public String message; + private String message; + + /** Number of files added during this change. */ + private int addedFiles; + /** Number of files deleted during this change. */ + private int deletedFiles; + /** Number of files modified during this change. */ + private int modifiedFiles; + /** Number of files replaced during this change. */ + private int replacedFiles; - public ScmRepositoryChange(Date date, String author, String message) { + public ScmRepositoryChange(Date date, String author, String message, int addedFiles, int deletedFiles, int modifiedFiles, int replacedFiles) { this.date = date; this.author = author; this.message = message; + + this.addedFiles = addedFiles; + this.deletedFiles = deletedFiles; + this.modifiedFiles = modifiedFiles; + this.replacedFiles = replacedFiles; } public String getAuthor() { @@ -39,8 +53,24 @@ public String getMessage() { return message; } + + public int getAddedFiles() { + return addedFiles; + } - /** Returns its age in milliseconds. */ + public int getDeletedFiles() { + return deletedFiles; + } + + public int getModifiedFiles() { + return modifiedFiles; + } + + public int getReplacedFiles() { + return replacedFiles; + } + + /** Returns its age in milliseconds. */ public long getAge() { return new Date().getTime() - date.getTime(); } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-16 12:28:50 UTC (rev 1822) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-16 12:53:54 UTC (rev 1823) @@ -246,11 +246,6 @@ continue; } - // save basic stats - if (stats.createdDate == null) - stats.createdDate = logEntry.getDate(); - stats.commits.add(new ScmRepositoryChange(logEntry.getDate(), logEntry.getAuthor(), logEntry.getMessage()));// TODO pass "(+1 -1 0 0)" string here - // count commits-over-period and author-over-period long ageInMillis = now - logEntry.getDate().getTime(); @@ -283,27 +278,44 @@ // count file-dependent stats Map changedPaths = logEntry.getChangedPaths(); + int addedFiles = 0; + int deletedFiles = 0; + int modifiedFiles = 0; + int replacedFiles = 0; if(changedPaths.size() > 0) { for(Iterator it = changedPaths.keySet().iterator(); it.hasNext();) { SVNLogEntryPath logEntryPath = (SVNLogEntryPath)changedPaths.get(it.next()); + char type = logEntryPath.getType(); // skip copied branches - if(logEntryPath.getCopyPath() != null) + if(logEntryPath.getCopyPath() != null)// TODO can this fix the physFileNo+phyDirNo != countedDirEntryNo problem? continue; + // TODO merge this method with the 2adder stuff + switch(type) { + case 'A': addedFiles++; break; // 'add' + case 'D': deletedFiles++; break;// 'delete' + case 'M': modifiedFiles++; break; // 'modify' + case 'R': replacedFiles++; break; // 'replace' + } + // count commits-per-file Integer commitsPerCurrentFile = commitsPerFileMap.get(logEntryPath.getPath()); commitsPerFileMap.put(logEntryPath.getPath(), (commitsPerCurrentFile == null) ? 1 : commitsPerCurrentFile + 1); // count files-per-week TimeSeriesDataItem repoEntriesPerCurrentWeek = stats.repoEntriesPerWeek.getDataItem(commitWeek); - char type = logEntryPath.getType(); if(repoEntriesPerCurrentWeek != null) stats.repoEntriesPerWeek.addOrUpdate(commitWeek, repoEntriesPerCurrentWeek.getValue().intValue() + commitTypeToAdder(type)); else stats.repoEntriesPerWeek.add(commitWeek, commitTypeToAdder(type)); } } + + // save basic stats + if (stats.createdDate == null) + stats.createdDate = logEntry.getDate(); + stats.commits.add(new ScmRepositoryChange(logEntry.getDate(), logEntry.getAuthor(), logEntry.getMessage(), addedFiles, deletedFiles, modifiedFiles, replacedFiles)); } // validate Modified: trunk/labs/kosmos/web-portlet/pages/svn_monitoring_activity_details.jsp =================================================================== --- trunk/labs/kosmos/web-portlet/pages/svn_monitoring_activity_details.jsp 2005-12-16 12:28:50 UTC (rev 1822) +++ trunk/labs/kosmos/web-portlet/pages/svn_monitoring_activity_details.jsp 2005-12-16 12:53:54 UTC (rev 1823) @@ -47,7 +47,7 @@ <tr id="row-<portlet:namespace/>-0-<c:out value="${status.index}"/>" style="display: none" class="portlet-section-alternate"> </c:otherwise> </c:choose> - <td><c:out value="${commit.message}"/></td> + <td><c:out value="${commit.message}"/><br/>(+<c:out value="${commit.addedFiles}"/> -<c:out value="${commit.deletedFiles}"/> ~<c:out value="${commit.modifiedFiles}"/> /<c:out value="${commit.replacedFiles}"/>)</td> <td><c:out value="${commit.author}"/></td> <td> <c:if test="${commit.ageInDays == 0}"><span class="portlet-msg-alert"></c:if> |
From: <jbo...@li...> - 2005-12-16 12:29:05
|
Author: aron.gombas Date: 2005-12-16 07:28:50 -0500 (Fri, 16 Dec 2005) New Revision: 1822 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java Log: Barchart visualized commits-over-time Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-16 12:28:24 UTC (rev 1821) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-16 12:28:50 UTC (rev 1822) @@ -249,7 +249,7 @@ // save basic stats if (stats.createdDate == null) stats.createdDate = logEntry.getDate(); - stats.commits.add(new ScmRepositoryChange(logEntry.getDate(), logEntry.getAuthor(), logEntry.getMessage())); + stats.commits.add(new ScmRepositoryChange(logEntry.getDate(), logEntry.getAuthor(), logEntry.getMessage()));// TODO pass "(+1 -1 0 0)" string here // count commits-over-period and author-over-period long ageInMillis = now - logEntry.getDate().getTime(); @@ -377,11 +377,11 @@ stats.commitsPerFileChartUrl = storeFile(prefix + "_commits_per_file.png", new ByteArrayInputStream(out.toByteArray())); out.reset(); - ChartUtils.writeChartAsPng(ChartUtils.generateTimeChart(stats.commitsPerWeek), out); + ChartUtils.writeChartAsPng(ChartUtils.generateTimeBarChart(stats.commitsPerWeek), out); stats.commitsPerWeekChartUrl = storeFile(prefix + "_commits_per_week.png", new ByteArrayInputStream(out.toByteArray())); out.reset(); - ChartUtils.writeChartAsPng(ChartUtils.generateTimeChart(stats.repoEntriesPerWeek), out); + ChartUtils.writeChartAsPng(ChartUtils.generateTimeLineChart(stats.repoEntriesPerWeek), out); stats.repoEntriesPerWeekChartUrl = storeFile(prefix + "_files_per_week.png", new ByteArrayInputStream(out.toByteArray())); } } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-12-16 12:28:24 UTC (rev 1821) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/util/ChartUtils.java 2005-12-16 12:28:50 UTC (rev 1822) @@ -22,6 +22,7 @@ import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot; +import org.jfree.chart.renderer.xy.XYBarRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; @@ -80,18 +81,32 @@ } /** Returns the time-chart generated from the passed data. */ - public static JFreeChart generateTimeChart(TimeSeries dataset) { + public static JFreeChart generateTimeLineChart(TimeSeries dataset) { // generate chart JFreeChart chart = ChartFactory.createTimeSeriesChart(null, null, null, new TimeSeriesCollection(dataset), false, false, false); chart.setBackgroundPaint(TRANSPARENT_COLOR); + // override renderer XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer)(chart.getXYPlot().getRenderer()); renderer.setShapesVisible(true); renderer.setShape(RECTANGLE_SHAPE); return chart; - } + } + /** Returns the time-barchart generated from the passed data. */ + public static JFreeChart generateTimeBarChart(TimeSeries dataset) { + // generate chart + JFreeChart chart = generateTimeLineChart(dataset); + + // override renderer with bar type + XYBarRenderer renderer = new XYBarRenderer(0.2); + renderer.setDrawBarOutline(false); + chart.getXYPlot().setRenderer(renderer); + + return chart; + } + /** Writes the given chart to the output-stream in PNG image format. */ public static void writeChartAsPng(JFreeChart chart, OutputStream out) throws IOException { ChartUtilities.writeChartAsPNG(out, chart, CHART_RESOLUTION_X, CHART_RESOLUTION_Y, true, 0); |
From: <jbo...@li...> - 2005-12-16 12:28:30
|
Author: aron.gombas Date: 2005-12-16 07:28:24 -0500 (Fri, 16 Dec 2005) New Revision: 1821 Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties Log: Typo fixed Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-16 12:28:04 UTC (rev 1820) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-16 12:28:24 UTC (rev 1821) @@ -4,7 +4,7 @@ portlet.help=Ten portlet monitoruje projekty z <a href="http://www.sourceforge.net">SourceForge</a>-u.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w na temat cech tego portletu i jego konfiguracji. sfRelease.packageName=Paczka -sfRelease.version=Wersji +sfRelease.version=Wersja sfRelease.date=Data sfRelease.age=Wiek |
From: <jbo...@li...> - 2005-12-16 12:28:20
|
Author: aron.gombas Date: 2005-12-16 07:28:04 -0500 (Fri, 16 Dec 2005) New Revision: 1820 Modified: trunk/labs/kosmos/deploy-portlet-liferay-portal.xml Log: Cleanup Modified: trunk/labs/kosmos/deploy-portlet-liferay-portal.xml =================================================================== --- trunk/labs/kosmos/deploy-portlet-liferay-portal.xml 2005-12-14 23:13:15 UTC (rev 1819) +++ trunk/labs/kosmos/deploy-portlet-liferay-portal.xml 2005-12-16 12:28:04 UTC (rev 1820) @@ -21,11 +21,11 @@ <property name="deploy-script.name" value="portlet-deployer.xml"/> <target name="build" > - <!-- unpack --> + <!-- unpack --> <mkdir dir="${temp.dir}"/> <unzip src="kosmos-portlet.war" dest="${temp.dir}"/> - <!-- prepare dependencies --> + <!-- prepare dependencies --> <copy todir="${temp.dir}/WEB-INF"> <fileset dir="conf/${container.name}" includes="liferay-*.xml"/> </copy> @@ -63,17 +63,17 @@ } --> </style>]]></replacevalue> - </replace> + </replace> <!-- repack --> - <zip destfile="conf/${container.name}/kosmos-portlet.war" basedir="${temp.dir}"/> + <zip destfile="conf/${container.name}/kosmos-portlet.war" basedir="${temp.dir}"/> - <!-- prepare container --> + <!-- prepare container --> <delete> <fileset dir="${container.lib.dir}" includes="xml-apis.jar"/> </delete> <!-- deploy the repacked war --> - <ant antfile="${deploy-script.name}" dir="conf/${container.name}"/> + <ant antfile="${deploy-script.name}" dir="conf/${container.name}"/> </target> </project> |
From: <jbo...@li...> - 2005-12-14 23:13:19
|
Author: szimano Date: 2005-12-14 18:13:15 -0500 (Wed, 14 Dec 2005) New Revision: 1819 Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java Log: removed one stupid import Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-12-14 23:06:58 UTC (rev 1818) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-12-14 23:13:15 UTC (rev 1819) @@ -53,7 +53,6 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import sun.security.krb5.internal.crypto.n; /** * |
From: <jbo...@li...> - 2005-12-14 23:07:13
|
Author: szimano Date: 2005-12-14 18:06:58 -0500 (Wed, 14 Dec 2005) New Revision: 1818 Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/VolatileTempFileRemover.java trunk/forge/portal-extensions/forge-kosmos/src/java/org/jboss/kosmos/LabsCachedDataStore.java Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java trunk/forge/portal-extensions/forge-kosmos/conf/server/kosmos-services-servlet.xml trunk/forge/portal-extensions/forge-kosmos/project.xml trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java Log: added temp file ability for file-access (accessible by ForgeHelper) http://jira.jboss.com/jira/browse/JBLAB-575 changed Kosmos to use temp files instead of shotoku (sorry adam) minor changes in TimeTracker http://jira.jboss.com/jira/browse/JBLAB-550 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-12-14 23:06:58 UTC (rev 1818) @@ -29,6 +29,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; import java.util.Vector; import javax.activation.MimetypesFileTypeMap; @@ -51,10 +53,12 @@ import org.jboss.shotoku.ContentManager; import org.w3c.dom.Node; + /** * Common constants and functions for the forge. * * @author adamw + * @author szimano */ public class ForgeHelper { /** @@ -124,6 +128,12 @@ private static MimetypesFileTypeMap mimeTypes; private static Vector<String> tempFiles; + + public static final String FILES_PREFIX = "labsTempFile"; + + private static Set<Integer> volatileTempFiles; + + private static VolatileTempFileRemover vtfRemover; static { // Reading forge properties. @@ -134,6 +144,11 @@ .getResourceAsStream("/" + MIME_TYPE_FILENAME)); tempFiles = new Vector<String>(); + + volatileTempFiles = new TreeSet<Integer>(); + + vtfRemover = new VolatileTempFileRemover(tempFiles, volatileTempFiles); + vtfRemover.start(); } /** @@ -537,17 +552,83 @@ return mimeTypes.getContentType(fileName); } - public synchronized static TempFileDescriptor addTempFile(String fileSuffix) + /**Add temporary file. This returns you TempFileDescriptor with opened InputStream to the file and link to access it. + * Remember to close the input after use ! + * @param fileSuffix suffix of the temporary file (to get apropriate content_type) and allow deletion for not volatile files. + * @param volatileFile If true file will be deleted, if false you have to delete it on your own, by using deleteTempFile with apropriate suffix. + * @return + * @throws FileNotFoundException + * @throws IOException + */ + public synchronized static TempFileDescriptor addTempFile(String fileSuffix, boolean volatileFile) throws FileNotFoundException, IOException { - File file = File.createTempFile("labsTempFile", fileSuffix); + File file = File.createTempFile(FILES_PREFIX, fileSuffix); FileOutputStream fos = new FileOutputStream(file); + + int fileNumber = -1; + + // look for available positin in vector + for (int i = 0; (i < tempFiles.size() && i == -1); i++) { + if (tempFiles.get(i) == null) { + fileNumber = i; + } + } + + // if not found - add at the end + if (fileNumber == -1) { + tempFiles.add(file.getAbsolutePath()); + fileNumber = tempFiles.size() - 1; + } + else { + tempFiles.add(fileNumber, file.getAbsolutePath()); + } - tempFiles.add(file.getAbsolutePath()); - + if (volatileFile) { + volatileTempFiles.add(fileNumber); + } + return new TempFileDescriptor(fos, "/file-access/" + TMP_FILES_ACCESS - + (tempFiles.size() - 1)); + + fileNumber); } + /**Deletes all temp files with matching suffix. + * @param fileSuffix end of the filename(s) to delete. + * @throws IOException + */ + public synchronized static void deleteTempFile(String fileSuffix) throws IOException { + File dir = null; + + // get a file and a place where tempfiles are stored on disk + for (int i = 0; (i < tempFiles.size() && dir != null); i++) { + if (tempFiles.get(i) != null) { + File file = new File(tempFiles.get(i)); + dir = new File(file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(File.separatorChar))); + } + } + + if (dir == null) { + // there were no files - choose different way + File tmp = File.createTempFile(FILES_PREFIX, "tmpFile"); + dir = tmp.getParentFile(); + tmp.delete(); + } + + File[] allFiles = dir.listFiles(); + + for (int i = 0; i < allFiles.length; i++) { + File tmpFile = allFiles[i]; + + // if not an directory, labs temp file and matches suffix - delete it + if (!tmpFile.isDirectory() && tmpFile.getName().startsWith(FILES_PREFIX) && tmpFile.getName().endsWith(fileSuffix)) { + tmpFile.delete(); + } + } + } + + /**Get file path to a temp file for a given number. + * @param num Number of the temp file. + * @return Absolute path to temporary file. + */ public static String getFilePath(Integer num) { return tempFiles.get(num); } Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/VolatileTempFileRemover.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/VolatileTempFileRemover.java 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/VolatileTempFileRemover.java 2005-12-14 23:06:58 UTC (rev 1818) @@ -0,0 +1,73 @@ +package org.jboss.forge.common; + +import java.io.File; +import java.util.Calendar; +import java.util.Date; +import java.util.Set; +import java.util.Vector; + + +public class VolatileTempFileRemover extends Thread { + + private boolean running = false; + + private final int NUMBER_OF_HOURS = 1; + + private final int FILE_OLDER_THEN_HOURS = 24; + + private Vector<String> tempFiles; + + private Set<Integer> volatileTempFiles; + + public VolatileTempFileRemover(Vector<String> tempFiles, Set<Integer> volatileTempFiles) { + this.tempFiles = tempFiles; + this.volatileTempFiles = volatileTempFiles; + } + + @Override + public void run() { + running = true; + + while (running) { + try { + wait(NUMBER_OF_HOURS * 60 * 60 * 1000 ); + } catch (InterruptedException e) { + } + + deleteVolatileFiles(); + } + } + + private void deleteVolatileFiles() { + for (int i = 0; i < tempFiles.size(); i++) { + if (volatileTempFiles.contains(i) && tempFiles.get(i) != null) { + //this is a volatile file - check it and delete if is older then FILE_OLDER_THEN_HOURS + + File file = new File(tempFiles.get(i)); + + Calendar cal = Calendar.getInstance(); + + cal.setTimeInMillis(file.lastModified()); + + cal.add(Calendar.HOUR, FILE_OLDER_THEN_HOURS); + + Calendar calNow = Calendar.getInstance(); + + calNow.setTime(new Date()); + + if (calNow.after(cal)){ + // file is old - delete it + file.delete(); + tempFiles.add(i, null); + volatileTempFiles.remove(i); + } + } + } + } + + public void stopRemover() { + this.notify(); + running = false; + } + +} Modified: trunk/forge/portal-extensions/forge-kosmos/conf/server/kosmos-services-servlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-kosmos/conf/server/kosmos-services-servlet.xml 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-kosmos/conf/server/kosmos-services-servlet.xml 2005-12-14 23:06:58 UTC (rev 1818) @@ -4,7 +4,7 @@ <beans> <!-- CC service --> <bean id="ccService" class="hu.midori.kosmos.server.cc.CcServiceImpl"> - <property name="store" ref="shotokuCachedDataStore"/> + <property name="store" ref="labsCachedDataStore"/> </bean> <bean name="/cc-service" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="ccService"/> @@ -13,7 +13,7 @@ <!-- JIRA service --> <bean id="jiraService" class="hu.midori.kosmos.server.jira.JiraServiceImpl"> - <property name="store" ref="shotokuCachedDataStore"/> + <property name="store" ref="labsCachedDataStore"/> </bean> <bean name="/jira-service" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="jiraService"/> @@ -22,7 +22,7 @@ <!-- SF service --> <bean id="sfService" class="hu.midori.kosmos.server.sf.SfServiceImpl"> - <property name="store" ref="shotokuCachedDataStore"/> + <property name="store" ref="labsCachedDataStore"/> </bean> <bean name="/sf-service" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="sfService"/> @@ -31,16 +31,15 @@ <!-- SVN service --> <bean id="svnService" class="hu.midori.kosmos.server.svn.SvnServiceImpl"> - <property name="store" ref="shotokuCachedDataStore"/> + <property name="store" ref="labsCachedDataStore"/> </bean> <bean name="/svn-service" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="svnService"/> <property name="serviceInterface" value="hu.midori.kosmos.protocol.SvnService"/> </bean> - <!-- Shotoku cached data store --> - <bean id="shotokuCachedDataStore" class="org.jboss.kosmos.ShotokuCachedDataStore"> - <property name="fileAccessUrl" value="http://localhost:8080/file-access"/> - <property name="prefix" value="kosmos/images/kosmos-cache"/> - </bean> + <!-- Labs cached data store --> + <bean id="labsCachedDataStore" class="org.jboss.kosmos.LabsCachedDataStore"> + </bean> + </beans> \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-kosmos/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-kosmos/project.xml 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-kosmos/project.xml 2005-12-14 23:06:58 UTC (rev 1818) @@ -10,6 +10,11 @@ <id>forge-kosmos</id> <name>Forge kosmos</name> <dependencies> + <dependency> + <groupId>jboss-forge</groupId> + <artifactId>forge-common</artifactId> + <version>1.0</version> + </dependency> <dependency> <groupId>kosmos</groupId> <artifactId>kosmos-server</artifactId> Added: trunk/forge/portal-extensions/forge-kosmos/src/java/org/jboss/kosmos/LabsCachedDataStore.java =================================================================== --- trunk/forge/portal-extensions/forge-kosmos/src/java/org/jboss/kosmos/LabsCachedDataStore.java 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-kosmos/src/java/org/jboss/kosmos/LabsCachedDataStore.java 2005-12-14 23:06:58 UTC (rev 1818) @@ -0,0 +1,94 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., 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.kosmos; + +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Date; + +import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.TempFileDescriptor; + +import hu.midori.kosmos.server.CachedDataStore; + +/** + * + * @author Tomasz Szymański (tom...@jb...) + * @author <a href="mailto:aro...@mi...">Aron Gombas</a> + */ +public class LabsCachedDataStore implements CachedDataStore { + + public String storeFile(String fileName, InputStream in) throws Exception { + + ForgeHelper.deleteTempFile(getCachedWildcard(fileName)); + + TempFileDescriptor tfd = ForgeHelper.addTempFile(getCachedFileName(fileName), false); + + OutputStream out = tfd.getOut(); + + int chr = 0; + + // write the file + while ((chr = in.read()) != -1) { + out.write(chr); + } + + in.close(); + out.close(); + + return tfd.getTempFileName(); + } + + /** + * Returns the part of the filename for a cached item without the timestamp + * prefix. This is used to found the previous versions of the same cache item. + * @throws UnsupportedEncodingException + */ + private static String getCachedWildcard(String filename) + throws UnsupportedEncodingException { + return encodeFilename("", filename); + } + + /** + * Returns the local filename for a cached item, by adding a timestamp prefix + * so that browsers will not cache the item if it actually changes. + * @throws UnsupportedEncodingException + */ + private static String getCachedFileName(String filename) + throws UnsupportedEncodingException { + return encodeFilename(Long.toString(new Date().getTime()), filename); + } + + /** + * Encodes the local filename for a cached item. + * @param filename can contain any character. + * @return the filename which contain only file-system-compatible characters. + * @throws UnsupportedEncodingException + */ + private static String encodeFilename(String prefix, String filename) + throws UnsupportedEncodingException { + return URLEncoder.encode(String.format("%s_%s", prefix, filename), + "utf-8"); + } +} Modified: trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java 2005-12-14 17:58:33 UTC (rev 1817) +++ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java 2005-12-14 23:06:58 UTC (rev 1818) @@ -67,7 +67,7 @@ plot.draw(g2d, new Rectangle2D.Double(0,0,500,500),null,null,null); - TempFileDescriptor tmpD = ForgeHelper.addTempFile("timetracker.png"); + TempFileDescriptor tmpD = ForgeHelper.addTempFile("timetracker.png", true); FileOutputStream out = tmpD.getOut(); |
From: <jbo...@li...> - 2005-12-14 17:58:46
|
Author: aron.gombas Date: 2005-12-14 12:58:33 -0500 (Wed, 14 Dec 2005) New Revision: 1817 Modified: trunk/labs/kosmos/conf-portlet/jboss-portal/kosmos-pages.xml trunk/labs/kosmos/conf-portlet/jboss-portal/portlet-instances.xml trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml Log: New CC portlets added Modified: trunk/labs/kosmos/conf-portlet/jboss-portal/kosmos-pages.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/jboss-portal/kosmos-pages.xml 2005-12-14 16:55:59 UTC (rev 1816) +++ trunk/labs/kosmos/conf-portlet/jboss-portal/kosmos-pages.xml 2005-12-14 17:58:33 UTC (rev 1817) @@ -4,6 +4,30 @@ <page-name>Kosmos</page-name> <window> + <window-name>GmfCcMonitoringPortlet</window-name> + <instance-ref>kosmos-portal.GmfCcMonitoringPortlet.GmfCcMonitoringPortletInstance</instance-ref> + <default>false</default> + <region>center</region> + <height>0</height> + </window> + + <window> + <window-name>GridsphereCcMonitoringPortlet</window-name> + <instance-ref>kosmos-portal.GridsphereCcMonitoringPortlet.GridsphereCcMonitoringPortletInstance</instance-ref> + <default>false</default> + <region>center</region> + <height>0</height> + </window> + + <window> + <window-name>JavadesktopCcMonitoringPortlet</window-name> + <instance-ref>kosmos-portal.JavadesktopCcMonitoringPortlet.JavadesktopCcMonitoringPortletInstance</instance-ref> + <default>false</default> + <region>center</region> + <height>0</height> + </window> + + <window> <window-name>JBossCcMonitoring</window-name> <instance-ref>kosmos-portal.JBossCcMonitoringPortlet.JBossCcMonitoringPortletInstance</instance-ref> <default>false</default> Modified: trunk/labs/kosmos/conf-portlet/jboss-portal/portlet-instances.xml =================================================================== --- trunk/labs/kosmos/conf-portlet/jboss-portal/portlet-instances.xml 2005-12-14 16:55:59 UTC (rev 1816) +++ trunk/labs/kosmos/conf-portlet/jboss-portal/portlet-instances.xml 2005-12-14 17:58:33 UTC (rev 1817) @@ -1,6 +1,18 @@ <?xml version="1.0" standalone="yes"?> <instances> <instance> + <instance-name>GmfCcMonitoringPortletInstance</instance-name> + <component-ref>GmfCcMonitoringPortlet</component-ref> + </instance> + <instance> + <instance-name>GridsphereCcMonitoringPortletInstance</instance-name> + <component-ref>GridsphereCcMonitoringPortlet</component-ref> + </instance> + <instance> + <instance-name>JavadesktopCcMonitoringPortletInstance</instance-name> + <component-ref>JavadesktopCcMonitoringPortlet</component-ref> + </instance> + <instance> <instance-name>JBossCcMonitoringPortletInstance</instance-name> <component-ref>JBossCcMonitoringPortlet</component-ref> </instance> Modified: trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml 2005-12-14 16:55:59 UTC (rev 1816) +++ trunk/labs/kosmos/web-portlet/WEB-INF/portlet.xml 2005-12-14 17:58:33 UTC (rev 1817) @@ -3,11 +3,108 @@ 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" version="1.0"> <portlet> + <portlet-name>GridsphereCcMonitoringPortlet</portlet-name> + <portlet-class>hu.midori.kosmos.portlet.cc.CcMonitoringPortlet</portlet-class> + <init-param> + <name>monitored.resource</name> + <value>Gridsphere builds</value> + </init-param> + <init-param> + <name>service.url</name> + <value>http://localhost:8080/kosmos-server/kosmos-services/cc-service</value> + </init-param> + <init-param> + <name>monitored.urls</name> + <value> + http://www.gridsphere.org/cruisecontrol/buildresults/gridportlets, + http://www.gridsphere.org/cruisecontrol/buildresults/gridsphere + </value> + </init-param> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>HELP</portlet-mode> + <portlet-mode>VIEW</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <supported-locale>hu</supported-locale> + <resource-bundle>hu.midori.kosmos.portlet.cc.cc_monitoring</resource-bundle> + <portlet-info> + <title>CruiseControl Monitoring</title> + </portlet-info> + </portlet> + + <portlet> + <portlet-name>GmfCcMonitoringPortlet</portlet-name> + <portlet-class>hu.midori.kosmos.portlet.cc.CcMonitoringPortlet</portlet-class> + <init-param> + <name>monitored.resource</name> + <value>Gmf builds</value> + </init-param> + <init-param> + <name>service.url</name> + <value>http://localhost:8080/kosmos-server/kosmos-services/cc-service</value> + </init-param> + <init-param> + <name>monitored.urls</name> + <value> + http://gmf-dev.borland.com/cruisecontrol/buildresults/checkout, + http://gmf-dev.borland.com/cruisecontrol/buildresults/continuous, + http://gmf-dev.borland.com/cruisecontrol/buildresults/integration, + http://gmf-dev.borland.com/cruisecontrol/buildresults/nightly + </value> + </init-param> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>HELP</portlet-mode> + <portlet-mode>VIEW</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <supported-locale>hu</supported-locale> + <resource-bundle>hu.midori.kosmos.portlet.cc.cc_monitoring</resource-bundle> + <portlet-info> + <title>CruiseControl Monitoring</title> + </portlet-info> + </portlet> + + <portlet> + <portlet-name>JavadesktopCcMonitoringPortlet</portlet-name> + <portlet-class>hu.midori.kosmos.portlet.cc.CcMonitoringPortlet</portlet-class> + <init-param> + <name>monitored.resource</name> + <value>Javadesktop builds</value> + </init-param> + <init-param> + <name>service.url</name> + <value>http://localhost:8080/kosmos-server/kosmos-services/cc-service</value> + </init-param> + <init-param> + <name>monitored.urls</name> + <value> + http://javadesktop.org/cruisecontrol/buildresults/databinding-HEAD, + http://javadesktop.org/cruisecontrol/buildresults/jdnc-HEAD, + http://javadesktop.org/cruisecontrol/buildresults/swinglabs-demos-HEAD, + http://javadesktop.org/cruisecontrol/buildresults/swingx-HEAD + </value> + </init-param> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>HELP</portlet-mode> + <portlet-mode>VIEW</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <supported-locale>hu</supported-locale> + <resource-bundle>hu.midori.kosmos.portlet.cc.cc_monitoring</resource-bundle> + <portlet-info> + <title>CruiseControl Monitoring</title> + </portlet-info> + </portlet> + + <portlet> <portlet-name>JBossCcMonitoringPortlet</portlet-name> <portlet-class>hu.midori.kosmos.portlet.cc.CcMonitoringPortlet</portlet-class> <init-param> <name>monitored.resource</name> - <value>Local builds</value> + <value>JBoss builds</value> </init-param> <init-param> <name>service.url</name> |
From: <jbo...@li...> - 2005-12-14 16:56:05
|
Author: aron.gombas Date: 2005-12-14 11:55:59 -0500 (Wed, 14 Dec 2005) New Revision: 1816 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/portlet/AbstractKosmosPortlet.java Log: Dummy processAction() added to make Liferay happy Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/portlet/AbstractKosmosPortlet.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/portlet/AbstractKosmosPortlet.java 2005-12-14 16:55:30 UTC (rev 1815) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/portlet/AbstractKosmosPortlet.java 2005-12-14 16:55:59 UTC (rev 1816) @@ -6,6 +6,8 @@ */ package hu.midori.kosmos.portlet; +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; import javax.portlet.GenericPortlet; import javax.portlet.PortletConfig; import javax.portlet.PortletException; @@ -55,4 +57,14 @@ log.error("Unable to include", ex); } } + + /** + * This dummy method needs only to make Liferay happy: Liferay will call this when + * minimizing/maximizing the portlet window, and the implementation in <code>GenericPortlet</code> + * simply throws an exception. + */ + @Override + public void processAction(ActionRequest arg0, ActionResponse arg1) { + log.debug("Dummy processAction() called"); + } } |
From: <jbo...@li...> - 2005-12-14 16:55:39
|
Author: aron.gombas Date: 2005-12-14 11:55:30 -0500 (Wed, 14 Dec 2005) New Revision: 1815 Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties Log: Typos fixed in _pl res Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties 2005-12-14 11:58:14 UTC (rev 1814) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties 2005-12-14 16:55:30 UTC (rev 1815) @@ -1,7 +1,7 @@ # $Id$ portlet.title=Monitorowanie CruiseControl -portlet.help=Ten portlet monitoruje proces ci\u0105g\u0142ej integracji i kompilacji zarz\u0105dzanej przez <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>. W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w konfiguracji i dok\u0142adniejszy opis cech portletu. +portlet.help=Ten portlet monitoruje proces ci\u0105g\u0142ej integracji i kompilacji zarz\u0105dzanej przez <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w konfiguracji i dok\u0142adniejszy opis cech portletu. ccproject.name=Projekt ccproject.lastBuildLabel=Etykieta kompilacji Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-14 11:58:14 UTC (rev 1814) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-14 16:55:30 UTC (rev 1815) @@ -1,7 +1,7 @@ # $Id$ portlet.title=Monitorowanie SourceForge -portlet.help=Ten portlet monitoruje projekty z <a href="http://www.sourceforge.net">SourceForge-u</a>.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w na temat cech tego portletu i jego konfiguracji. +portlet.help=Ten portlet monitoruje projekty z <a href="http://www.sourceforge.net">SourceForge</a>-u.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w na temat cech tego portletu i jego konfiguracji. sfRelease.packageName=Paczka sfRelease.version=Wersji |
From: <jbo...@li...> - 2005-12-14 11:58:34
|
Author: aron.gombas Date: 2005-12-14 06:58:14 -0500 (Wed, 14 Dec 2005) New Revision: 1814 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/CachedDataStore.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/WebdavCachedDataStore.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/cc/CcServiceImpl.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java Log: 2 new events added to CacheDataStore iface Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/AbstractKosmosService.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -124,13 +124,34 @@ return resources.getString(key); } - + + /** + * Must be called before the first file gets stored. + * @see CachedDataStore + */ + protected void beginXxx() { + log.debug(String.format("Beginning store session....")); + store.begin(); + } + + /** + * Must be called after the last file got stored. + * @see CachedDataStore + */ + protected void endXxx() { + log.debug(String.format("Ending store session...")); + store.end(); + } + /** * Stores the passed stream to an implementation-dependent "storage". * @return the absolute URL that points to the resulted file. + * @see CachedDataStore */ protected String storeFile(String fileName, InputStream in) { try { + log.debug(String.format("Storing \"%s\"...", fileName)); + // delegate to the concrete store implementation return store.storeFile(fileName, in); } catch (Exception ex) { Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/CachedDataStore.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/CachedDataStore.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/CachedDataStore.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -17,13 +17,31 @@ * @version $Id$ */ public interface CachedDataStore { - /** TODO */ - // public void begin(); + /** + * Called before a service starts storing its files. + * A service call results in the sequence: + * <pre> + * begin() + * storeFile() + * storeFile() + * ... + * end() + * </pre> + * This can be used mostly for optimization purposes. + * Leave the implementation empty if there is no way to optimize + * "bulk storings" in your concrete implementation. + * @see #end() + */ + public void begin(); + /** + * Called after a service has stored all its files. + * @see #begin() + */ + public void end(); + /** * Stores the passed stream to an implementation-dependent "storage". * @return the absolute URL that points to the resulted file. */ - public String storeFile(String fileName, InputStream in) throws Exception;// TODO rename "store" - /** TODO */ - //public void end(); + public String storeFile(String fileName, InputStream in) throws Exception; } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/WebdavCachedDataStore.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/WebdavCachedDataStore.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/WebdavCachedDataStore.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -56,6 +56,14 @@ this.clientUrl = clientUrl; } + /** This method is left empty as there is no optimization opportunity. */ + public void begin() { + } + + /** This method is left empty as there is no optimization opportunity. */ + public void end() { + } + /** * Saves the passed stream to a WebDAV repository-based cache and returns * the absolute URL pointing to the resulted file. Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/cc/CcServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/cc/CcServiceImpl.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/cc/CcServiceImpl.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -75,6 +75,8 @@ public Object reloadData(Object key) { String url = key.toString(); List<CcProject> projects = new ArrayList<CcProject>(); + + beginXxx(); try { Document dom = ScrapingUtils.downloadHtmlDom(new URL(url)); @@ -157,6 +159,8 @@ } catch(Exception ex) { log.error("Unable to scrape", ex); } + + endXxx(); return projects; } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/jira/JiraServiceImpl.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -72,7 +72,9 @@ public Object reloadData(Object key) { String url = key.toString(); List<JiraProject> projects = new ArrayList<JiraProject>(); - + + beginXxx(); + try { // download database info connect(url); @@ -271,6 +273,8 @@ } catch(Exception ex) { log.error("Unable to scrape", ex); } + + endXxx(); return projects; } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-14 11:07:38 UTC (rev 1813) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/svn/SvnServiceImpl.java 2005-12-14 11:58:14 UTC (rev 1814) @@ -101,6 +101,8 @@ public Object reloadData(Object key) { String url = key.toString(); List<SvnRepository> repositories = new ArrayList<SvnRepository>(); + + beginXxx(); try { // get repository info @@ -126,6 +128,8 @@ } catch (Exception ex) { log.error("Unable to process the SVN repo", ex); } + + endXxx(); return repositories; } |
Author: aron.gombas Date: 2005-12-14 06:07:38 -0500 (Wed, 14 Dec 2005) New Revision: 1813 Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_pl.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_pl.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_pl.properties Log: pl resources updated Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties 2005-12-14 09:25:15 UTC (rev 1812) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_pl.properties 2005-12-14 11:07:38 UTC (rev 1813) @@ -1,37 +1,37 @@ # $Id$ portlet.title=Monitorowanie CruiseControl -portlet.help=Ten portlet monitoruje proces ciągłej integracji i kompilacji zarządzanej przez <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>. W podręczniku znajdziesz więcej szczegółów konfiguracji i dokładniejszy opis cech portletu. +portlet.help=Ten portlet monitoruje proces ci\u0105g\u0142ej integracji i kompilacji zarz\u0105dzanej przez <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>. W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w konfiguracji i dok\u0142adniejszy opis cech portletu. ccproject.name=Projekt ccproject.lastBuildLabel=Etykieta kompilacji ccproject.modifications=modyfikacje ccproject.status=Status -ccproject.successRate=Testy zakończone sukcesem -ccproject.testDetails=Szczegóły testów +ccproject.successRate=Testy zako\u0144czone sukcesem +ccproject.testDetails=Szczeg\u00f3\u0142y test\u00f3w ccproject.timestamp=Znacznik czasowy ccproject.lastBuildAge=Wiek ostatniej kompilacji ccproject.buildTime=Czas kompilacji -ccproject.testsSucceded=Testy zakończone sukcesem -ccproject.failures=Porażki -ccproject.errors=Błędy -ccproject.tests=Testów w sumie -ccproject.testsPerCategory=Testy zakończone sukcesem +ccproject.testsSucceded=Testy zako\u0144czone sukcesem +ccproject.failures=Pora\u017cki +ccproject.errors=B\u0142\u0119dy +ccproject.tests=Test\u00f3w w sumie +ccproject.testsPerCategory=Testy zako\u0144czone sukcesem legend.title=Legenda -legend.success=Pomyślne kompilacje i testy. -legend.warning=Pomyślne kompilacje z porażkami i błędami w testach. -legend.error=Niepomyślne kompilacje. -legend.buildSuccess=Pomyślna kompilacja. -legend.buildError=Niepomyślna kompilacja. -legend.testSuccess=Test zakończony sukcesem. -legend.testWarning=Test zakończony porażką. -legend.testError=Test zakończony błędem. +legend.success=Pomy\u015blne kompilacje i testy. +legend.warning=Pomy\u015blne kompilacje z pora\u017ckami i b\u0142\u0119dami w testach. +legend.error=Niepomy\u015blne kompilacje. +legend.buildSuccess=Pomy\u015blna kompilacja. +legend.buildError=Niepomy\u015blna kompilacja. +legend.testSuccess=Test zako\u0144czony sukcesem. +legend.testWarning=Test zako\u0144czony pora\u017ck\u0105. +legend.testError=Test zako\u0144czony b\u0142\u0119dem. lastupdate=Ostatnia aktualizacja -action.refresh=Odśwież +action.refresh=Od\u015bwie\u017c action.back=Wstecz -action.show=Pokaż -action.showAll=Pokaż wszystkie +action.show=Poka\u017c +action.showAll=Poka\u017c wszystkie Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_pl.properties 2005-12-14 09:25:15 UTC (rev 1812) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_pl.properties 2005-12-14 11:07:38 UTC (rev 1813) @@ -1,41 +1,41 @@ # $Id$ portlet.title=Monitorowanie systemu JIRA -portlet.help=Ten portlet monitoruje projekty w bazie danych systemu <a href="http://www.atlassian.com/software/jira">JIRA</a>.<br/>W podręczniku znajdziesz więcej szczegółów dotyczących konfiguracji i cech portletu. +portlet.help=Ten portlet monitoruje projekty w bazie danych systemu <a href="http://www.atlassian.com/software/jira">JIRA</a>.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w dotycz\u0105cych konfiguracji i cech portletu. jiraproject.name=Projekt -jiraproject.projectDetails=Szczegóły projektu +jiraproject.projectDetails=Szczeg\u00f3y projektu jiraproject.key=Klucz -jiraproject.lead=Menedżer projektu +jiraproject.lead=Mened\u017cer projektu jiraproject.assignees=Przydzieleni -jiraproject.issueDetails=Szczegóły problemu +jiraproject.issueDetails=Szczeg\u00f3\u0142y problemu jiraproject.description=Opis jiraproject.projectUrl=Strona projektu -jiraproject.issuesByStatus=Problemu według statusu +jiraproject.issuesByStatus=Problemu wed\u0142ug statusu jiraproject.openIssues=Otware jiraproject.codingInProgressIssues=Kodowanie w toku jiraproject.reopenedIssues=Otwarte ponownie -jiraproject.resolvedIssues=Rozwiązane -jiraproject.closedIssues=Zamknięte +jiraproject.resolvedIssues=Rozwi\u0105zane +jiraproject.closedIssues=Zamkni\u0119te -jiraproject.openIssuesByPriority=Otwarte problemy według priorytetu -jiraproject.openIssuesByAssignee=Otwarte problemy według przydziału +jiraproject.openIssuesByPriority=Otwarte problemy wed\u0142ug priorytetu +jiraproject.openIssuesByAssignee=Otwarte problemy wed\u0142ug przydzia\u0142u -jiraproject.blockerOpenIssues=Blokujący +jiraproject.blockerOpenIssues=Blokuj\u0105cy jiraproject.criticalOpenIssues=Krytyczny -jiraproject.majorOpenIssues=Poważny +jiraproject.majorOpenIssues=Powa\u0139\u017any jiraproject.minorOpenIssues=Nieznaczny jiraproject.trivialOpenIssues=Trywialny jiraproject.optionalOpenIssues=Opcjonalny legend.title=Legenda -legend.warning=Za dużo otwartych problemów. +legend.warning=Za du\u017co otwartych problem\u00f3w. lastupdate=Ostatnia aktualizacja. -action.refresh=Odśwież +action.refresh=Od\u015bwie\u017c action.back=Wstecz -action.show=Pokaż -action.showAll=Pokaż wszystkie +action.show=Poka\u017c +action.showAll=Poka\u017c wszystkie Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-14 09:25:15 UTC (rev 1812) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_pl.properties 2005-12-14 11:07:38 UTC (rev 1813) @@ -1,7 +1,7 @@ # $Id$ portlet.title=Monitorowanie SourceForge -portlet.help=Ten portlet monitoruje projekty z <a href="http://www.sourceforge.net">SourceForg-u</a>.<br/>W podręczniku znajdziesz więcej szczegółów na temat cech tego portletu i jego konfiguracji. +portlet.help=Ten portlet monitoruje projekty z <a href="http://www.sourceforge.net">SourceForge-u</a>.<br/>W podr\u0119czniku znajdziesz wi\u0119cej szczeg\u00f3\u0142\u00f3w na temat cech tego portletu i jego konfiguracji. sfRelease.packageName=Paczka sfRelease.version=Wersji @@ -14,5 +14,5 @@ lastupdate=Ostatnia aktualizacja -action.refresh=Odśwież +action.refresh=Od\u015bwie\u017c action.back=Wstecz Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_pl.properties 2005-12-14 09:25:15 UTC (rev 1812) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_pl.properties 2005-12-14 11:07:38 UTC (rev 1813) @@ -1,42 +1,42 @@ # $Id$ portlet.title=Monitorowanie Subversion -portlet.help=Ten portlet monitoruje repozytoria będące pod kontrolą systemu <a href="http://subversion.tigris.org/">Subversion</a>.<br/> W podręczniku znajdziesz więcej informacji na temat konfiguracji i cech tego portletu. +portlet.help=Ten portlet monitoruje repozytoria b\u0119d\u0105ce pod kontrol\u0105 systemu <a href="http://subversion.tigris.org/">Subversion</a>.<br/> W podr\u0119czniku znajdziesz wi\u0119cej informacji na temat konfiguracji i cech tego portletu. svnrepository.location=Lokacja repozytorium -svnrepository.repositoryDetails=Szczegóły repozytorium +svnrepository.repositoryDetails=Szczeg\u00f3\u0142y repozytorium svnrepository.revision=Wersja -svnrepository.revisionDetails=Szczegóły wersji -svnrepository.activityLast7Days=Aktywność w ostatnich 7 dniach -svnrepository.activityDetails=Szczegóły aktywności +svnrepository.revisionDetails=Szczeg\u00f3\u0142y wersji +svnrepository.activityLast7Days=Aktywno\u015b\u0107 w ostatnich 7 dniach +svnrepository.activityDetails=Szczeg\u00f3\u0142y aktywno\u015bci svnrepository.latestTouchDate=Data ostatniej modyfikacji svnrepository.latestTouchAge=Wiek ostatniej modyfikacji svnrepository.dirs=Foldery svnrepository.files=Pliki -svnrepository.totalRepositoryEntries=Całkowita liczba pozycji -svnrepository.totalFileSize=Suma rozmiarów plików +svnrepository.totalRepositoryEntries=Ca\u0142kowita liczba pozycji +svnrepository.totalFileSize=Suma rozmiar\u00f3w plik\u00f3w svnrepository.repositoryEntryHistory=Historia pozycji svnrepository.mostActiveCommitters=Najbardziej aktywni autorzy svnrepository.mostActiveFiles=Najbardziej aktywne pliki -svnrepository.commitsTotal=Zapisów w sumie -svnrepository.commitsToday=Zapisów dzisiaj -svnrepository.commitsLast7Days=Zapisów w ostatnich 7 dniach -svnrepository.commitsLast31Days=Zapisów w ostatnich 31 dniach -svnrepository.committersTotal=Całkowita liczba autorów -svnrepository.committersToday=Autorów dzisiaj -svnrepository.committersLast7Days=Liczba autorów w ostatnich 7 dniach -svnrepository.committersLast31Days=Liczba autorów w ostatnich 31 dniach -svnrepository.commitHistory=Historia zapisów +svnrepository.commitsTotal=Zapis\u00f3w w sumie +svnrepository.commitsToday=Zapis\u00f3w dzisiaj +svnrepository.commitsLast7Days=Zapis\u00f3w w ostatnich 7 dniach +svnrepository.commitsLast31Days=Zapis\u00f3w w ostatnich 31 dniach +svnrepository.committersTotal=Ca\u0142kowita liczba autor\u00f3w +svnrepository.committersToday=Autor\u00f3w dzisiaj +svnrepository.committersLast7Days=Liczba autor\u00f3w w ostatnich 7 dniach +svnrepository.committersLast31Days=Liczba autor\u00f3w w ostatnich 31 dniach +svnrepository.commitHistory=Historia zapis\u00f3w legend.title=Legenda legend.old=Repozytorium nieaktywne lastupdate=Ostatnia aktualizacja -action.refresh=Odśwież +action.refresh=Od\u015bwie\u017c action.back=Wstecz -action.show=Pokaż -action.showAll=Pokaż wszystkie +action.show=Poka\u017c +action.showAll=Poka\u017c wszystkie Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_pl.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_pl.properties 2005-12-14 09:25:15 UTC (rev 1812) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_pl.properties 2005-12-14 11:07:38 UTC (rev 1813) @@ -4,5 +4,5 @@ age.hours=godziny age.days=dni age.weeks=tygodnie -age.months=miesiące +age.months=miesi\u0105ce age.years=lata |
Author: szimano Date: 2005-12-14 04:25:15 -0500 (Wed, 14 Dec 2005) New Revision: 1812 Added: trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java Removed: trunk/forge/portal-extensions/forge-timetracker/src/java/org/jbosslabs/ Modified: trunk/forge/portal-extensions/forge-timetracker/src/web/WEB-INF/portlet.xml Log: moved timetracker to different package http://jira.jboss.com/jira/browse/JBLAB-550 Added: trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java 2005-12-13 22:08:01 UTC (rev 1811) +++ trunk/forge/portal-extensions/forge-timetracker/src/java/org/jboss/labs/portlet/timetracker/TimeTrackerPortlet.java 2005-12-14 09:25:15 UTC (rev 1812) @@ -0,0 +1,94 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., 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.labs.portlet.timetracker; + +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; +import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.TempFileDescriptor; +import org.jboss.forge.common.portlet.JBossLabsPortlet; +import org.jfree.chart.encoders.ImageEncoder; +import org.jfree.chart.encoders.ImageEncoderFactory; +import org.jfree.chart.plot.PiePlot; +import org.jfree.data.general.DefaultPieDataset; + +import java.awt.Graphics2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; + +import java.io.FileOutputStream; +import java.io.IOException; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.PortletSecurityException; + +public class TimeTrackerPortlet extends JBossLabsPortlet { + + @Override + protected boolean isAllowed(JBossRenderRequest rReq, JBossRenderResponse rResp) { + // TODO Auto-generated method stub + return true; + } + + @Override + protected void labsDoView(JBossRenderRequest rReq, JBossRenderResponse rResp) throws PortletException, PortletSecurityException, IOException { + DefaultPieDataset data = new DefaultPieDataset(); + data.setValue(new String("wielcy"), 23.4); + data.setValue(new String("mali"), 11.7); + + PiePlot plot = new PiePlot(data); + + ImageEncoder ie = ImageEncoderFactory.newInstance("png"); + + BufferedImage image = new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB); + + Graphics2D g2d = image.createGraphics(); + + plot.draw(g2d, new Rectangle2D.Double(0,0,500,500),null,null,null); + + TempFileDescriptor tmpD = ForgeHelper.addTempFile("timetracker.png"); + + FileOutputStream out = tmpD.getOut(); + + ie.encode(image, out); + + out.close(); + + rResp.setContentType("text/html"); + + rResp.getWriter().write("<h2>Wykres</h2>"); + + rResp.getWriter().write("<a href=\""+tmpD.getTempFileName()+"\">Plik</a><br />"); + + rResp.getWriter().write("<img src=\""+tmpD.getTempFileName()+"\" border=\"0\" />"); + + rResp.getWriter().close(); + } + + public void processAction(ActionRequest aReq, ActionResponse aResp) throws PortletException, IOException { + // TODO Auto-generated method stub + + } + +} \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-timetracker/src/web/WEB-INF/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-timetracker/src/web/WEB-INF/portlet.xml 2005-12-13 22:08:01 UTC (rev 1811) +++ trunk/forge/portal-extensions/forge-timetracker/src/web/WEB-INF/portlet.xml 2005-12-14 09:25:15 UTC (rev 1812) @@ -4,7 +4,7 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd" version="1.0"> <portlet> <portlet-name>TimetrackerPortlet</portlet-name> - <portlet-class>org.jbosslabs.portlet.ads.TimeTrackerPortlet</portlet-class> + <portlet-class>org.jboss.labs.portlet.timetracker.TimeTrackerPortlet</portlet-class> <supported-locale>en</supported-locale> <supports> <mime-type>text/html</mime-type> |
From: <jbo...@li...> - 2005-12-13 22:08:49
|
Author: szimano Date: 2005-12-13 17:08:01 -0500 (Tue, 13 Dec 2005) New Revision: 1811 Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/ trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/ trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jcommon-1.0.0.jar trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jfreechart-1.0.0.jar Log: binaries for chart generating http://jira.jboss.com/jira/browse/JBLAB-550 Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jcommon-1.0.0.jar =================================================================== (Binary files differ) Property changes on: trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jcommon-1.0.0.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jfreechart-1.0.0.jar =================================================================== (Binary files differ) Property changes on: trunk/forge/portal-extensions/binaries/maven-repo-addons/jfreechart/jars/jfreechart-1.0.0.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <jbo...@li...> - 2005-12-13 21:58:48
|
Author: szimano Date: 2005-12-13 16:58:41 -0500 (Tue, 13 Dec 2005) New Revision: 1810 Removed: trunk/forge/portal-extensions/forge-timetracker/.classpath trunk/forge/portal-extensions/forge-timetracker/.project Log: remowing eclipse rubbish form svn Deleted: trunk/forge/portal-extensions/forge-timetracker/.classpath =================================================================== --- trunk/forge/portal-extensions/forge-timetracker/.classpath 2005-12-13 21:57:03 UTC (rev 1809) +++ trunk/forge/portal-extensions/forge-timetracker/.classpath 2005-12-13 21:58:41 UTC (rev 1810) @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<classpath> - <classpathentry excluding="" kind="src" path="src/java"> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss-forge/jars/forge-common-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jfreechart/jars/jfreechart-1.0.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jfreechart/jars/jcommon-1.0.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/portlet-api/jars/portlet-api-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-jmx.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-common-lib.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-core-lib.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-portlet-lib.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/shotoku/jars/shotoku-base.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/shotoku/jars/shotoku-aop.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/velocity/jars/velocity-1.4.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/velocity/jars/velocity-dep-1.4.jar"> - </classpathentry> - <classpathentry kind="output" path="target/classes"> - </classpathentry> -</classpath> \ No newline at end of file Deleted: trunk/forge/portal-extensions/forge-timetracker/.project =================================================================== --- trunk/forge/portal-extensions/forge-timetracker/.project 2005-12-13 21:57:03 UTC (rev 1809) +++ trunk/forge/portal-extensions/forge-timetracker/.project 2005-12-13 21:58:41 UTC (rev 1810) @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<projectDescription> - <name>timetracker-portlet</name> - <comment> - </comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> \ No newline at end of file |
From: <jbo...@li...> - 2005-12-13 19:38:08
|
Author: adamw Date: 2005-12-13 14:37:52 -0500 (Tue, 13 Dec 2005) New Revision: 1808 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectoryProxy.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNodeProxy.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResource.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResourceProxy.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/DeleteOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/MultiSaveTest.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-46 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -35,6 +35,7 @@ import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.log4j.Logger; import org.apache.velocity.app.VelocityEngine; +import org.jboss.shotoku.exceptions.DeleteException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.SaveException; @@ -130,6 +131,18 @@ throws SaveException, RepositoryException; /** + * Deletes the given resources at one time. Recommended if you have multiple + * resources to delete. + * + * @param resources + * Resources to delete. + * @throws DeleteException + * @throws RepositoryException + */ + public abstract void delete(Collection<Resource> resources) + throws DeleteException, RepositoryException; + + /** * Saves the given resources at one time. Equivalent to * <code>save(Collection, String)</code>, where the collection is filled * with the two given resources. Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -22,6 +22,7 @@ package org.jboss.shotoku.svn; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -37,9 +38,7 @@ import org.jboss.shotoku.exceptions.SaveException; import org.jboss.shotoku.svn.operations.DeleteOperation; import org.jboss.shotoku.svn.operations.ResourceOperation; -import org.jboss.shotoku.svn.operations.WorkspaceMediator; import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; /** * @author Adam Warski (ad...@as...) @@ -131,6 +130,16 @@ return false; } + public void addDeleteOperation(Collection<ResourceOperation> ops) + throws DeleteException { + if (getFullName().length() <= 1) { + throw new DeleteException("Cannot delete the root directory!"); + } + + ops.add(new DeleteOperation(getId(), getFullPath(), + getParent().getFullPath())); + } + /* * INTERNAL OPS DECLARATIONS */ @@ -216,7 +225,8 @@ return svnDir; } - public void copyTo(Directory dir, String newName, String logMessage) throws CopyException { + public void copyTo(Directory dir, String newName, String logMessage) + throws CopyException { SvnDirectory svnDir; try { svnDir = getSvnDirectory(dir); @@ -244,6 +254,10 @@ throw new MoveException(e); } + if (getFullName().length() <= 1) { + throw new MoveException("Cannot move the root directory!"); + } + try { List<ResourceOperation> opsList = new ArrayList<ResourceOperation>(); @@ -260,35 +274,9 @@ } public void delete() throws DeleteException { - ISVNEditor editor = null; - try { - // Now performing the actual delete. - editor = getSvnCm().getRepository().getCommitEditor("", - new WorkspaceMediator()); - - editor.openRoot(-1); - editor.deleteEntry(getFullPath(), -1); - editor.closeDir(); - editor.closeEdit(); - - /* - * Notifying the service that a resource is deleted. Also, the - * parent directory (if it exists) is changed - it has one entry - * less. - */ - getService().addToDeleted(getId(), getFullPath()); - SvnDirectory parent = getParent(); - if (parent != null) { - getService().addDirectoryToModfied(getId(), parent.getFullPath()); - } - } catch (SVNException e) { - try { - editor.abortEdit(); - } catch (SVNException e1) { - // Can't do much here. - } - throw new DeleteException(e); - } + Set<Resource> toDelete = new HashSet<Resource>(); + toDelete.add(this); + getSvnCm().delete(toDelete); } public String getLogMessage() { Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -26,12 +26,15 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Set; import org.apache.commons.configuration.Configuration; import org.jboss.shotoku.Resource; import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.exceptions.DeleteException; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.SaveException; @@ -262,6 +265,52 @@ } @Override + public void delete(Collection<Resource> resources) + throws DeleteException { + /* + * Collection all operations to perform - duplicates are automatically + * removed as we use a Set. + */ + Set<ResourceOperation> ops = new HashSet<ResourceOperation>(); + for (Resource resource : resources) { + SvnResource svnResource = (SvnResource) resource; + svnResource.addDeleteOperation(ops); + } + + // Sorting all operations. + List<ResourceOperation> opsList = + new LinkedList<ResourceOperation>(ops); + Collections.sort(opsList); + + // Now deleting any operations that are enclosed by other operations. + if (opsList.size() >= 2) { + ResourceOperation current = null; + + for (Iterator<ResourceOperation> iter = opsList.iterator(); + iter.hasNext();) { + if (current == null) { + // First operation - this hasn't to be deleted for sure. + current = iter.next(); + } else { + ResourceOperation ro = iter.next(); + + if (current.encloses(ro)) { + iter.remove(); + } else { + current = ro; + } + } + } + } + + try { + performOperations(opsList, ""); + } catch (SVNException e) { + throw new DeleteException(e); + } + } + + @Override public void save(Collection<Resource> resources, String logMessage) throws SaveException { /* Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectoryProxy.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectoryProxy.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectoryProxy.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -26,8 +26,6 @@ import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; import org.jboss.shotoku.NodeList; -import org.jboss.shotoku.exceptions.CopyException; -import org.jboss.shotoku.exceptions.MoveException; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -113,13 +111,4 @@ checkSwitch(); currentDirectory.setIndex(name, index); } - - public void moveTo(Directory dir, String logMessage) throws MoveException { - currentDirectory.moveTo(dir, logMessage); - } - - public void copyTo(Directory dir, String newName, String logMessage) - throws CopyException { - currentDirectory.copyTo(dir, newName, logMessage); - } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNodeProxy.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNodeProxy.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNodeProxy.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -25,10 +25,7 @@ import java.io.OutputStream; import java.util.Date; -import org.jboss.shotoku.Directory; import org.jboss.shotoku.History; -import org.jboss.shotoku.exceptions.CopyException; -import org.jboss.shotoku.exceptions.MoveException; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.svn.content.NodeContent; @@ -159,13 +156,4 @@ // called from the implementation of this function in SvnNode. return currentNode.getLastModificationDate(); } - - public void moveTo(Directory dir, String logMessage) throws MoveException { - currentNode.moveTo(dir, logMessage); - } - - public void copyTo(Directory dir, String newName, String logMessage) - throws CopyException { - currentNode.copyTo(dir, newName, logMessage); - } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResource.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResource.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -25,6 +25,7 @@ import java.util.Map; import org.jboss.shotoku.Resource; +import org.jboss.shotoku.exceptions.DeleteException; import org.jboss.shotoku.svn.operations.ResourceOperation; /** @@ -34,6 +35,8 @@ public boolean checkForChanges(); public void addOperations(Collection<ResourceOperation> ops); + public void addDeleteOperation(Collection<ResourceOperation> ops) + throws DeleteException ; public void notifySaved(); public boolean switchable(); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResourceProxy.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResourceProxy.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnResourceProxy.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -25,7 +25,9 @@ import java.util.Map; import org.jboss.shotoku.Directory; +import org.jboss.shotoku.exceptions.CopyException; import org.jboss.shotoku.exceptions.DeleteException; +import org.jboss.shotoku.exceptions.MoveException; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDeleted; import org.jboss.shotoku.exceptions.SaveException; @@ -205,6 +207,11 @@ return currentResource.forceSwitch(); } + public void addDeleteOperation(Collection<ResourceOperation> ops) + throws DeleteException { + currentResource.addDeleteOperation(ops); + } + /* * Resource IMPLEMENTATION */ @@ -250,4 +257,13 @@ checkSwitch(); return currentResource.getProperties(); } + + public void moveTo(Directory dir, String logMessage) throws MoveException { + currentResource.moveTo(dir, logMessage); + } + + public void copyTo(Directory dir, String newName, String logMessage) + throws CopyException { + currentResource.copyTo(dir, newName, logMessage); + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/DeleteOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/DeleteOperation.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/DeleteOperation.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -49,4 +49,9 @@ service.addDirectoryToModfied(id, parentPath); service.addToDeleted(id, path); } + + @Override + public boolean encloses(ResourceOperation op) { + return op.path.startsWith(Tools.concatenatePaths(path, "")); + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -67,8 +67,19 @@ public int hashCode() { return path.hashCode() + opCode.hashCode(); } - + /** + * Checks if this operation encloses the given one, that is, execution + * of this operation has more effects then the given one, so + * <code>op</code> doesn't have to be executed to all. + * @param op + * @return + */ + public boolean encloses(ResourceOperation op) { + return false; + } + + /** * Executes the specific acitons represented by this object. * * @param stack Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -26,13 +26,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.tmatesoft.svn.core.SVNCommitInfo; -import org.tmatesoft.svn.core.SVNDirEntry; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -21,14 +21,10 @@ */ package org.jboss.shotoku.test; -import java.io.ByteArrayOutputStream; -import java.io.OutputStream; import java.util.Arrays; import java.util.Calendar; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import java.util.Random; import java.util.Set; import org.jboss.shotoku.ContentManager; @@ -40,9 +36,6 @@ import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.SaveException; -import org.jboss.shotoku.svn.SvnContentManager; -import org.jboss.shotoku.svn.SvnRevisionInfo; -import org.jboss.shotoku.svn.SvnTools; import org.tmatesoft.svn.core.ISVNLogEntryHandler; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNLogEntry; @@ -79,7 +72,7 @@ public static void testCm() throws RepositoryException, ResourceDoesNotExist, ResourceAlreadyExists, SaveException { ContentManager cm = ContentManager.getContentManager("shotoku-test"); - Directory d = cm.getRootDirectory(); + //Directory d = cm.getRootDirectory(); Set<Resource> toSave = new HashSet<Resource>(); /*for (Directory c : d.getDirectories()) { System.out.println(c.getName()); @@ -479,7 +472,7 @@ } } - private static void printMap(Map m) { + public static void printMap(Map m) { for (Object k : m.keySet()) { System.out.println(k + " : " + m.get(k)); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml 2005-12-13 19:37:52 UTC (rev 1808) @@ -50,4 +50,14 @@ </properties> </dependency> </dependencies> + + <build> + <sourceDirectory>src/java</sourceDirectory> + <resources> + <resource> + <directory>src/etc/</directory> + <include>**/*.xml</include> + </resource> + </resources> + </build> </project> Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -21,7 +21,12 @@ */ package org.jboss.shotoku.test; +import java.util.HashSet; +import java.util.Set; + +import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; +import org.jboss.shotoku.Resource; import org.jboss.shotoku.exceptions.DeleteException; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceAlreadyExists; @@ -34,6 +39,7 @@ */ public class AddDeleteTest extends ShotokuTest { private final static String TEST_FILE = "add-delete-test-1"; + private final static String TEST_DIR = "add-delete-test"; private void checkTestFileNotExists() { try { @@ -46,6 +52,36 @@ } } + public void testMultiDelete() throws Exception { + Directory parent = cm.getRootDirectory().newDirectory(TEST_DIR); + Directory d1 = parent.newDirectory("dir1"); + Directory d2 = parent.newDirectory("dir2"); + Node n1 = d1.newNode("node1"); + + cm.save(parent, n1, d2, ""); + + // All directories and nodes should exist. + parent = cm.getDirectory(TEST_DIR); + d1 = parent.getDirectory("dir1"); + d2 = parent.getDirectory("dir2"); + n1 = d1.getNode("node1"); + + // Deleting all and checking that they don't exist. + Set<Resource> toDelete = new HashSet<Resource>(); + toDelete.add(parent); + toDelete.add(d1); + toDelete.add(d2); + toDelete.add(n1); + cm.delete(toDelete); + + try { + cm.getNode(TEST_DIR + "/dir1/node1"); + fail(); + } catch (ResourceDoesNotExist e) { + // This should be thrown. + } + } + public void testDeleteWithoutSave() throws DeleteException, ResourceAlreadyExists, ResourceDoesNotExist { Node n = cm.getRootDirectory().newNode(TEST_FILE); Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/MultiSaveTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/MultiSaveTest.java 2005-12-13 18:29:37 UTC (rev 1807) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/MultiSaveTest.java 2005-12-13 19:37:52 UTC (rev 1808) @@ -34,7 +34,7 @@ public class MultiSaveTest extends ShotokuTest { private final static String TEST_DIR = "multi-save-test"; - public void testAddAfterDelete() throws ResourceAlreadyExists, ResourceDoesNotExist, RepositoryException, SaveException { + public void testMultiSave() throws ResourceAlreadyExists, ResourceDoesNotExist, RepositoryException, SaveException { Directory newDir1 = cm.getRootDirectory().newDirectory(TEST_DIR); Directory newDir2 = newDir1.newDirectory("a/b/c"); |
From: <jbo...@li...> - 2005-12-13 18:29:45
|
Author: wrzep Date: 2005-12-13 13:29:37 -0500 (Tue, 13 Dec 2005) New Revision: 1807 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java Log: score plugins were not processed http://jira.jboss.com/jira/browse/JBLAB-415 Pawel 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 2005-12-13 18:03:47 UTC (rev 1806) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-13 18:29:37 UTC (rev 1807) @@ -162,7 +162,7 @@ projectContext.put("name", projects.getProjectName(projectId)); projectContext.put("link", projects.getProjectLink(projectId)); - fillEntries(projectContext, statusPlugins, projectId); + fillEntries(projectContext, allPlugins, projectId); } private void fillEntries(DelegateContext projectContext, List<Plugin> plugins, String projectId) { @@ -233,6 +233,8 @@ return null; } + System.out.println("[Status] Added plugin " + pluginClassString + "."); + return plugin; } |
From: <jbo...@li...> - 2005-12-13 18:04:00
|
Author: wrzep Date: 2005-12-13 13:03:47 -0500 (Tue, 13 Dec 2005) New Revision: 1806 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.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/StatusTools.java Log: - added new helper function to XmlTools - separate xml files for status and score plugins handling http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -91,6 +91,26 @@ return properties; } + /** + * Reads all child nodes of the given node and returns them as a map. + * + * @param root Node from which to read the child nodes. + * @return A map binding child nodes names with their values. + */ + public static Map<String, String> getMapFromNodeElements(Node root) { + Map<String,String> properties = new HashMap<String,String>(); + NodeList list = root.getChildNodes(); + + for (int i = 0; i < list.getLength(); i++) { + Node n = list.item(i); + if (n.getNodeType() == Node.ELEMENT_NODE) { + properties.put(n.getNodeName(),XmlTools.unmarshallText(n)); + } + } + + return properties; + } + /** * From the given node, gets the value of the specified attribute. * @param root Node to read the attribute from. Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/KosmosStatusPlugin.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -59,12 +59,13 @@ public void init(String name, String id, Projects projects, Node propertiesNode) throws InvalidPluginPropertiesException { super.init(name, id, projects,propertiesNode); - Map<String, String> properties = XmlTools.getMapFromNodeAttributes(propertiesNode); + Map<String,String> properties = XmlTools.getMapFromNodeElements(propertiesNode); getProperties(properties); } - private void getProperties(Map<String, String> properties) throws InvalidPluginPropertiesException { - if (properties == null) { + private void getProperties(Map<String,String> properties) throws InvalidPluginPropertiesException { + + if (properties.isEmpty()) { throw new InvalidPluginPropertiesException("Missing properties for " + getName() + " plugin."); } 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 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -54,8 +54,7 @@ */ public class Status extends AbstractDescriptor { - private final static String STATUS_PLUGIN_ELEMENT = "status-plugin"; - private final static String SCORE_PLUGIN_ELEMENT = "score-plugin"; + private final static String PLUGIN_ELEMENT = "plugin"; private final static String PLUGIN_ID_ELEMENT = "id"; private final static String PLUGIN_NAME_ELEMENT = "name"; @@ -74,7 +73,7 @@ private HashSet<String> pluginsElements; - Status(String portalName, Node statusRoot, Node pluginsRoot) { + Status(String portalName, Node statusRoot, Node statusPluginsRoot, Node scorePluginsRoot) { this.portalName = portalName; @@ -85,21 +84,21 @@ projects = ProjectsHelper.getProjects(portalName); // Get the status plugins - Set<Node> statusPluginsNodes = getPluginsNodes(pluginsRoot, STATUS_PLUGIN_ELEMENT); - statusPlugins = getPlugins(statusPluginsNodes); + Set<Node> statusPluginsNodes = getPluginsNodes(statusPluginsRoot); + statusPlugins = getPlugins(statusPluginsNodes, false); // Get the score plugins - Set<Node> scorePluginsNodes = getPluginsNodes(pluginsRoot, SCORE_PLUGIN_ELEMENT); - scorePlugins = getPlugins(scorePluginsNodes); + Set<Node> scorePluginsNodes = getPluginsNodes(scorePluginsRoot); + scorePlugins = getPlugins(scorePluginsNodes, true); allPlugins = new ArrayList<Plugin>(); allPlugins.addAll(statusPlugins); allPlugins.addAll(scorePlugins); } - private Set<Node> getPluginsNodes(Node pluginsRoot, String pluginElement) { + private Set<Node> getPluginsNodes(Node pluginsRoot) { HashSet<String> pluginElementSet = new HashSet<String>(); - pluginElementSet.add(pluginElement); + pluginElementSet.add(PLUGIN_ELEMENT); Set<Node> pluginsNodes = getChildNodesSet(pluginsRoot, pluginElementSet); return pluginsNodes; @@ -163,7 +162,7 @@ projectContext.put("name", projects.getProjectName(projectId)); projectContext.put("link", projects.getProjectLink(projectId)); - fillEntries(projectContext, allPlugins, projectId);; + fillEntries(projectContext, statusPlugins, projectId); } private void fillEntries(DelegateContext projectContext, List<Plugin> plugins, String projectId) { @@ -177,13 +176,13 @@ } } - private List<Plugin> getPlugins(Set<Node> pluginsNodes) { + private List<Plugin> getPlugins(Set<Node> pluginsNodes, boolean scorePlugins) { ArrayList<Plugin> plugins = new ArrayList<Plugin>(); for (Iterator iter = pluginsNodes.iterator(); iter.hasNext();) { Node pluginNode = (Node) iter.next(); - Plugin plugin = getPlugin(pluginNode); + Plugin plugin = getPlugin(pluginNode, scorePlugins); if (plugin != null) { plugins.add(plugin); @@ -193,7 +192,7 @@ return plugins; } - private Plugin getPlugin(Node pluginNode) { + private Plugin getPlugin(Node pluginNode, boolean scorePlugin) { // Get plugin info from pluginNode String pluginType = pluginNode.getNodeName(); @@ -219,10 +218,10 @@ try { plugin = (Plugin) pluginClass.newInstance(); - if (pluginType == STATUS_PLUGIN_ELEMENT) { - ((StatusPlugin) plugin).init(pluginName, pluginId, projects, pluginSpecificPropertiesNode); - } else { /* score plugin */ + if (scorePlugin) { ((ScorePlugin) plugin).init(pluginName, pluginId, statusPlugins, pluginSpecificPropertiesNode); + } else { /* score plugin */ + ((StatusPlugin) plugin).init(pluginName, pluginId, projects, pluginSpecificPropertiesNode); } } catch (InvalidPluginPropertiesException e) { 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 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -48,14 +48,17 @@ String statusPath = StatusTools.getXmlCmPath(portalName); Node statusRoot = getRoot(cm , statusPath); - String pluginsPath = StatusTools.getXmlPluginsCmPath(portalName); - Node pluginsRoot = getRoot(cm, pluginsPath); + String statusPluginsPath = StatusTools.getXmlStatusPluginsCmPath(portalName); + Node statusPluginsRoot = getRoot(cm, statusPluginsPath); + String scorePluginsPath = StatusTools.getXmlScorePluginsCmPath(portalName); + Node scorePluginsRoot = getRoot(cm, scorePluginsPath); + /* if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals("projects"))) {}*/ - status = new Status(portalName, statusRoot, pluginsRoot); + status = new Status(portalName, statusRoot, statusPluginsRoot, scorePluginsRoot); fillContext(); 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 2005-12-13 17:04:18 UTC (rev 1805) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusTools.java 2005-12-13 18:03:47 UTC (rev 1806) @@ -14,8 +14,9 @@ /** * <code>STATUS_XML<code> - file defining the list of watched feeds */ - private final static String STATUS_XML = "status.xml"; - private final static String PLUGINS_XML = "plugins.xml"; + private final static String STATUS_XML = "status.xml"; + private final static String STATUS_PLUGINS_XML = "status-plugins.xml"; + private final static String SCORE_PLUGINS_XML = "score-plugins.xml"; /** * <code>STATUS_DIR</code> - directory in which file <code>PODCAST_XML<code> is stored. @@ -32,12 +33,12 @@ return portalName + "/" + STATUS_DIR + "/" + STATUS_XML; } - public static String getXmlPluginsCmPath(String portalName) { - return portalName + "/" + STATUS_DIR + "/" + PLUGINS_XML; + public static String getXmlStatusPluginsCmPath(String portalName) { + return portalName + "/" + STATUS_DIR + "/" + STATUS_PLUGINS_XML; } - public static String getXmlCmPath(String portalName, String filename) { - return portalName + "/" + STATUS_DIR + "/" + filename; + public static String getXmlScorePluginsCmPath(String portalName) { + return portalName + "/" + STATUS_DIR + "/" + SCORE_PLUGINS_XML; } /** |