[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