[jboss-svn-commits] JBL Code SVN: r6736 - in labs/jbosslabs/trunk/portal-extensions/forge-contributor: . src/java/org/jboss/forge/contributor
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 10 18:01:00 EDT 2006
Author: dejp
Date: 2006-10-10 18:00:42 -0400 (Tue, 10 Oct 2006)
New Revision: 6736
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-contributor/project.xml
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDataBean.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConMainBean.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java
labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java
Log:
changes in contributors
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/project.xml 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/project.xml 2006-10-10 22:00:42 UTC (rev 6736)
@@ -90,6 +90,24 @@
<version>1.0</version>
<jar>javax.servlet.jar</jar>
</dependency>
+
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xmlParserAPIs</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.6.0</version>
+ </dependency>
</dependencies>
<build>
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -31,7 +31,7 @@
return isUserLogged() && ConTools.hasPermission("con-admin");
}
- public boolean isProjectManager() {
+ public boolean isProjectLeadLogged() {
return ConTools.isProjectLead();
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDataBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDataBean.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDataBean.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -24,12 +24,20 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.projects.ProjectsHelper;
+
/**
* @author adamw
+ * @author dejp
* A bean holding information about one contributor.
*/
public class ConDataBean {
+
private String name;
private String projects;
private String since;
@@ -38,20 +46,30 @@
private String accepted;
private String login;
private Date sinceDate;
+ private Map<String, String> projectsInfo;
+ public ConDataBean() {
+
+ }
+
public ConDataBean(String accepted, String email,
- String name, String projects, String since, String type,
+ String name, List<String> projectsIds, String since, String type,
String login) {
- super();
+
this.accepted = accepted;
this.email = email;
this.name = name;
- this.projects = projects;
this.since = since;
this.type = type;
this.login = login;
+
+ this.projectsInfo = new LinkedHashMap<String, String>();
+ for (String projectId : projectsIds) {
+ this.projectsInfo.put(projectId, "0");
+ }
- // Trying to parse the agreement date.
+ setProjectsInfo(projectsInfo);
+
try {
sinceDate = new SimpleDateFormat("MM/dd/yy").parse(since);
} catch (ParseException e) {
@@ -59,6 +77,29 @@
sinceDate = new Date();
}
}
+
+ public ConDataBean(String accepted, String email,
+ String name, Map <String, String> projectsInfo, String since, String type,
+ String login) {
+
+ this.accepted = accepted;
+ this.email = email;
+ this.name = name;
+ this.since = since;
+ this.type = type;
+ this.login = login;
+
+ this.projectsInfo = projectsInfo;
+
+ setProjectsInfo(projectsInfo);
+
+ try {
+ sinceDate = new SimpleDateFormat("MM/dd/yy").parse(since);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ sinceDate = new Date();
+ }
+ }
/**
* Creates a string with information held in this bean in XML form.
@@ -74,7 +115,7 @@
* </agreement>
* @return A string with information held in this bean in XML form.
*/
- public String getXml() {
+ /*public String getXml() {
return
"\t<"+ConDescriptor.AGREEMENT_TAG+">\n"
+ "\t\t<id>" + name + "</id>\n"
@@ -83,10 +124,35 @@
+ "\t\t<e-mail>" + email + "</e-mail>\n"
+ "\t\t<since>" + since + "</since>\n"
+ "\t\t<type>" + type + "</type>\n"
+ //+ "\t\t<acceptedBySponsor>" + acceptedBySponsor + "</acceptedBySponsor>\n"
+ "\t\t<accepted>" + accepted + "</accepted>\n"
+ //+ "\t\t<committer>" + committer + "</committer>\n"
+ "\t</"+ConDescriptor.AGREEMENT_TAG+">\n";
+ }*/
+
+ public String getXml() {
+ StringBuilder xml = new StringBuilder();
+ xml.append("\t<"+ConDescriptor.AGREEMENT_TAG+">\n");
+ xml.append("\t\t<id>" + name + "</id>\n");
+ xml.append("\t\t<projects>\n");
+
+ for (String projectId : projectsInfo.keySet()) {
+ xml.append("\t\t\t<project>\n");
+ xml.append("\t\t\t\t<projectId>" + projectId + "</projectId>\n");
+ xml.append("\t\t\t\t<acceptedByProjectLead>" + projectsInfo.get(projectId) + "</acceptedByProjectLead>\n");
+ xml.append("\t\t\t</project>\n");
+ }
+
+ xml.append("\t\t</projects>\n");
+ xml.append("\t\t<login>" + login + "</login>\n");
+ xml.append("\t\t<e-mail>" + email + "</e-mail>\n");
+ xml.append("\t\t<since>" + since + "</since>\n");
+ xml.append("\t\t<type>" + type + "</type>\n");
+ xml.append("\t\t<accepted>" + accepted + "</accepted>\n");
+ xml.append("\t</"+ConDescriptor.AGREEMENT_TAG+">\n");
+ return xml.toString();
}
-
+
public String getName() {
return name;
}
@@ -103,6 +169,21 @@
this.projects = projects;
}
+ public void setProjects(Map<String, String> projectsInfo) {
+ Projects prjs = ProjectsHelper.getProjects(ConTools.getPortalName());
+ String projects = new String();
+
+ for (String projectId : projectsInfo.keySet()) {
+ projectsInfo.put(projectId, "0");
+
+ if (projects.length() > 0)
+ projects = projects + ", " + prjs.getProjectName(projectId);
+ else
+ projects = prjs.getProjectName(projectId);
+ }
+ this.projects = projects;
+ }
+
public String getSince() {
return since;
}
@@ -150,6 +231,13 @@
public void setSinceDate(Date sinceDate) {
this.sinceDate = sinceDate;
}
+
+ public Map<String, String> getProjectsInfo() {
+ return projectsInfo;
+ }
+
+ public void setProjectsInfo(Map<String, String> projectsInfo) {
+ this.projectsInfo = projectsInfo;
+ }
-
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -23,25 +23,21 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.jboss.forge.common.projects.XmlInputFactory;
-import org.jboss.forge.common.projects.elements.ElementDescriptor;
-import org.jboss.forge.common.projects.elements.ElementsDescriptor;
-import org.jboss.forge.common.projects.elements.PropertiesHandler;
-import org.jboss.forge.common.projects.elements.PropertiesMap;
-import org.jboss.forge.common.projects.permissions.NullPermissionsChecker;
-import org.jboss.forge.common.projects.permissions.PermissionsChecker;
-import org.jboss.portal.common.context.DelegateContext;
+import org.apache.xerces.parsers.DOMParser;
+import org.jboss.forge.common.XmlTools;
import org.jboss.shotoku.ContentManager;
+import org.w3c.dom.Document;
import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
/**
@@ -50,9 +46,21 @@
* @author adamw
*/
public class ConDescriptor {
- final static String AGREEMENT_TAG = "agreement";
- final static String AGREEMENTS_TAG = "agreements";
+ public static final String AGREEMENT_TAG = "agreement";
+ public static final String AGREEMENTS_TAG = "agreements";
+
+ public static final String ID_TAG = "id";
+ public static final String PROJECTS_TAG = "projects";
+ public static final String LOGIN_TAG = "login";
+ public static final String EMAIL_TAG = "e-mail";
+ public static final String SINCE_TAG = "since";
+ public static final String TYPE_TAG = "type";
+ public static final String ACCEPTED_TAG = "accepted";
+ public static final String PROJECT_TAG = "project";
+ public static final String PROJECT_ID_TAG = "projectId";
+ public static final String ACCEPTED_BY_PROJECT_LEAD_TAG = "acceptedByProjectLead";
+
private List<ConDataBean> data;
private List<ConDataBean> notAcceptedData;
private Set<String> takenIds;
@@ -60,6 +68,8 @@
private Map<String, List<ConDataBean>> ascSort;
private Map<String, List<ConDataBean>> descSort;
+ private List<ConDataBean> unConfirmedData;
+
/**
* Makes a copy of the given list and sorts it with respect to the given
* property.
@@ -108,8 +118,8 @@
* @param cm A contetnt manager prefixed with the contributors directory.
*/
@SuppressWarnings("unchecked")
- public ConDescriptor(ContentManager cm) {
- String xmlPath = ConServer.AGREEMENTS_XML;
+ public ConDescriptor(ContentManager cm, String xmlPath) {
+ //String xmlPath = ConServer.AGREEMENTS_XML;
data = new ArrayList<ConDataBean>();
notAcceptedData = new ArrayList<ConDataBean>();
@@ -118,17 +128,46 @@
ascSort = new HashMap<String, List<ConDataBean>>();
descSort = new HashMap<String, List<ConDataBean>>();
+ unConfirmedData = new ArrayList<ConDataBean>();
+
try {
// Filling data & notAcceptedData
- new ElementsDescriptor(
- new InputSource(
- cm.getNode(xmlPath).getContentInputStream()),
+ /*new ElementsDescriptor(
+ new InputSource(cm.getNode(xmlPath).getContentInputStream()),
XmlInputFactory.getContentReadingInstance(cm),
AGREEMENT_TAG,
- getPropertiesHandler()).collect(new Collection[] {
- data, notAcceptedData, takenIds },
- new NullPermissionsChecker());
+ getPropertiesHandler()).collect(new Collection[] {data, notAcceptedData, takenIds },
+ new NullPermissionsChecker());*/
+ DOMParser parser = new DOMParser();
+ parser.parse(new InputSource(cm.getNode(xmlPath).getContentInputStream()));
+ Document doc = parser.getDocument();
+
+ Node node = doc.getDocumentElement();
+
+ NodeList nodes = node.getChildNodes();
+
+ Node n = null;
+ for (int i = 0; i < nodes.getLength(); i++) {
+ n = nodes.item(i);
+
+ if ((n.getNodeType() == Node.ELEMENT_NODE) && (n.getNodeName().equals(AGREEMENT_TAG))) {
+
+ ConDataBean contributor = unmarshallContributor(n);
+
+ if ("1".equals(contributor.getAccepted())) {
+ data.add(contributor);
+ } else if ("0".equals(contributor.getAccepted())) {
+ notAcceptedData.add(contributor);
+ } else {
+ unConfirmedData.add(contributor);
+ }
+
+ takenIds.add(contributor.getName());
+
+ }
+ }
+
// Sorting data
ascSort.put("name", copyAndSort(data, "name", true));
ascSort.put("projects", copyAndSort(data, "projects", true));
@@ -164,7 +203,96 @@
return takenIds;
}
- private PropertiesHandler getPropertiesHandler() {
+ public ConDataBean unmarshallContributor(Node root) {
+ NodeList nodeList = root.getChildNodes();
+
+ ConDataBean contributor = new ConDataBean();
+
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node n = nodeList.item(i);
+ if (n.getNodeType() == Node.ELEMENT_NODE) {
+ String nodeName = n.getNodeName();
+
+ if (ID_TAG.equals(nodeName)) {
+ contributor.setName(XmlTools.unmarshallText(n));
+ } else if (PROJECTS_TAG.equals(nodeName)) {
+ //Map<String, String> map = unmarshallProjects(n);
+ Map<String, String> map = new LinkedHashMap<String, String>();
+ NodeList projectsList = n.getChildNodes();
+
+ String id = null;
+ String accepted = null;
+ for (int j = 0; j < projectsList.getLength(); j++) {
+
+ Node projectNode = projectsList.item(j);
+ if (PROJECT_TAG.equals(projectNode.getNodeName())) {
+ NodeList projectList = projectNode.getChildNodes();
+ for (int k = 0; k < projectList.getLength(); k++) {
+ Node tmp = projectList.item(k);
+ if (tmp.getNodeType() == Node.ELEMENT_NODE) {
+ String name = tmp.getNodeName();
+
+ if (PROJECT_ID_TAG.equals(name)) {
+ id = XmlTools.unmarshallText(tmp);
+ } else if (ACCEPTED_BY_PROJECT_LEAD_TAG.equals(name)) {
+ accepted = XmlTools.unmarshallText(tmp);
+ }
+ map.put(id, accepted);
+ }
+ }
+ }
+ }
+
+ contributor.setProjectsInfo(map);
+ contributor.setProjects(map);
+ } else if (LOGIN_TAG.equals(nodeName)) {
+ contributor.setLogin(XmlTools.unmarshallText(n));
+ } else if (EMAIL_TAG.equals(nodeName)) {
+ contributor.setEmail(XmlTools.unmarshallText(n));
+ } else if (SINCE_TAG.equals(nodeName)) {
+ contributor.setSince(XmlTools.unmarshallText(n));
+ } else if (TYPE_TAG.equals(nodeName)) {
+ contributor.setType(XmlTools.unmarshallText(n));
+ } else if (ACCEPTED_TAG.equals(nodeName)) {
+ contributor.setAccepted(XmlTools.unmarshallText(n));
+ }
+
+ }
+ }
+
+ return contributor;
+ }
+
+ public ConDataBean getUnconfirmedContributor(String code) {
+
+ for (ConDataBean contributor : unConfirmedData) {
+ if (contributor.getName().equals(code)) {
+ return contributor;
+ }
+ }
+
+ return null;
+
+ }
+
+ public List<ConDataBean> getNotAcceptedByLeadData(Set<String> projectIds) {
+
+ List<ConDataBean> contributors = new ArrayList<ConDataBean>();
+
+ for (ConDataBean contributor : notAcceptedData) {
+ Map<String, String> projectInfo = contributor.getProjectsInfo();
+ for (String projectId : projectIds) {
+ if (projectInfo.containsValue(projectId)) {
+ contributors.add(contributor);
+ break;
+ }
+ }
+ }
+
+ return contributors;
+ }
+
+ /*private PropertiesHandler getPropertiesHandler() {
return new PropertiesHandler() {
public void fillContext(PropertiesMap properties, DelegateContext context,
PermissionsChecker pc) {
@@ -188,13 +316,16 @@
properties.get("type").getFirstValue(),
properties.get("login").getFirstValue());
+
+
if ("1".equals(properties.get("accepted").getFirstValue()))
collections[0].add(dataBean);
- if ("0".equals(properties.get("accepted").getFirstValue()))
+ if ("0".equals(properties.get("accepted").getFcollectionsirstValue()))
collections[1].add(dataBean);
collections[2].add(properties.get("id").getFirstValue());
}
};
- }
+ }*/
+
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConMainBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConMainBean.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConMainBean.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -23,6 +23,8 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIData;
@@ -39,7 +41,7 @@
public class ConMainBean {
private String name;
private String email;
- private String projects;
+ private List<String> projects;
private String type;
private String searchName;
@@ -55,9 +57,11 @@
private UIData dataTable;
private UIData adminDataTable;
+ private UIData leadDataTable;
+
private ConServer server;
- private void addMessage(String message) {
+ private void addMessage(String message) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(message));
}
@@ -66,29 +70,47 @@
* ACTION HANDLERS
*/
+ public String acceptByProjectLead() {
+ ConDataBean conDataBean = (ConDataBean) adminDataTable.getRowData();
+ if (getServer().acceptByProjectLead(conDataBean)) {
+ getServer().getDesc(ConTools.getPortalName()).getNotAcceptedData().remove(conDataBean);
+ addMessage(getServer().getMessages().getString("applicationAccepted"));
+ } else {
+ addMessage(getServer().getMessages().getString("commitError"));
+ }
+ getServer().resetDesc(ConTools.getPortalName());
+ return null;
+ }
+
public String accept() {
- if (getServer().accept((ConDataBean) adminDataTable.getRowData()))
+ ConDataBean conDataBean = (ConDataBean) adminDataTable.getRowData();
+ if (getServer().accept(conDataBean)) {
+ getServer().getDesc(ConTools.getPortalName()).getNotAcceptedData().remove(conDataBean);
addMessage(getServer().getMessages().getString("applicationAccepted"));
- else
+ } else {
addMessage(getServer().getMessages().getString("commitError"));
-
+ }
getServer().resetDesc(ConTools.getPortalName());
return null;
}
public String delete() {
- if (getServer().delete((ConDataBean) adminDataTable.getRowData()))
+ ConDataBean conDataBean = (ConDataBean) adminDataTable.getRowData();
+ if (getServer().delete(conDataBean)) {
+ //getServer().getDesc(ConTools.getPortalName()).getNotAcceptedData().remove(conDataBean);
addMessage(getServer().getMessages().getString("applicationDeleted"));
- else
+ } else {
addMessage(getServer().getMessages().getString("commitError"));
-
+ }
getServer().resetDesc(ConTools.getPortalName());
return null;
}
public String processApplication() {
- String error = getServer().processApplication(name, email, type,
- projects, ConTools.getRemoteUser());
+ String error = null;
+
+ error = getServer().processApplication(name, email, type,
+ projects, ConTools.getRemoteUser());
if (error == null) {
addMessage(getServer().getMessages().getString("applicationAdded"));
@@ -165,8 +187,10 @@
@SuppressWarnings("unchecked")
public boolean getConfirmation() {
+
String code = (String) ConTools.getExternalContext().
getRequestParameterMap().get("confirm");
+
if (code != null) {
if (Constants.TRUE_VALUE.equals(ConTools.getExternalContext().
getSessionMap().get(ALREADY_CONFIRMED_KEY)))
@@ -210,11 +234,11 @@
this.name = name;
}
- public String getProjects() {
+ public List<String> getProjects() {
return projects;
}
- public void setProjects(String projects) {
+ public void setProjects(List<String> projects) {
this.projects = projects;
}
@@ -289,4 +313,29 @@
public void setSearchProjects(String searchProjects) {
this.searchProjects = searchProjects;
}
+
+ public UIData getLeadDataTable() {
+ return leadDataTable;
+ }
+
+ public void setLeadDataTable(UIData leadDataTable) {
+ this.leadDataTable = leadDataTable;
+ }
+
+ /*public boolean isCommitter() {
+ return committer;
+ }
+
+ public void setCommitter(boolean committer) {
+ this.committer = committer;
+ }*/
+
+ public Map<String, String> getProjectsNameId() {
+ return server.getProjectsNameId();
+ }
+
+ public List<ConDataBean> getLeadData() {
+ Set<String> projectIds = ConTools.getLeadProjectIds();
+ return getServer().getDesc(ConTools.getPortalName()).getNotAcceptedByLeadData(projectIds);
+ }
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -27,10 +27,11 @@
import java.util.Map;
public class ConNodeWatcher extends ShotokuResourceWatcher<String, ConDescriptor> {
- private ConDescriptor getDesc(String key) {
- return new ConDescriptor(getContentManager(key));
+
+ private ConDescriptor getDesc(String key) {
+ return new ConDescriptor(getContentManager(key), ConServer.AGREEMENTS_XML);
}
-
+
public ConDescriptor init(String key) {
addWatchedPath(key, ConServer.AGREEMENTS_XML);
addWatchedPath(key, ConServer.UNCONFIRMED_XML);
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -25,25 +25,23 @@
import java.text.MessageFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.Random;
import java.util.ResourceBundle;
+import java.util.Set;
-import javax.portlet.PortletURL;
-
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.projects.XmlInputFactory;
-import org.jboss.forge.common.projects.elements.ElementDescriptor;
-import org.jboss.forge.common.projects.elements.ElementsDescriptor;
-import org.jboss.forge.common.projects.elements.PropertiesHandlerDefault;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.soa.LabsServices;
+import org.jboss.portal.api.node.PortalNodeURL;
import org.jboss.shotoku.ContentManager;
import org.jboss.shotoku.Node;
+import org.jboss.shotoku.aop.CacheItem;
import org.jboss.shotoku.aop.Inject;
-import org.jboss.shotoku.aop.CacheItem;
import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
import org.jboss.shotoku.exceptions.SaveException;
-import org.jboss.portal.api.node.PortalNodeURL;
-import org.xml.sax.InputSource;
/**
* @author adamw
@@ -110,7 +108,7 @@
ForgeHelper.getForgeManagement().forceNodeUpdate(portalName,
ConServer.class.getName());
}
-
+
private boolean checkString(String s) {
return !((s == null) || (s.trim().equals("")));
}
@@ -121,7 +119,68 @@
formatter.applyPattern(messages.getString(key));
return formatter.format(arguments);
}
+
+ synchronized boolean acceptByProjectLead(ConDataBean contributor) {
+ String oldXml = contributor.getXml();
+
+ Set<String> projectIds = ConTools.getLeadProjectIds();
+ Map<String, String> projectsInfo = contributor.getProjectsInfo();
+ for (String projectId : projectsInfo.keySet()) {
+ if (projectIds.contains(projectId)) {
+ if ("0".equals(projectsInfo.get(projectId))) {
+ projectsInfo.put(projectId, "1");
+ }
+ }
+ }
+
+ contributor.setProjectsInfo(projectsInfo);
+ String newXml = contributor.getXml();
+
+ try {
+ Node confirmed = cm.getNode(getConfirmedFilePath());
+ String content = confirmed.getContent();
+
+ String newContent = ForgeHelper.replace(content,
+ oldXml, newXml);
+
+ confirmed.setContent(newContent);
+ confirmed.save("New application accepted");
+
+
+ if (!projectsInfo.containsValue("0")) {
+ PortalNodeURL url = ConTools.createRenderURL();
+ String adminURL = ConTools.getBaseServerAddress() +
+ url.toString();
+
+ // sending email to admin
+ ForgeHelper.postMail(
+ ForgeHelper.getProperties().getProperty("contribadmin"),
+ messages.getString("adminMailSubject"),
+ getFormattedMessage("adminMailText",
+ new Object[] { newXml, adminURL }),
+ "labs-admin at jboss.com");
+ }
+
+ org.jboss.portal.identity.User projectLead = ConTools.getUser();
+ String projectLeadEmail = projectLead.getRealEmail();
+
+ // email to project lead
+ ForgeHelper.postMail(
+ projectLeadEmail,
+ messages.getString("acceptedMailSubject"),
+ getFormattedMessage("acceptedMailTextAdmin",
+ new Object[] { contributor.getName(),
+ contributor.getEmail(), contributor.getType(),
+ contributor.getLogin(), contributor.getProjects() }),
+ "labs-robot at labs.jboss.com");
+
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
/**
* Accepts the given application.
* @param dataBean Application to accept.
@@ -222,14 +281,19 @@
String confirmedXmlFilePath = getConfirmedFilePath();
// Looking for agreement that is to be confirmed.
- ElementDescriptor toConfirm;
+ //ElementDescriptor toConfirm;
+ ConDataBean toConfirm;
try {
- toConfirm = new ElementsDescriptor(
+ ConDescriptor desc = new ConDescriptor(cm, UNCONFIRMED_XML);
+ toConfirm = desc.getUnconfirmedContributor(code);
+
+ /*toConfirm = new ElementsDescriptor(
new InputSource(cm.getNode(
unconfirmedXmlFilePath).getContentInputStream()),
XmlInputFactory.getContentReadingInstance(cm),
ConDescriptor.AGREEMENT_TAG,
- new PropertiesHandlerDefault()).getElementWithId(code);
+ new PropertiesHandlerDefault()).getElementWithId(code);*/
+
} catch (Exception e) {
return messages.getString("unableToConfirm");
}
@@ -239,7 +303,18 @@
// Generating xml representations of the agreement - before
// and after confirmation.
- String oldXml = new ConDataBean(
+ String oldXml = toConfirm.getXml();
+ System.out.println(oldXml);
+ String newXml = new ConDataBean("0",
+ toConfirm.getEmail(),
+ toConfirm.getAccepted(),
+ toConfirm.getProjectsInfo(),
+ toConfirm.getSince(),
+ toConfirm.getType(),
+ toConfirm.getLogin()).getXml();
+ System.out.println(newXml);
+
+ /*String oldXml = new ConDataBean(
toConfirm.getProperty("accepted"),
toConfirm.getProperty("e-mail"),
code,
@@ -253,7 +328,7 @@
toConfirm.getProperty("name"),
toConfirm.getProperty("since"),
toConfirm.getProperty("type"),
- toConfirm.getProperty("login")).getXml();
+ toConfirm.getProperty("login")).getXml();*/
// Writing changes to xml files.
try {
@@ -281,13 +356,24 @@
String adminURL = ConTools.getBaseServerAddress() +
url.toString();
- // Sending an email to the admin.
- ForgeHelper.postMail(
- ForgeHelper.getProperties().getProperty("contribadmin"),
- messages.getString("adminMailSubject"),
- getFormattedMessage("adminMailText",
- new Object[] { newXml, adminURL }),
- "labs-admin at jboss.com");
+ for (String projectId : toConfirm.getProjectsInfo().keySet()) {
+ // TODO Retrieve project lead username
+ String username = "";
+
+ org.jboss.portal.identity.User projectLead =
+ LabsServices.getPrimatesService().getUser(username);
+
+ // Sending an email to project lead
+ if (projectLead != null && projectLead.getRealEmail() != null) {
+ ForgeHelper.postMail(
+ projectLead.getRealEmail(),
+ messages.getString("adminMailSubject"),
+ getFormattedMessage("adminMailText",
+ new Object[] { newXml, adminURL }),
+ "labs-admin at jboss.com");
+ }
+ }
+
} catch (Exception e) {
return messages.getString("unableToConfirm");
}
@@ -316,11 +402,10 @@
* @return An error string or null, if no error occured.
*/
synchronized String processApplication(String name, String email, String type,
- String projects, String username) {
- if ((!checkString(name)) ||
- (!checkString(email)) ||
- (!checkString(type)) ||
- (!checkString(projects)))
+ List<String> projects, String username) {
+
+ if ((!checkString(name)) || (!checkString(email)) ||
+ (!checkString(type)) || (projects.isEmpty()))
return messages.getString("notAllFieldsFilledError");
String portalName = ConTools.getPortalName();
@@ -329,7 +414,7 @@
return messages.getString("nameAlreadyExistsError");
// Getting the "since" date, that is, the current date.
- String since = DateFormat.getDateInstance(DateFormat.SHORT).format(
+ String since = DateFormat.getDateInstance(DateFormat.SHORT, currentLocale).format(
new Date(Calendar.getInstance().getTimeInMillis()));
// Getting the confirmation code.
@@ -368,6 +453,7 @@
getFormattedMessage("confirmMailText",
new Object[] { name, confirmationURL }),
"forge-robot at labs.jboss.com");
+
} catch (Exception e) {
e.printStackTrace();
return messages.getString("unableToAdd");
@@ -375,4 +461,9 @@
return null;
}
+
+ Map<String, String> getProjectsNameId() {
+
+ return ProjectsHelper.getProjectsNameId(ConTools.getPortalName());
+ }
}
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2006-10-10 20:33:02 UTC (rev 6735)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConTools.java 2006-10-10 22:00:42 UTC (rev 6736)
@@ -145,7 +145,7 @@
return u;
}
- public static Set<String> getLeadProjectsIds() {
+ public static Set<String> getLeadProjectIds() {
Set<String> projectIds = ProjectsHelper.getProjectIds(ConTools.getPortalName());
More information about the jboss-svn-commits
mailing list