[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