blob: c5cfcef4fc56ced5033c35787141f67cede4bb79 [file] [log] [blame]
package org.apache.turbine.services.security.torque;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Turbine" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Turbine", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import java.beans.PropertyDescriptor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.torque.TorqueException;
import org.apache.torque.om.Persistent;
import org.apache.torque.util.BasePeer;
import org.apache.torque.util.Criteria;
import org.apache.turbine.om.security.User;
import org.apache.turbine.services.InitializationException;
import org.apache.turbine.services.security.TurbineSecurity;
import org.apache.turbine.util.security.DataBackendException;
/**
* This class capsulates all direct Peer access for the User entities.
* It allows the exchange of the default Turbine supplied TurbineUserPeer
* class against a custom class.
*
* @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
* @version $Id$
*/
public class UserPeerManager
implements UserPeerManagerConstants
{
/** The class of the Peer the TorqueSecurityService uses */
private static Class userPeerClass = null;
/** The class name of the objects returned by the configured peer. */
private static Class userObject = null;
/** The name of the Table used for Group Object queries */
private static String tableName = null;
/** The name of the column used as "Name" Column */
private static String nameColumn = null;
/** The name of the column used as "Id" Column */
private static String idColumn = null;
/** The name of the column used as "Password" Column */
private static String passwordColumn = null;
/** The name of the column used as "First name" Column */
private static String firstNameColumn = null;
/** The name of the column used as "Last name" Column */
private static String lastNameColumn = null;
/** The name of the column used as "Email" Column */
private static String emailColumn = null;
/** The name of the column used as "Confirm" Column */
private static String confirmColumn = null;
/** The name of the column used as "create date" Column */
private static String createDateColumn = null;
/** The name of the column used as "last login" Column */
private static String lastLoginColumn = null;
/** The name of the column used as "objectdata" Column */
private static String objectdataColumn = null;
/** The "Name" property descriptor */
private static PropertyDescriptor namePropDesc = null;
/** The "Id" property descriptor */
private static PropertyDescriptor idPropDesc = null;
/** The "Password" property descriptor */
private static PropertyDescriptor passwordPropDesc = null;
/** The "First name" property descriptor */
private static PropertyDescriptor firstNamePropDesc = null;
/** The "Last name" property descriptor */
private static PropertyDescriptor lastNamePropDesc = null;
/** The "Email" property descriptor */
private static PropertyDescriptor emailPropDesc = null;
/** The "Confirm" property descriptor */
private static PropertyDescriptor confirmPropDesc = null;
/** The "create date" property descriptor */
private static PropertyDescriptor createDatePropDesc = null;
/** The "last login" property descriptor */
private static PropertyDescriptor lastLoginPropDesc = null;
/** The "objectdata" property descriptor */
private static PropertyDescriptor objectdataPropDesc = null;
/** Logging */
static Log log = LogFactory.getLog(UserPeerManager.class);
/**
* Initializes the UserPeerManager, loading the class object for the
* Peer used to retrieve User objects
*
* @param conf The configuration object used to configure the Manager
*
* @exception InitializationException A problem occured during
* initialization
*/
public static void init(Configuration conf)
throws InitializationException
{
String userPeerClassName = conf.getString(USER_PEER_CLASS_KEY,
USER_PEER_CLASS_DEFAULT);
String userObjectName = null;
try
{
userPeerClass = Class.forName(userPeerClassName);
tableName =
(String) userPeerClass.getField("TABLE_NAME").get(null);
//
// We have either an user configured Object class or we use the
// default as supplied by the Peer class
//
// Default from Peer, can be overridden
userObject = getPersistenceClass();
userObjectName = conf.getString(USER_CLASS_KEY,
userObject.getName());
// Maybe the user set a new value...
userObject = Class.forName(userObjectName);
/* If any of the following Field queries fails, the user
* subsystem is unusable. So check this right here at init time,
* which saves us much time and hassle if it fails...
*/
nameColumn = (String) userPeerClass.getField(
conf.getString(USER_NAME_COLUMN_KEY,
USER_NAME_COLUMN_DEFAULT)
).get(null);
idColumn = (String) userPeerClass.getField(
conf.getString(USER_ID_COLUMN_KEY,
USER_ID_COLUMN_DEFAULT)
).get(null);
passwordColumn = (String) userPeerClass.getField(
conf.getString(USER_PASSWORD_COLUMN_KEY,
USER_PASSWORD_COLUMN_DEFAULT)
).get(null);
firstNameColumn = (String) userPeerClass.getField(
conf.getString(USER_FIRST_NAME_COLUMN_KEY,
USER_FIRST_NAME_COLUMN_DEFAULT)
).get(null);
lastNameColumn = (String) userPeerClass.getField(
conf.getString(USER_LAST_NAME_COLUMN_KEY,
USER_LAST_NAME_COLUMN_DEFAULT)
).get(null);
emailColumn = (String) userPeerClass.getField(
conf.getString(USER_EMAIL_COLUMN_KEY,
USER_EMAIL_COLUMN_DEFAULT)
).get(null);
confirmColumn = (String) userPeerClass.getField(
conf.getString(USER_CONFIRM_COLUMN_KEY,
USER_CONFIRM_COLUMN_DEFAULT)
).get(null);
createDateColumn = (String) userPeerClass.getField(
conf.getString(USER_CREATE_COLUMN_KEY,
USER_CREATE_COLUMN_DEFAULT)
).get(null);
lastLoginColumn = (String) userPeerClass.getField(
conf.getString(USER_LAST_LOGIN_COLUMN_KEY,
USER_LAST_LOGIN_COLUMN_DEFAULT)
).get(null);
objectdataColumn = (String) userPeerClass.getField(
conf.getString(USER_OBJECTDATA_COLUMN_KEY,
USER_OBJECTDATA_COLUMN_DEFAULT)
).get(null);
namePropDesc =
new PropertyDescriptor(conf.getString(
USER_NAME_PROPERTY_KEY,
USER_NAME_PROPERTY_DEFAULT),
userObject);
idPropDesc =
new PropertyDescriptor(conf.getString(
USER_ID_PROPERTY_KEY,
USER_ID_PROPERTY_DEFAULT),
userObject);
passwordPropDesc =
new PropertyDescriptor(conf.getString(
USER_PASSWORD_PROPERTY_KEY,
USER_PASSWORD_PROPERTY_DEFAULT),
userObject);
firstNamePropDesc =
new PropertyDescriptor(conf.getString(
USER_FIRST_NAME_PROPERTY_KEY,
USER_FIRST_NAME_PROPERTY_DEFAULT),
userObject);
lastNamePropDesc =
new PropertyDescriptor(conf.getString(
USER_LAST_NAME_PROPERTY_KEY,
USER_LAST_NAME_PROPERTY_DEFAULT),
userObject);
emailPropDesc =
new PropertyDescriptor(conf.getString(
USER_EMAIL_PROPERTY_KEY,
USER_EMAIL_PROPERTY_DEFAULT),
userObject);
confirmPropDesc =
new PropertyDescriptor(conf.getString(
USER_CONFIRM_PROPERTY_KEY,
USER_CONFIRM_PROPERTY_DEFAULT),
userObject);
createDatePropDesc =
new PropertyDescriptor(conf.getString(
USER_CREATE_PROPERTY_KEY,
USER_CREATE_PROPERTY_DEFAULT),
userObject);
lastLoginPropDesc =
new PropertyDescriptor(conf.getString(
USER_LAST_LOGIN_PROPERTY_KEY,
USER_LAST_LOGIN_PROPERTY_DEFAULT),
userObject);
objectdataPropDesc =
new PropertyDescriptor(conf.getString(
USER_OBJECTDATA_PROPERTY_KEY,
USER_OBJECTDATA_PROPERTY_DEFAULT),
userObject);
}
catch (Exception e)
{
if (userPeerClassName == null || userPeerClass == null)
{
throw new InitializationException(
"Could not find UserPeer class ("
+ userPeerClassName + ")", e);
}
if (tableName == null)
{
throw new InitializationException(
"Failed to get the table name from the Peer object", e);
}
if (userObject == null || userObjectName == null)
{
throw new InitializationException(
"Failed to get the object type from the Peer object", e);
}
if (nameColumn == null || namePropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no name column information!", e);
}
if (idColumn == null || idPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no id column information!", e);
}
if (passwordColumn == null || passwordPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no password column information!", e);
}
if (firstNameColumn == null || firstNamePropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no firstName column information!", e);
}
if (lastNameColumn == null || lastNamePropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no lastName column information!", e);
}
if (emailColumn == null || emailPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no email column information!", e);
}
if (confirmColumn == null || confirmPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no confirm column information!", e);
}
if (createDateColumn == null || createDatePropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no createDate column information!", e);
}
if (lastLoginColumn == null || lastLoginPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no lastLogin column information!", e);
}
if (objectdataColumn == null || objectdataPropDesc == null)
{
throw new InitializationException(
"UserPeer " + userPeerClassName
+ " has no objectdata column information!", e);
}
}
}
/**
* Get the name of this table.
*
* @return A String with the name of the table.
*/
public static String getTableName()
{
return tableName;
}
/**
* Returns the fully qualified name of the Column to
* use as the Name Column for a group
*
* @return A String containing the column name
*/
public static String getNameColumn()
{
return nameColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the Id Column for a group
*
* @return A String containing the column id
*/
public static String getIdColumn()
{
return idColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the Password Column for a role
*
* @return A String containing the column name
*/
public static String getPasswordColumn()
{
return passwordColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the FirstName Column for a role
*
* @return A String containing the column name
*/
public static String getFirstNameColumn()
{
return firstNameColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the LastName Column for a role
*
* @return A String containing the column name
*/
public static String getLastNameColumn()
{
return lastNameColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the Email Column for a role
*
* @return A String containing the column name
*/
public static String getEmailColumn()
{
return emailColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the Confirm Column for a role
*
* @return A String containing the column name
*/
public static String getConfirmColumn()
{
return confirmColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the CreateDate Column for a role
*
* @return A String containing the column name
*/
public static String getCreateDateColumn()
{
return createDateColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the LastLogin Column for a role
*
* @return A String containing the column name
*/
public static String getLastLoginColumn()
{
return lastLoginColumn;
}
/**
* Returns the fully qualified name of the Column to
* use as the objectdata Column for a role
*
* @return A String containing the column name
*/
public static String getObjectdataColumn()
{
return objectdataColumn;
}
/**
* Returns the full name of a column.
*
* @param name The column to fully qualify
*
* @return A String with the full name of the column.
*/
public static String getColumnName(String name)
{
StringBuffer sb = new StringBuffer();
sb.append(getTableName());
sb.append(".");
sb.append(name);
return sb.toString();
}
/**
* Returns the full name of a column.
*
* @param name The column to fully qualify
*
* @return A String with the full name of the column.
* @deprecated use getColumnName(String name)
*/
public String getFullColumnName(String name)
{
return getColumnName(name);
}
/**
* Returns a new, empty object for the underlying peer.
* Used to create a new underlying object
*
* @return A new object which is compatible to the Peer
* and can be used as a User object
*
*/
public static Persistent newPersistentInstance()
{
Persistent obj = null;
if(userObject == null)
{
// This can happen if the Turbine wants to determine the
// name of the anonymous user before the security service
// has been initialized. In this case, the Peer Manager
// has not yet been inited and the userObject is still
// null. Return null in this case.
//
return obj;
}
try
{
obj = (Persistent) userObject.newInstance();
}
catch (Exception e)
{
log.error("Could not instantiate a user object", e);
obj = null;
}
return obj;
}
/**
* Checks if a User is defined in the system. The name
* is used as query criteria.
*
* @param user The User to be checked.
* @return <code>true</code> if given User exists in the system.
* @throws DataBackendException when more than one User with
* the same name exists.
* @throws Exception A generic exception.
*/
public static boolean checkExists(User user)
throws DataBackendException, Exception
{
Criteria criteria = new Criteria();
criteria.addSelectColumn(getIdColumn());
criteria.add(getNameColumn(), user.getName());
List results = BasePeer.doSelect(criteria);
if (results.size() > 1)
{
throw new DataBackendException("Multiple users named '" +
user.getName() + "' exist!");
}
return (results.size() == 1);
}
/**
* Returns a List of all User objects.
*
* @return A List with all users in the system.
* @exception Exception A generic exception.
*/
public static List selectAllUsers()
throws Exception
{
Criteria criteria = new Criteria();
criteria.addAscendingOrderByColumn(getLastNameColumn());
criteria.addAscendingOrderByColumn(getFirstNameColumn());
criteria.setIgnoreCase(true);
return doSelect(criteria);
}
/**
* Returns a List of all confirmed User objects.
*
* @return A List with all confirmed users in the system.
* @exception Exception A generic exception.
*/
public static List selectAllConfirmedUsers()
throws Exception
{
Criteria criteria = new Criteria();
criteria.add (getConfirmColumn(), User.CONFIRM_DATA);
criteria.addAscendingOrderByColumn(getLastNameColumn());
criteria.addAscendingOrderByColumn(getFirstNameColumn());
criteria.setIgnoreCase(true);
return doSelect(criteria);
}
/*
* ========================================================================
*
* WARNING! Do not read on if you have a weak stomach. What follows here
* are some abominations thanks to the braindead static peers of Torque
* and the rigidity of Java....
*
* ========================================================================
*
*/
/**
* Calls buildCriteria(User user) in the configured UserPeer. If you get
* a ClassCastException in this routine, you put a User object into this
* method which can't be cast into an object for the TorqueSecurityService. This is a
* configuration error most of the time.
*
* @param user An object which implements the User interface
*
* @return A criteria for the supplied user object
*/
public static Criteria buildCriteria(User user)
{
Criteria crit;
try
{
Class[] clazz = new Class[] { userObject };
Object[] params =
new Object[] { ((TorqueUser) user).getPersistentObj() };
crit = (Criteria) userPeerClass
.getMethod("buildCriteria", clazz)
.invoke(null, params);
}
catch (Exception e)
{
crit = null;
}
return crit;
}
/**
* Invokes doUpdate(Criteria c) on the configured Peer Object
*
* @param criteria A Criteria Object
*
* @exception TorqueException A problem occured.
*/
public static void doUpdate(Criteria criteria)
throws TorqueException
{
try
{
Class[] clazz = new Class[] { Criteria.class };
Object[] params = new Object[] { criteria };
userPeerClass
.getMethod("doUpdate", clazz)
.invoke(null, params);
}
catch (Exception e)
{
throw new TorqueException("doUpdate failed", e);
}
}
/**
* Invokes doInsert(Criteria c) on the configured Peer Object
*
* @param criteria A Criteria Object
*
* @exception TorqueException A problem occured.
*/
public static void doInsert(Criteria criteria)
throws TorqueException
{
try
{
Class[] clazz = new Class[] { Criteria.class };
Object[] params = new Object[] { criteria };
userPeerClass
.getMethod("doInsert", clazz)
.invoke(null, params);
}
catch (Exception e)
{
throw new TorqueException("doInsert failed", e);
}
}
/**
* Invokes doSelect(Criteria c) on the configured Peer Object
*
* @param criteria A Criteria Object
*
* @return A List of User Objects selected by the Criteria
*
* @exception TorqueException A problem occured.
*/
public static List doSelect(Criteria criteria)
throws TorqueException
{
List list;
try
{
Class[] clazz =
new Class[] { Criteria.class };
Object[] params = new Object[] { criteria };
list = (List) userPeerClass
.getMethod("doSelect", clazz)
.invoke(null, params);
}
catch (Exception e)
{
throw new TorqueException("doSelect failed", e);
}
List newList = new ArrayList(list.size());
//
// Wrap the returned Objects into TorqueUsers.
//
for (Iterator it = list.iterator(); it.hasNext(); )
{
User u = getNewUser((Persistent) it.next());
newList.add(u);
}
return newList;
}
/**
* Invokes doDelete(Criteria c) on the configured Peer Object
*
* @param criteria A Criteria Object
*
* @exception TorqueException A problem occured.
*/
public static void doDelete(Criteria criteria)
throws TorqueException
{
try
{
Class[] clazz = new Class[] { Criteria.class };
Object[] params = new Object[] { criteria };
userPeerClass
.getMethod("doDelete", clazz)
.invoke(null, params);
}
catch (Exception e)
{
throw new TorqueException("doDelete failed", e);
}
}
/**
* Invokes setName(String s) on the supplied base object
*
* @param obj The object to use for setting the name
* @param name The Name to set
*/
public static void setUserName(Persistent obj, String name)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { name };
namePropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getName() on the supplied base object
*
* @param obj The object to use for getting the name
*
* @return A string containing the name
*
* @deprecated use getName(obj)
*/
public static String getUserName(Persistent obj)
{
return getName(obj);
}
/**
* Invokes getName() on the supplied base object
*
* @param obj The object to use for getting the name
*
* @return A string containing the name
*/
public static String getName(Persistent obj)
{
String name = null;
if(obj == null)
{
return null;
}
try
{
name = (String) namePropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return name;
}
/**
* Invokes setPassword(String s) on the supplied base object
*
* @param obj The object to use for setting the password
* @param password The Password to set
*/
public static void setUserPassword(Persistent obj, String password)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { password };
passwordPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getPassword() on the supplied base object
*
* @param obj The object to use for getting the password
*
* @return A string containing the password
*/
public static String getUserPassword(Persistent obj)
{
String password = null;
if(obj == null)
{
return null;
}
try
{
password = (String) passwordPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return password;
}
/**
* Invokes setFirstName(String s) on the supplied base object
*
* @param obj The object to use for setting the first name
* @param firstName The first name to set
*/
public static void setUserFirstName(Persistent obj, String firstName)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { firstName };
firstNamePropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getFirstName() on the supplied base object
*
* @param obj The object to use for getting the first name
*
* @return A string containing the first name
*/
public static String getUserFirstName(Persistent obj)
{
String firstName = null;
if(obj == null)
{
return null;
}
try
{
firstName = (String) firstNamePropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return firstName;
}
/**
* Invokes setLastName(String s) on the supplied base object
*
* @param obj The object to use for setting the last name
* @param lastName The Last Name to set
*/
public static void setUserLastName(Persistent obj, String lastName)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { lastName };
lastNamePropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getLastName() on the supplied base object
*
* @param obj The object to use for getting the last name
*
* @return A string containing the last name
*/
public static String getUserLastName(Persistent obj)
{
String lastName = null;
if(obj == null)
{
return null;
}
try
{
lastName = (String) lastNamePropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return lastName;
}
/**
* Invokes setEmail(String s) on the supplied base object
*
* @param obj The object to use for setting the email
* @param email The Email to set
*/
public static void setUserEmail(Persistent obj, String email)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { email };
emailPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getEmail() on the supplied base object
*
* @param obj The object to use for getting the email
*
* @return A string containing the email
*/
public static String getUserEmail(Persistent obj)
{
String email = null;
if(obj == null)
{
return null;
}
try
{
email = (String) emailPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return email;
}
/**
* Invokes setConfirmed(String s) on the supplied base object
*
* @param obj The object to use for setting the confirm value
* @param confirm The confirm value to set
*/
public static void setUserConfirmed(Persistent obj, String confirm)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { confirm };
confirmPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getConfirmed() on the supplied base object
*
* @param obj The object to use for getting the confirm value
*
* @return A string containing the confirm value
*/
public static String getUserConfirmed(Persistent obj)
{
String confirm = null;
if(obj == null)
{
return null;
}
try
{
confirm = (String) confirmPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return confirm;
}
/**
* Invokes setCreateDate(java.util.Date date) on the supplied base object
*
* @param obj The object to use for setting the create date
* @param createDate The create date to set
*/
public static void setUserCreateDate(Persistent obj, java.util.Date createDate)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { createDate };
createDatePropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getCreateDate() on the supplied base object
*
* @param obj The object to use for getting the create date
*
* @return A string containing the create date
*/
public static java.util.Date getUserCreateDate(Persistent obj)
{
java.util.Date createDate = null;
if(obj == null)
{
return null;
}
try
{
createDate = (java.util.Date) createDatePropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return createDate;
}
/**
* Invokes setLastLogin(java.util.Date date) on the supplied base object
*
* @param obj The object to use for setting the last login daet
* @param lastLogin The last login date to set
*/
public static void setUserLastLogin(Persistent obj, java.util.Date lastLogin)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { lastLogin };
lastLoginPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getLastLogin() on the supplied base object
*
* @param obj The object to use for getting the last login date
*
* @return A string containing the last login date
*/
public static java.util.Date getUserLastLogin(Persistent obj)
{
java.util.Date lastLogin = null;
if(obj == null)
{
return null;
}
try
{
lastLogin = (java.util.Date) lastLoginPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return lastLogin;
}
/**
* Invokes setObjectdata(byte [] date) on the supplied base object
*
* @param obj The object to use for setting the last login daet
* @param objectdata The objectdata to use
*/
public static void setUserObjectdata(Persistent obj, byte [] objectdata)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { objectdata };
objectdataPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getObjectdata() on the supplied base object
*
* @param obj The object to use for getting the last login date
*
* @return A string containing the last login date
*/
public static byte [] getUserObjectdata(Persistent obj)
{
byte [] objectdata = null;
if(obj == null)
{
return null;
}
try
{
objectdata = (byte []) objectdataPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return objectdata;
}
/**
* Invokes setId(int n) on the supplied base object
*
* @param obj The object to use for setting the name
* @param id The new Id
*/
public static void setId(Persistent obj, int id)
{
if(obj == null)
{
return;
}
try
{
Object[] params = new Object[] { Integer.TYPE };
idPropDesc.getWriteMethod().invoke(obj, params);
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
}
/**
* Invokes getId() on the supplied base object
*
* @param obj The object to use for getting the id
*
* @return The Id of this object
*/
public static Integer getIdAsObj(Persistent obj)
{
Integer id = null;
if(obj == null)
{
return new Integer(0);
}
try
{
id = (Integer) idPropDesc
.getReadMethod()
.invoke(obj, new Object[] {});
}
catch (ClassCastException cce)
{
String msg = obj.getClass().getName() + " does not seem to be an User Object!";
log.error(msg);
throw new RuntimeException(msg);
}
catch (Exception e)
{
log.error(e, e);
}
return id;
}
/**
* Returns the Class of the configured Object class
* from the peer
*
* @return The class of the objects returned by the configured peer
*
*/
private static Class getPersistenceClass()
{
Class persistenceClass = null;
try
{
Object[] params = new Object[0];
persistenceClass = (Class) userPeerClass
.getMethod("getOMClass", null)
.invoke(null, params);
}
catch (Exception e)
{
persistenceClass = null;
}
return persistenceClass;
}
/**
* Returns a new, configured User Object with
* a supplied Persistent object at its core
*
* @param p The persistent object
*
* @return a new, configured User Object
*
* @exception Exception Could not create a new Object
*
*/
public static User getNewUser(Persistent p)
{
User u = null;
try
{
Class userWrapperClass = TurbineSecurity.getUserClass();
Class [] clazz = new Class [] { Persistent.class };
Object [] params = new Object [] { p };
u = (User) userWrapperClass
.getConstructor(clazz)
.newInstance(params);
}
catch (Exception e)
{
log.error("Could not instantiate a new user from supplied persistent: ", e);
}
return u;
}
}