001: /*
002: * $Header: /export/home/cvsroot/MyPersonalizerRepository/MyPersonalizer/Subsystems/Admin/Sources/es/udc/mypersonalizer/admin/http/controller/actions/usermgnt/propertyeditor/UsersToolEditPropertyAccessStrategy.java,v 1.1.1.1 2004/03/25 12:08:38 fbellas Exp $
003: * $Revision: 1.1.1.1 $
004: * $Date: 2004/03/25 12:08:38 $
005: *
006: * =============================================================================
007: *
008: * Copyright (c) 2003, The MyPersonalizer Development Group
009: * (http://www.tic.udc.es/~fbellas/mypersonalizer/index.html) at
010: * University Of A Coruna
011: * All rights reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions are met:
015: *
016: * - Redistributions of source code must retain the above copyright notice,
017: * this list of conditions and the following disclaimer.
018: *
019: * - Redistributions in binary form must reproduce the above copyright notice,
020: * this list of conditions and the following disclaimer in the documentation
021: * and/or other materials provided with the distribution.
022: *
023: * - Neither the name of the University Of A Coruna nor the names of its
024: * contributors may be used to endorse or promote products derived from
025: * this software without specific prior written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
028: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
029: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
030: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
031: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
032: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
033: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
034: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
035: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
036: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: */
040:
041: package es.udc.mypersonalizer.admin.http.controller.actions.usermgnt.propertyeditor;
042:
043: import javax.servlet.http.HttpServletRequest;
044:
045: import es.udc.mypersonalizer.kernel.model.actions.ActionProcessorSingleton;
046: import es.udc.mypersonalizer.kernel.model.properties.Property;
047: import es.udc.mypersonalizer.kernel.util.exceptions.InternalErrorException;
048: import es.udc.mypersonalizer.kernel.util.exceptions.InstanceNotFoundException;
049: import es.udc.mypersonalizer.kernel.util.exceptions.ModelException;
050: import es.udc.mypersonalizer.kernel.model.repository.interfaces.UserRegistrationInformation;
051: import es.udc.mypersonalizer.kernel.model.editors.UserRegistrationInformationEditor;
052: import es.udc.mypersonalizer.kernel.model.editors.EditorFactory;
053:
054: import es.udc.mypersonalizer.admin.http.controller.actions.propertyeditor.interfaces.AbstractNoValidatePropertyAccessStrategy;
055:
056: /**
057: * Access the users registration information using the model actions.
058: * Lets the user use the property editor to edit a user registration
059: * information property.
060: *
061: * @author Abel Iago Toral Quiroga
062: * @since 1.0
063: */
064: public class UsersToolEditPropertyAccessStrategy extends
065: AbstractNoValidatePropertyAccessStrategy {
066:
067: /**
068: * Uses model action <code>FindUserAction</code>.
069: * @param identifier Is the user login name.
070: */
071: public Property findProperty(HttpServletRequest request,
072: String identifier) throws InstanceNotFoundException,
073: InternalErrorException {
074:
075: try {
076: UserRegistrationInformation user = (UserRegistrationInformation) ActionProcessorSingleton
077: .getInstance()
078: .execute("FindUserAction", identifier);
079: Property userProperty = user.getProperty();
080:
081: UserRegistrationInformationEditor editor = EditorFactory
082: .getInstance()
083: .createUserRegistrationInformationEditor(
084: userProperty);
085:
086: /* Remove not editable properties */
087: editor.removeLoginName();
088: editor.removeStoredPassword();
089: editor.removeRegistrationDate();
090: editor.removeLastSignInDate();
091: editor.removeDesktopLayoutPropertyIdentifier();
092:
093: return userProperty;
094:
095: } catch (InstanceNotFoundException e) {
096: throw e;
097: } catch (ModelException e) {
098: throw new InternalErrorException(e);
099: }
100: }
101:
102: /**
103: * Uses model action <code>UpdateUserAction</code>.
104: * @param identifier Is the user login name.
105: */
106: public void updateProperty(HttpServletRequest request,
107: String identifier, Property property)
108: throws InternalErrorException {
109:
110: try {
111: UserRegistrationInformation newUserRegistrationInformation = new UserRegistrationInformation(
112: identifier, property);
113:
114: ActionProcessorSingleton.getInstance().execute(
115: "UpdateUserAction", newUserRegistrationInformation);
116:
117: } catch (Exception e) {
118: throw new InternalErrorException(e);
119: }
120: }
121: }
|