Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/service In directory sc8-pr-cvs1:/tmp/cvs-serv29926 Added Files: ConversionException.java ResumeManager.java ResumeManagerImpl.java UserManager.java UserManagerImpl.java Log Message: --- NEW FILE: ConversionException.java --- package org.appfuse.webapp.service; import org.apache.struts.util.ModuleException; /** * Example of an application-specific exception for which a handler * can be configured. */ public class ConversionException extends ModuleException { /** * Construct a new instance of this exception */ public ConversionException() { super("errors.conversion"); } } --- NEW FILE: ResumeManager.java --- package org.appfuse.webapp.service; import org.appfuse.webapp.form.ResumeForm; import java.util.ArrayList; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer. * * <p> * <a href="ResumeManager.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public interface ResumeManager { //~ Methods ================================================================ /** * Retrieves resumes based on a userId * * @param userId * @return ArrayList */ public ArrayList getResumesForUser(String userId) throws Exception; /** * Retrives a single resumeForm based on a resumeId * * @param resumeId * @return populated Resume */ public ResumeForm getResume(String resumeId) throws Exception; /** * Saves a resume's information. This method can also be used to add a new * resume. * * @param resumeForm the resume's information * @return updated resume information */ public ResumeForm saveResume(ResumeForm resumeForm) throws Exception; /** * Removes a resume from the database by id * * @param id the identifier of the resume to remove * @throws Exception when something goes wrong */ public void removeResume(ResumeForm resumeForm) throws Exception; } --- NEW FILE: ResumeManagerImpl.java --- package org.appfuse.webapp.service; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.persistence.DAOFactory; import org.appfuse.persistence.Resume; import org.appfuse.persistence.ResumeDAO; import org.appfuse.webapp.form.ResumeForm; import java.util.ArrayList; import java.util.List; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer * * <p> * <a href="ResumeManagerImpl.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public class ResumeManagerImpl implements ResumeManager { //~ Instance fields ======================================================== private Log log = LogFactory.getLog(ResumeManagerImpl.class); private DAOFactory factory; private ResumeDAO dao; private Resume resume; private ResumeForm resumeForm; //~ Constructors =========================================================== public ResumeManagerImpl(String daoType) throws Exception { factory = DAOFactory.createFactory(daoType); dao = factory.createResumeDAO(); } //~ Methods ================================================================ public ArrayList getResumesForUser(String userId) throws Exception { List resumes = dao.getResumesByUserId(Long.valueOf(userId)); if (log.isDebugEnabled()) { log.debug("resume list from dao: " + resumes); } ArrayList convertedResumes = new ArrayList(); // loop through each resume and convert to a resumeForm for (int i = 0; i < resumes.size(); i++) { resume = (Resume) resumes.get(i); resumeForm = new ResumeForm(); BeanUtils.copyProperties(resumeForm, resume); convertedResumes.add(resumeForm); } return convertedResumes; } public ResumeForm getResume(String resumeId) throws Exception { resumeForm = new ResumeForm(); resume = dao.getResume(Long.valueOf(resumeId)); if (log.isDebugEnabled()) { log.debug("resume from dao: " + resume); } // copy form properties to resume BeanUtils.copyProperties(resumeForm, resume); if (log.isDebugEnabled()) { log.debug("got resume with properties: " + resumeForm); } return resumeForm; } /** * This method will eventually need some more robust conversion to enable * converting Strings to proper datatypes. Here's a possible way that I * haven't tried yet: * * <p> * //register conversion utils for forms * ConvertUtils.register(new StringConverter(), String.class); * ConvertUtils.register(new BlankStringToNullIntegerConverter(), Integer.class); * ConvertUtils.register(new SqlTimestampConverter(), Timestamp. class); * ConvertUtils.register(new AddressConverter(), AddressesData. class); * ConvertUtils.register(new AddressConverter(), AddressForm. class); * * RTJD (read the JavaDocs): * http://jakarta.apache.org/commons/beanutils/apidocs/org/apache/commons/beanutils/ConvertUtils.html * </p> * * @see org.appfuse.webapp.service.ResumeManager#saveResume(ResumeForm) */ public ResumeForm saveResume(ResumeForm resumeForm) throws Exception { resume = new Resume(); // copy form properties to resume BeanUtils.copyProperties(resume, resumeForm); // copy properties converts a null string to a 0 long if (resume.getId().intValue() == 0) { resume.setId(null); } if (log.isDebugEnabled()) { log.debug("saving resume with properties: " + resume); } dao.saveResume(resume); return getResume(resume.getId().toString()); } /** * @see org.appfuse.webapp.service.ResumeManager#removeResume(String) */ public void removeResume(ResumeForm resumeForm) throws Exception { resume = new Resume(); resume.setId(Long.valueOf(resumeForm.getId())); dao.removeResume(resume); } } --- NEW FILE: UserManager.java --- package org.appfuse.webapp.service; import org.appfuse.webapp.form.UserForm; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer. * * <p> * <a href="UserManager.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public interface UserManager { //~ Methods ================================================================ /** * Retrieves a user by name, and can create a new one * * @param username * @return User */ public UserForm getUser(String username) throws Exception; /** * Saves a user's information * * @param userForm the user's information * @return updated user information */ public UserForm saveUser(UserForm userForm) throws Exception; /** * Removes a user from the database by id */ public void removeUser(UserForm userForm) throws Exception; } --- NEW FILE: UserManagerImpl.java --- package org.appfuse.webapp.service; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.persistence.DAOFactory; import org.appfuse.persistence.User; import org.appfuse.persistence.UserDAO; import org.appfuse.webapp.form.UserForm; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer * * <p> * <a href="UserManagerImpl.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public class UserManagerImpl implements UserManager { //~ Instance fields ======================================================== private Log log = LogFactory.getLog(UserManagerImpl.class); private DAOFactory factory; private UserDAO dao; private User user; private UserForm userForm; //~ Constructors =========================================================== public UserManagerImpl(String daoType) throws Exception { factory = DAOFactory.createFactory(daoType); dao = factory.createUserDAO(); } //~ Methods ================================================================ public UserForm getUser(String username) throws Exception { user = dao.getUser(username); if (log.isDebugEnabled()) { log.debug("user from dao: " + user); } userForm = new UserForm(); // copy properties from user to form BeanUtils.copyProperties(userForm, user); if (log.isDebugEnabled()) { log.debug("user properties: " + userForm); } return userForm; } public UserForm saveUser(UserForm userForm) throws Exception { user = new User(); // copy form properties to user try { BeanUtils.copyProperties(user, userForm); // copy properties converts a null string to a 0 long if (user.getId().intValue() == 0) { user.setId(null); } } catch (IllegalArgumentException i) { log.error("Exception occured copying properties", i); throw new ConversionException(); } if (log.isDebugEnabled()) { log.debug("saving user with properties: " + user); } user = dao.saveUser(user); return getUser(user.getUsername()); } public void removeUser(UserForm userForm) throws Exception { user = new User(); if (log.isDebugEnabled()) { log.debug("removing user with id/username: " + userForm.getId() + "/" + userForm.getUsername()); } user.setId(Long.valueOf(userForm.getId())); dao.removeUser(user); } } |