package edu.asu.spring.quadriga.domain.factories; import org.apache.commons.lang.NotImplementedException; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.domain.impl.User; /** * Factory interface for user factories. * @author Julia Damerow * */ public interface IUserFactory { /** * Factory method for creating {@link User} objects. * @return */ public abstract IUser createUserObject(); /** * Method for cloning a {@link IUser} object. Note that this will produce a shallow clone, meaning that the QuadrigaRoles * will simply be put into a new list for the clone, but the QuadrigaRole objects themselves will be the same. * @param user the user object to be cloned. * @return a clone of the given user object that contains the exact same information as the original object. * @throws NotImplementedException */ public abstract IUser cloneUserObject(IUser user); }