KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > util > ParamEncoder


1 /**
2  * Licensed under the Artistic License; you may not use this file
3  * except in compliance with the License.
4  * You may obtain a copy of the License at
5  *
6  * http://displaytag.sourceforge.net/license.html
7  *
8  * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11  */

12 package org.displaytag.util;
13
14 import java.io.Serializable JavaDoc;
15
16
17 /**
18  * Simple utility class for encoding parameter names.
19  * @author Fabrizio Giustina
20  * @version $Revision: 739 $ ($Author: fgiust $)
21  */

22 public class ParamEncoder implements Serializable JavaDoc
23 {
24
25     /**
26      * D1597A17A6.
27      */

28     private static final long serialVersionUID = 899149338534L;
29
30     /**
31      * Unique identifier for a tag with the given id/name.
32      */

33     private String JavaDoc parameterIdentifier;
34
35     /**
36      * Generates a new parameter encoder for the table with the given id.
37      * @param idAttribute value of "id" attribute
38      */

39     public ParamEncoder(String JavaDoc idAttribute)
40     {
41         // use name and id to get the unique identifier
42
String JavaDoc stringIdentifier = "x-" + idAttribute; //$NON-NLS-1$
43

44         // get the array
45
char[] charArray = stringIdentifier.toCharArray();
46
47         // calculate a simple checksum-like value
48
int checkSum = 17;
49
50         for (int j = 0; j < charArray.length; j++)
51         {
52             checkSum = 3 * checkSum + charArray[j];
53         }
54
55         // keep it positive
56
checkSum &= 0x7fffff;
57
58         // this is the full identifier used for all the parameters
59
this.parameterIdentifier = "d-" + checkSum + "-"; //$NON-NLS-1$ //$NON-NLS-2$
60
}
61
62     /**
63      * encode a parameter name prepending calculated <code>parameterIdentifier</code>.
64      * @param paramName parameter name
65      * @return encoded parameter name in the form <code>d-<em>XXXX</em>-<em>name</em></code>
66      */

67     public String JavaDoc encodeParameterName(String JavaDoc paramName)
68     {
69         return this.parameterIdentifier + paramName;
70     }
71
72     /**
73      * Check if the given parameter has been encoded using paramEncoder. It actually check if the parameter name starts
74      * with the calculated <code>parameterIdentifier</code>. Null safe (a null string returns <code>false</code>).
75      * @param paramName parameter name
76      * @return <code>true</code> if the given parameter as been encoded using this param encoder
77      */

78     public boolean isParameterEncoded(String JavaDoc paramName)
79     {
80         return paramName != null && paramName.startsWith(this.parameterIdentifier);
81     }
82
83 }
Popular Tags