Author: billyxie
Date: 2010-01-29 04:45:03 +0100 (Fri, 29 Jan 2010)
New Revision: 40748

Added:
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/GenderTag.java
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/InfixTag.java
Modified:
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonLDAPService.java
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java
   CMSContainer/trunk/CMSContainer_Modules/community/src/tld/community.tld
Log:
CMSC-1629 - SSO - create tag gender and infix

Added: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/GenderTag.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/GenderTag.java
                                (rev 0)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/GenderTag.java
        2010-01-29 03:45:03 UTC (rev 40748)
@@ -0,0 +1,59 @@
+package com.finalist.cmsc.community.taglib;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.SimpleTagSupport;
+
+import org.acegisecurity.context.SecurityContextHolder;
+import org.springframework.beans.factory.annotation.Autowire;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+import com.finalist.cmsc.services.community.person.PersonLDAPService;
+import com.finalist.cmsc.services.community.person.PersonService;
+
+public class GenderTag extends SimpleTagSupport {
+
+   private String var;
+   
+   public void setVar(String var) {
+      this.var = var;
+   }
+
+   @Override
+   public void doTag() throws JspException, IOException {
+      PageContext pctx = (PageContext) getJspContext();
+      WebApplicationContext ctx = 
WebApplicationContextUtils.getRequiredWebApplicationContext(pctx.getServletContext());
+      ctx.getAutowireCapableBeanFactory().autowireBeanProperties(this, 
Autowire.BY_NAME.value(), false);
+      HttpServletRequest req = (HttpServletRequest) pctx.getRequest();
+
+      PersonService ps = getPersonLDAPService();
+      org.acegisecurity.Authentication authentication = 
SecurityContextHolder.getContext().getAuthentication();
+      if(authentication != null) {
+         String value = ps.getGenderByUserId(authentication.getName());
+         if (var != null) {
+            if (value != null) {
+               req.setAttribute(var, value);
+            } else {
+               req.removeAttribute(var);
+            }
+         } else {
+            pctx.getOut().print(value);
+         }
+      }      
+   }
+   
+   private PersonService personLDAPService;
+
+   public PersonService getPersonLDAPService() {
+      return personLDAPService;
+   }
+
+   public void setPersonLDAPService(PersonService personLDAPService) {
+      this.personLDAPService = personLDAPService;
+   }
+
+}

Added: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/InfixTag.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/InfixTag.java
                         (rev 0)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/InfixTag.java
 2010-01-29 03:45:03 UTC (rev 40748)
@@ -0,0 +1,11 @@
+package com.finalist.cmsc.community.taglib;
+
+import com.finalist.cmsc.services.community.person.Person;
+
+public class InfixTag extends AbstractCommunityTag {
+
+   @Override
+   protected String getValue(Person person) {
+      return person.getInfix();
+   }
+}

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java
  2010-01-28 15:21:22 UTC (rev 40747)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java
  2010-01-29 03:45:03 UTC (rev 40748)
@@ -578,4 +578,9 @@
       return query;
    }
 
+   public String getGenderByUserId(String userId) {
+      // TODO Auto-generated method stub
+      return null;
+   }
+
 }

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonLDAPService.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonLDAPService.java
       2010-01-28 15:21:22 UTC (rev 40747)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonLDAPService.java
       2010-01-29 03:45:03 UTC (rev 40748)
@@ -203,6 +203,24 @@
       // TODO Auto-generated method stub
       
    }
+   
+   private class GenderContextMapper extends AbstractContextMapper {
+
+      public Object doMapFromContext(DirContextOperations context) {
+         return getStringAttribute(context, "nai-gender");
+      }
+   }
+
+   public String getGenderByUserId(String userId) {
+      AndFilter filter = new AndFilter();
+      filter.and(new EqualsFilter("objectClass", RELATION_CLASS_NAME));
+      filter.and(new EqualsFilter("cn", userId));
+      List<String> groups = 
(List<String>)getLdapTemplate().search(RELATION_BASE_DN, filter.encode(), new 
GenderContextMapper());
+      if(groups.size() >= 1){
+         return groups.get(0);
+      }
+      return "unknown";
+   }
  
 
 }

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java
   2010-01-28 15:21:22 UTC (rev 40747)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java
   2010-01-29 03:45:03 UTC (rev 40748)
@@ -27,6 +27,13 @@
 public interface PersonService {
 
    Person getPersonByUserId(String userId);
+   
+   /**
+    * 
+    * @param the id of user
+    * @return gender of user
+    */
+   String getGenderByUserId(String userId);
 
    /**
     * Get a list of matching persons that match the given example. The fields 
that are set on the example Person are the

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/tld/community.tld
===================================================================
--- CMSContainer/trunk/CMSContainer_Modules/community/src/tld/community.tld     
2010-01-28 15:21:22 UTC (rev 40747)
+++ CMSContainer/trunk/CMSContainer_Modules/community/src/tld/community.tld     
2010-01-29 03:45:03 UTC (rev 40748)
@@ -67,8 +67,19 @@
          <rtexprvalue>false</rtexprvalue>
       </attribute>
    </tag>
-
    <tag>
+      <name>infix</name>
+      <tag-class>com.finalist.cmsc.community.taglib.InfixTag</tag-class>
+      <body-content>scriptless</body-content>
+      <description>Infix Name</description>
+      <attribute>
+         <name>var</name>
+         <description>JSP variable name to value of infix name 
in.</description>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+   <tag>
       <name>lastname</name>
       <tag-class>com.finalist.cmsc.community.taglib.LastnameTag</tag-class>
       <body-content>scriptless</body-content>
@@ -81,18 +92,17 @@
       </attribute>
    </tag>
    <tag>
-      <name>firstname</name>
-      <tag-class>com.finalist.cmsc.community.taglib.FirstnameTag</tag-class>
+      <name>gender</name>
+      <tag-class>com.finalist.cmsc.community.taglib.GenderTag</tag-class>
       <body-content>scriptless</body-content>
-      <description>First Name</description>
+      <description>Show Gender</description>
       <attribute>
          <name>var</name>
-         <description>JSP variable name to value of first name 
in.</description>
+         <description>JSP variable name to value of gender.</description>
          <required>false</required>
          <rtexprvalue>false</rtexprvalue>
       </attribute>
    </tag>
-
    <tag>
       <name>email</name>
       <tag-class>com.finalist.cmsc.community.taglib.EmailTag</tag-class>

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to