[jboss-svn-commits] JBL Code SVN: r25320 - labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 18 06:15:00 EST 2009


Author: jchocholacek
Date: 2009-02-18 06:15:00 -0500 (Wed, 18 Feb 2009)
New Revision: 25320

Modified:
   labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/Dev.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/DevSpotlightHelper.java
Log:
Use of social group

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/Dev.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/Dev.java	2009-02-18 11:14:09 UTC (rev 25319)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/Dev.java	2009-02-18 11:15:00 UTC (rev 25320)
@@ -52,10 +52,20 @@
 	
 	private String url;
 	
+	private String id;
+	
 	public Dev() {
 
 	}
 	
+	public void setId(String id) {
+	  this.id = id;
+	}
+	
+	public String getId() {
+	  return this.id;
+	}
+	
 	public String getNameForUrl() {
 	    String tmp = null;
 	    

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/DevSpotlightHelper.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/DevSpotlightHelper.java	2009-02-18 11:14:09 UTC (rev 25319)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/DevSpotlightHelper.java	2009-02-18 11:15:00 UTC (rev 25320)
@@ -11,6 +11,24 @@
 import com.jivesoftware.community.webservices.WSUser;
 import com.jivesoftware.community.webservices.WSUserProfile;
 
+// imports (http://www.jivesoftware.com/builds/docs/clearspace/latest/RestServicesReference.html)
+import java.io.InputStream;
+
+import java.util.*;
+
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.dom4j.*;
+import org.dom4j.io.SAXReader;
+
+/**
+ * @see http://www.jivesoftware.com/builds/docs/clearspace/latest/RestServicesReference.html for
+ * Clearspace Web Services reference
+ *  
+ */
 public class DevSpotlightHelper {
 
     public static final long TITLE_FIELD_ID = 1L;
@@ -23,21 +41,16 @@
     
     public static final long URL_FIELD_ID = 9L;
     
-    /*public static final long 
-    
-    public static final long 
-    
-    public static final long 
-    public static final long*/ 
-    
     private String url;
+    private String login;
+    private String password;
     
     private Long csGroupId;
     
     public Dev getRandomDev() throws Exception {
         Dev dev = null;
         
-        ServiceLocator locator = new ServiceLocator(url, "admin", "admin");
+        ServiceLocator locator = new ServiceLocator(url, login, password);
         
         GroupService groupService = locator.getGroupService();
         WSUser[] users = groupService.getGroupMembers(csGroupId);
@@ -57,7 +70,7 @@
             List<WSUserProfile> userProfiles = profileService.getProfile(user.getID());
 
             if (userProfiles != null) {
-
+            	
                 for (WSUserProfile p : userProfiles) {  
                     long fieldId = p.getFieldID();
 
@@ -81,11 +94,66 @@
         
         return dev;
     }
+
+    /**
+     * Get random developer from a SOCIAL group
+     * 
+     * @return Dev random developer
+     * @throws Exception
+     */
+    public Dev getRandomDeveloper() throws Exception {
+      Dev dev = null;
+      
+      ServiceLocator locator = new ServiceLocator(url, login, password);
+
+      List<Dev> users = getSocialGroupMembers(csGroupId);
+
+      if (users != null && users.size()>0) {
+          dev = new Dev();
+          
+          Random random = new Random();
+          int randNum = random.nextInt(users.size());
+          
+          Dev user = users.get(randNum);
+
+          dev.setUsername(user.getUsername());
+          dev.setName(user.getName());
+          
+          ProfileService profileService = locator.getProfileService();
+          List<WSUserProfile> userProfiles = profileService.getProfile(Long.valueOf(user.getId()));
+
+          // following code is copied from older getRandomDev method
+          if (userProfiles != null) {
+            
+              for (WSUserProfile p : userProfiles) {  
+                  long fieldId = p.getFieldID();
+
+                  if (fieldId == TITLE_FIELD_ID) {
+                      dev.setTitle(p.getValue());
+                  } else if (fieldId == ADDRESS_FIELD_ID) {
+                      String address = p.getValue();
+                      for (String s : address.split(",")) {
+                          if (s.startsWith("country:")) {
+                              dev.setCountry(s.replaceFirst("country:", ""));
+                          }
+                      }
+                  } else if (fieldId == BIOGRAPHY_FIELD_ID) {
+                      dev.setBio(p.getValue());
+                  } else if (fieldId == URL_FIELD_ID) {
+                      dev.setUrl(p.getValue());
+                  }
+              }
+          }
+      }
+      
+      return dev;
+  }
     
+    
     public List<Dev> getAllDevs() throws Exception {
         List<Dev> devs = new ArrayList<Dev>();
         
-        ServiceLocator locator = new ServiceLocator(url, "admin", "admin");
+        ServiceLocator locator = new ServiceLocator(url, login, password);
         
         GroupService groupService = locator.getGroupService();
         WSUser[] users = groupService.getGroupMembers(csGroupId);
@@ -132,11 +200,57 @@
         return devs;
     }
 
+	  
+    public List<Dev> getSocialGroupMembers(long groupID) throws Exception {
+			// Use apache commons-httpclient to create the request/response
+			HttpClient client = new HttpClient();
+			Credentials defaultcreds = new UsernamePasswordCredentials(login, password);
+			client.getState().setCredentials(AuthScope.ANY, defaultcreds);
 
+			// GET a community by its ID number, which is "1".
+			GetMethod method = new GetMethod(url + "/rpc/rest/socialGroupService/members/"+groupID);
+			client.executeMethod(method);
+			InputStream in = method.getResponseBodyAsStream();
+
+			// Use dom4j to parse the response 
+			SAXReader reader = new SAXReader();
+			Document document = reader.read(in);
+
+			// get root element
+			Element rootElement = document.getRootElement();
+			// prepare list which will be returned
+			List<Dev> devList = new ArrayList<Dev>();
+			
+			// for all <return> nodes of the response
+			for (Iterator<Element> i = rootElement.elementIterator("return"); i.hasNext(); ) {
+			  Element _return = i.next();
+			  // take first <user> node
+			  Iterator<Element> iuser = _return.elementIterator("user");
+			  if (iuser.hasNext()) {
+			    Element _user = iuser.next();
+			    Dev dev = new Dev();
+			    // and parse its subnodes for user data
+			    for (Iterator<Element> iuserdata = _user.elementIterator(); iuserdata.hasNext(); ) {
+			      Element _userdata = iuserdata.next();
+			      String _ename = _userdata.getQName().getName();
+			      String _edata = _userdata.getText();
+			      if ("name".equals(_ename))
+			        dev.setUsername(_edata);
+			      else if ("username".equals(_ename))
+			        dev.setUsername(_edata);
+			      else if ("ID".equals(_ename))
+			        dev.setId(_edata);
+			    }
+			    // then add filled Dev instance to the list
+          devList.add(dev);
+			  }
+			}
+			return devList;
+	  }
+
     public String getUrl() {
         return url;
     }
-    
 
     public void setUrl(String url) {
         this.url = url;
@@ -149,6 +263,22 @@
 
     public void setCsGroupId(Long csGroupId) {
         this.csGroupId = csGroupId;
-    }    
+    }
     
+    public String getLogin() {
+    	return login;
+    }
+    
+    public void setLogin(String login) {
+    	this.login = login;
+    }
+    
+    public String getPassword() {
+    	return password;
+    }
+    
+    public void setPassword(String password) {
+    	this.password = password;
+    }
+    
 }




More information about the jboss-svn-commits mailing list