taxeditor part of fix for #4121 (Changing password does not work)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / password / PasswordWizardPage.java
index 1fa087abd51780e4163f5811e81201e4dc137635..1e5ce2f62720ea4908c70b30daeae0dffef1efcb 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -39,13 +39,13 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
 
        /** Constant <code>NAME="USER_WIZARD_PAGE"</code> */
        public static final String NAME = "USER_WIZARD_PAGE";
-       
+
        private TextWithLabelElement text_oldPassword;
        private TextWithLabelElement text_password;
        private TextWithLabelElement text_passwordRepeat;
-       private PasswordValidator passwordValidator;
+       private final PasswordValidator passwordValidator;
 
-       private UniqueUserNameValidator uniqueUsernameValidator;
+       private final UniqueUserNameValidator uniqueUsernameValidator;
 
        /**
         * @param formFactory
@@ -55,7 +55,7 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
        protected PasswordWizardPage(CdmFormFactory formFactory,
                        ConversationHolder conversation, User entity) {
                super(formFactory, conversation, entity);
-               
+
                passwordValidator = new PasswordValidator();
                uniqueUsernameValidator = new UniqueUserNameValidator();
        }
@@ -67,24 +67,28 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
        public void createControl(Composite parent) {
                Composite control = formFactory.createComposite(parent);
                control.setLayoutData(LayoutConstants.FILL());
-               
+
                setPageComplete(false);
-               
+
                control.setLayout(LayoutConstants.LAYOUT(2, false));
                WizardPageRootElement rootElement = new WizardPageRootElement(formFactory, control, getConversationHolder());
-               
-               if(!CdmStore.getLoginManager().isAdmin()){
-                       text_oldPassword = formFactory.createTextWithLabelElement(rootElement, "Old Password", null, SWT.PASSWORD);
+
+               if(isChangingOwnPassword()) {
+                   text_oldPassword = formFactory.createTextWithLabelElement(rootElement, "Old Password", null, SWT.PASSWORD);
                }
                text_password =  formFactory.createTextWithLabelElement(rootElement, "New Password", null, SWT.PASSWORD);
                text_passwordRepeat =  formFactory.createTextWithLabelElement(rootElement, "Repeat Password", null, SWT.PASSWORD);
-               
+
                ((Text)text_passwordRepeat.getMainControl()).addModifyListener(this);
-               
+
                setControl(control);
        }
-       
-       
+
+    protected boolean isChangingOwnPassword() {
+        return getEntity() != null && getEntity().getUsername().equals(CdmStore.getCurrentAuthentiation().getName());
+    }
+
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement)
         */
@@ -94,37 +98,39 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
                // not used
                return null;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
         */
        /** {@inheritDoc} */
-       public void modifyText(ModifyEvent e) {
+       @Override
+    public void modifyText(ModifyEvent e) {
                validate();
        }
-       
+
        private void validate(){
                String message;
-               
+
                if((message = passwordValidator.passwordsMatch(text_password.getText(), text_passwordRepeat.getText())) != null){
                        // pass
                }
                else if((message = passwordValidator.isValid(text_password.getText())) != null){
                        // pass
                }
-               
-               setErrorMessage(message);               
+
+               setErrorMessage(message);
        }
-       
+
        private class UniqueUserNameValidator implements IInputValidator{
 
                private static final String USER_EXISTS = "Username already exists";
                private static final String NAME_TO_SHORT = "Username is empty";
-               
+
                /* (non-Javadoc)
                 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
                 */
-               public String isValid(String newText) {
+               @Override
+        public String isValid(String newText) {
                        // query for username
                        if(newText.length() < 1){
                                setPageComplete(false);
@@ -134,43 +140,44 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
                                setPageComplete(false);
                                return USER_EXISTS;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
        }
-       
+
        private class PasswordValidator implements IInputValidator{
 
                private static final int PW_MIN_LENGTH = 5;
-               
+
                private static final String TO_SHORT = "Password has to have at least " + PW_MIN_LENGTH + " characters";
                private static final String NO_MATCH = "The passwords do not match";
-               
+
                /* (non-Javadoc)
                 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
                 */
-               public String isValid(String newText) {
+               @Override
+        public String isValid(String newText) {
                        if(newText.length() < PW_MIN_LENGTH){
                                setPageComplete(false);
                                return TO_SHORT;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
-               
+
                public String passwordsMatch(String password1, String password2){
 
                        if(! password1.equals(password2)){
                                setPageComplete(false);
                                return NO_MATCH;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
-               
+
        }
 
        /**