[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