[jboss-svn-commits] JBL Code SVN: r32517 - labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 12 10:06:27 EDT 2010


Author: lkrzyzanek
Date: 2010-04-12 10:06:26 -0400 (Mon, 12 Apr 2010)
New Revision: 32517

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/MemberFilter.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/RHMemberFilter.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/TopExtMembersWidget.java
Log:
Added implementation of filtering members to be only non RH.

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/MemberFilter.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/MemberFilter.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/MemberFilter.java	2010-04-12 14:06:26 UTC (rev 32517)
@@ -0,0 +1,41 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A 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, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.sbs.plugin.topextmembers;
+
+import com.jivesoftware.base.User;
+
+/**
+ * Filter for top members
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public interface MemberFilter {
+
+  /**
+   * Check if user is accepted by filter
+   * 
+   * @param u
+   * @return true if is accepted, otherwise false
+   */
+  public boolean accpet(User u);
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/MemberFilter.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/RHMemberFilter.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/RHMemberFilter.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/RHMemberFilter.java	2010-04-12 14:06:26 UTC (rev 32517)
@@ -0,0 +1,103 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A 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, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.sbs.plugin.topextmembers;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+
+import com.jivesoftware.base.User;
+import com.jivesoftware.community.user.profile.ProfileFieldValue;
+import com.jivesoftware.community.user.profile.ProfileManager;
+
+/**
+ * Filter for RH members
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class RHMemberFilter implements MemberFilter {
+
+  private static final Logger log = LogManager.getLogger(RHMemberFilter.class.getName());
+
+  /** ID of profile file 'hire date' */
+  public static final long HIRE_DATE_ID = 10;
+
+  /** ID of profile file 'leave date' */
+  public static final long LEAVE_DATE_ID = 5005;
+
+  protected ProfileManager profileManager;
+
+  public RHMemberFilter(ProfileManager profileManager) {
+    this.profileManager = profileManager;
+  }
+
+  @Override
+  public boolean accpet(User u) {
+    return isRHEmployee(u);
+  }
+
+  protected boolean isRHEmployee(User u) {
+    Map<Long, ProfileFieldValue> profile = profileManager.getProfile(u);
+
+    ProfileFieldValue hireDate = profile.get(HIRE_DATE_ID);
+    ProfileFieldValue leaveDate = profile.get(LEAVE_DATE_ID);
+    Date now = new Date();
+
+    if (hireDate != null) {
+      Date hd;
+      try {
+        hd = convertProfileDate(hireDate.getValue());
+      } catch (ParseException e) {
+        log.error("Hire date is in bad format for user: " + u.getUsername() + ". Value: " + hireDate.getValue());
+        return false;
+      }
+      if (hd.after(now)) {
+        return false;
+      }
+      if (leaveDate != null) {
+        Date ld;
+        try {
+          ld = (Date) convertProfileDate(leaveDate.getValue());
+        } catch (ParseException e) {
+          log.error("Leaving date is in bad format for user: " + u.getUsername() + ". Value: " + hireDate.getValue());
+          return false;
+        }
+        if (ld.after(now)) {
+          return true;
+        }
+      } else {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+  protected Date convertProfileDate(String value) throws ParseException {
+    SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
+    return df.parse(value);
+  }
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/RHMemberFilter.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/TopExtMembersWidget.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/TopExtMembersWidget.java	2010-04-12 12:47:50 UTC (rev 32516)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-topextmembers/trunk/src/main/java/org/jboss/labs/sbs/plugin/topextmembers/TopExtMembersWidget.java	2010-04-12 14:06:26 UTC (rev 32517)
@@ -21,7 +21,15 @@
  */
 package org.jboss.labs.sbs.plugin.topextmembers;
 
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+
+import com.jivesoftware.base.User;
 import com.jivesoftware.community.annotations.PropertyNames;
+import com.jivesoftware.community.user.profile.ProfileManager;
 import com.jivesoftware.community.widget.WidgetCategory;
 import com.jivesoftware.community.widget.WidgetCategoryMarker;
 import com.jivesoftware.community.widget.WidgetContext;
@@ -41,6 +49,12 @@
 @Remotable
 public class TopExtMembersWidget extends TopMembersWidget {
 
+  protected static final Logger log = LogManager.getLogger(TopExtMembersWidget.class.getName());
+
+  private ProfileManager profileManager;
+
+  private MemberFilter memberFilter;
+
   public String getTitle(WidgetContext widgetContext) {
     return getLocalizedString("widget.topextmembers.title", widgetContext);
   }
@@ -49,4 +63,41 @@
     return getLocalizedString("widget.topextmembers.desc", widgetContext);
   }
 
+  @Override
+  @SuppressWarnings("unchecked")
+  protected Map<String, Object> loadProperties(WidgetContext widgetContext, ContainerSize size) {
+    Map<String, Object> properties = super.loadProperties(widgetContext, size);
+    Object errors = properties.get("renderErrors");
+    if (errors != null) {
+      return properties;
+    }
+
+    Iterable<User> topMembers = (Iterable<User>) properties.get("topMembers");
+
+    if (topMembers != null) {
+      LinkedList<User> nonRHTopMembers = new LinkedList<User>();
+      for (User user : topMembers) {
+        if (!memberFilter.accpet(user)) {
+          nonRHTopMembers.add(user);
+        }
+      }
+
+      // while(nonRHTopMembers.size() < getNumResults()) {
+      // break;
+      // }
+
+      properties.put("topMembers", nonRHTopMembers.iterator());
+    }
+    return properties;
+  }
+
+  public void setProfileManager(ProfileManager profileManager) {
+    this.profileManager = profileManager;
+    setMemberFilter(new RHMemberFilter(this.profileManager));
+  }
+
+  public void setMemberFilter(MemberFilter memberFilter) {
+    this.memberFilter = memberFilter;
+  }
+
 }



More information about the jboss-svn-commits mailing list