/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/metaobj/trunk/metaobj-impl/api-impl/src/java/org/sakaiproject/metaobj/shared/model/impl/AgentImpl.java $ * $Id: AgentImpl.java 130481 2013-10-15 17:36:54Z dsobiera@indiana.edu $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.metaobj.shared.model.impl; import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.digest.DigestUtils; import org.sakaiproject.metaobj.shared.mgt.HomeFactory; import org.sakaiproject.metaobj.shared.model.Agent; import org.sakaiproject.metaobj.shared.model.Artifact; import org.sakaiproject.metaobj.shared.model.Id; import org.sakaiproject.metaobj.shared.model.StructuredArtifact; public class AgentImpl implements Agent { static public final String ID = "id"; static public final String REAL_NAME = "realName"; static public final String EMAIL = "email"; static public final String ROLES = "roles"; private Id id; private Id eid; private StructuredArtifact profile; private String[] roles; private HomeFactory homeFactory; private String displayName; private String md5Password; private String password; private String role; private boolean initialized = false; public AgentImpl() { } public AgentImpl(Id id) { this.id = id; } public AgentImpl(StructuredArtifact profile) { this.profile = profile; } public Id getId() { return id; } public void setId(Id id) { this.id = id; } public Id getEid() { return eid; } public void setEid(Id eid) { this.eid = eid; } public Artifact getProfile() { return profile; } public void setProfile(StructuredArtifact profile) { this.profile = profile; } public Object getProperty(String key) { return profile.get(key); } public String getDisplayName() { return displayName; } public boolean isInRole(String role) { for (int i = 0; i < getRoles().length; i++) { if (role.equals(getRoles()[i])) { return true; } } return false; } public boolean isInitialized() { return initialized; } public void setInitialized(boolean initialized) { this.initialized = initialized; } public void setDisplayName(String displayName) { this.displayName = displayName; } /** * I imagine this will probably move into a authz call and out of here * * @return */ public String[] getRoles() { /* if (roles == null) { //TODO implement for multiple roles roles = new String[1]; roles[0] = (String) profile.get("role"); } */ roles = new String[1]; roles[0] = role; return roles; } public void setRoles(String[] roles) { this.roles = roles; } public HomeFactory getHomeFactory() { return homeFactory; } public void setHomeFactory(HomeFactory homeFactory) { this.homeFactory = homeFactory; } public String getPassword() { return password; } public String getClearPassword() { return password; } public void setPassword(String password) { this.password = password; this.md5Password = DigestUtils.md5Hex(password); } public String getMd5Password() { return md5Password; } public void setMd5Password(String md5Password) { this.md5Password = md5Password; } public String getRole() { return role; } public List getWorksiteRoles(String worksiteId) { return new ArrayList(); } public List getWorksiteRoles() { return new ArrayList(); } public boolean isRole() { return false; } public void setRole(String role) { this.role = role; } public String naturalKey() { return "" + displayName; } public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof AgentImpl)) { return false; } final AgentImpl agent = (AgentImpl) o; return naturalKey().equals(agent.naturalKey()); } public int hashCode() { return naturalKey().hashCode(); } /** * Returns the name of this principal. * * @return the name of this principal. */ public String getName() { return getDisplayName(); } }