/********************************************************************************* * The contents of this file are subject to the Common Public Attribution * License Version 1.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.openemm.org/cpal1.html. The License is based on the Mozilla * Public License Version 1.1 but Sections 14 and 15 have been added to cover * use of software over a computer network and provide for limited attribution * for the Original Developer. In addition, Exhibit A has been modified to be * consistent with Exhibit B. * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is OpenEMM. * The Original Developer is the Initial Developer. * The Initial Developer of the Original Code is AGNITAS AG. All portions of * the code written by AGNITAS AG are Copyright (c) 2007 AGNITAS AG. All Rights * Reserved. * * Contributor(s): AGNITAS AG. ********************************************************************************/ package org.agnitas.beans.impl; import java.security.MessageDigest; import java.util.Locale; import java.util.Set; import org.agnitas.beans.Admin; import org.apache.log4j.Logger; public class AdminImpl implements Admin { private static final transient Logger logger = Logger.getLogger(AdminImpl.class); private static final long serialVersionUID = -6728189620613687946L; protected org.agnitas.beans.Company company = new org.agnitas.beans.impl.CompanyImpl(); protected int adminID; protected int layoutID; protected int layoutBaseID; protected String adminCountry; protected String shortname; protected String username; protected String password; protected String fullname; protected String adminLang; protected String adminLangVariant = ""; protected String adminTimezone; protected java.sql.Timestamp creationDate; protected java.util.Date lastPasswordChange = new java.util.Date(); protected int mailtracking = 0; protected int preferredListSize; private int defaultImportProfileID; /** * Holds value of property group. */ protected org.agnitas.beans.AdminGroup group = new org.agnitas.beans.impl.AdminGroupImpl(); // * * * * * // SETTER: // * * * * * @Override public void setCompany(org.agnitas.beans.Company id) { company = id; } @Override public void setShortname(String name) { shortname = name; } @Override public void setAdminID(int adminID) { this.adminID = adminID; } @Override public void setCompanyID(int companyID) { company.setId(companyID); } @Override public void setUsername(String username) { this.username = username; } @Override public void setCreationDate(java.sql.Timestamp creationDate) { this.creationDate = creationDate; } @Override public void setLastPasswordChange(java.util.Date lastPasswordChange) { this.lastPasswordChange = lastPasswordChange; } @Override public void setPassword(String password) { this.password = password != null ? password : ""; try { this.passwordHash = MessageDigest.getInstance("MD5").digest(this.password.getBytes()); } catch (Exception e) { logger.fatal("Error setting password hash", e); } } @Override public void setFullname(String fullname) { this.fullname = fullname; } @Override public void setAdminLang(String adminLang) { this.adminLang = adminLang; } @Override public void setAdminLangVariant(String adminLangVariant) { this.adminLangVariant = adminLangVariant; } @Override public void setAdminTimezone(String adminTimezone) { this.adminTimezone = adminTimezone; } @Override public void setLayoutID(int layoutID) { this.layoutID = layoutID; } @Override public void setLayoutBaseID(int layoutBaseID) { this.layoutBaseID = layoutBaseID; } @Override public void setAdminCountry(String adminCountry) { this.adminCountry = adminCountry; } @Override public void setMailtracking(int mailtracking) { this.mailtracking = mailtracking; } // * * * * * // GETTER: // * * * * * @Override public org.agnitas.beans.Company getCompany() { return company; } @Override public String getShortname() { return shortname; } @Override public String getPassword() { return password; } @Override public int getAdminID() { return this.adminID; } @Override public int getCompanyID() { return company.getId(); } @Override public String getUsername() { return this.username; } @Override public java.sql.Timestamp getCreationDate() { return creationDate; } @Override public java.util.Date getLastPasswordChange() { return lastPasswordChange; } @Override public String getFullname() { return this.fullname; } @Override public String getAdminLang() { return this.adminLang; } @Override public String getAdminLangVariant() { return this.adminLangVariant; } @Override public String getAdminTimezone() { return this.adminTimezone; } @Override public int getLayoutID() { return this.layoutID; } @Override public int getLayoutBaseID() { return this.layoutBaseID; } @Override public String getAdminCountry() { return this.adminCountry; } @Override public int getMailtracking() { return mailtracking; } /** * Getter for property groupID. * * @return Value of property groupID. */ @Override public org.agnitas.beans.AdminGroup getGroup() { return this.group; } /** * Setter for property groupID. * * @param group */ @Override public void setGroup(org.agnitas.beans.AdminGroup group) { this.group = group; } /** * Holds value of property adminPermissions. */ protected Set<String> adminPermissions; /** * Getter for property adminPermissions. * * @return Value of property adminPermissions. */ @Override public Set<String> getAdminPermissions() { return this.adminPermissions; } /** * Setter for property adminPermissions. * * @param adminPermissions * New value of property adminPermissions. */ @Override public void setAdminPermissions(Set<String> adminPermissions) { this.adminPermissions = adminPermissions; } public static String[] getTokens(String token) { String[] tokens = new String[0]; if (token != null) { tokens = token.split("\\|"); } return tokens; } @Override public boolean permissionAllowed(String token) { boolean result = false; final String[] tokens = getTokens(token); for (String subToken : tokens) { result |= this.adminPermissions.contains(subToken); } if (this.group != null) { if (this.group.permissionAllowed(token)) { result = true; } } return result; } @Override public java.util.Locale getLocale() { return new Locale(this.adminLang, this.adminCountry); } /** * Holds value of property passwordHash. */ private byte[] passwordHash; /** * Getter for property passwordHash. * * @return Value of property passwordHash. */ @Override public byte[] getPasswordHash() { return this.passwordHash; } /** * Setter for property passwordHash. * * @param passwordHash * New value of property passwordHash. */ @Override public void setPasswordHash(byte[] passwordHash) { this.passwordHash = passwordHash; } @Override public int getPreferredListSize() { return this.preferredListSize; } @Override public void setPreferredListSize(int preferredlistsize) { this.preferredListSize = preferredlistsize; } @Override public int getDefaultImportProfileID() { return defaultImportProfileID; } @Override public void setDefaultImportProfileID(int defaultImportProfileID) { this.defaultImportProfileID = defaultImportProfileID; } }