01: /*
02: * IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved.
03: *
04: * http://izpack.org/
05: * http://izpack.codehaus.org/
06: *
07: * Copyright 2003 Elmar Grom
08: *
09: * Licensed under the Apache License, Version 2.0 (the "License");
10: * you may not use this file except in compliance with the License.
11: * You may obtain a copy of the License at
12: *
13: * http://www.apache.org/licenses/LICENSE-2.0
14: *
15: * Unless required by applicable law or agreed to in writing, software
16: * distributed under the License is distributed on an "AS IS" BASIS,
17: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18: * See the License for the specific language governing permissions and
19: * limitations under the License.
20: */
21: package com.izforge.izpack.util;
22:
23: import com.izforge.izpack.panels.PasswordGroup;
24: import com.izforge.izpack.panels.ProcessingClient;
25: import com.izforge.izpack.panels.Validator;
26: import java.util.Map;
27:
28: /**
29: * This class represents a simple validator for passwords to test equality. It is
30: * based on the example implementation of a password validator that cooperates with the
31: * password field in the <code>UserInputPanel</code>. Additional validation may
32: * be done by utilizing the params added to the password field.
33: *
34: * @author Elmar Grom
35: * @author Jeff Gordon
36: */
37: public class PasswordEqualityValidator implements Validator {
38:
39: /**PasswordEqualityValidator
40: * Validates the contend of multiple password fields. The test
41: *
42: * @param client the client object using the services of this validator.
43: *
44: * @return <code>true</code> if the validation passes, otherwise <code>false</code>.
45: */
46: public boolean validate(ProcessingClient client) {
47: boolean returnValue = false;
48: Map<String, String> params = getParams(client);
49: try {
50: returnValue = fieldsMatch(client);
51: if (returnValue) {
52: // Additional checking if params passed...
53: if (params != null) {
54: System.out.println("Additional " + params.size()
55: + " params not evaluated");
56: }
57: }
58: } catch (Exception e) {
59: System.out.println("validate() Failed: " + e);
60: }
61: return (returnValue);
62: }
63:
64: private Map<String, String> getParams(ProcessingClient client) {
65: PasswordGroup group = null;
66: Map<String, String> params = null;
67: try {
68: group = (PasswordGroup) client;
69: if (group.hasParams()) {
70: params = group.getValidatorParams();
71: }
72: } catch (Exception e) {
73: System.out.println("getParams() Failed: " + e);
74: }
75: return (params);
76: }
77:
78: private boolean fieldsMatch(ProcessingClient client) {
79: boolean returnValue = true;
80: int numFields = client.getNumFields();
81: // ----------------------------------------------------
82: // verify that there is more than one field. If there
83: // is only one field we have to return true.
84: // ----------------------------------------------------
85: if (numFields < 2) {
86: returnValue = true;
87: } else {
88: String content = client.getFieldContents(0);
89: for (int i = 1; i < numFields; i++) {
90: if (!content.equals(client.getFieldContents(i))) {
91: returnValue = false;
92: }
93: }
94: }
95: return returnValue;
96: }
97:
98: }
|