1 ${database.allClassCopyright}package ${glPackageBaseCommonS2DaoInternalVarious};
\r
3 import java.util.Collection;
\r
4 import java.util.Comparator;
\r
5 import java.util.HashMap;
\r
6 import java.util.Map;
\r
7 import java.util.TreeMap;
\r
10 * @author ${database.ClassAuthor}
\r
12 public class ${glInternalProcedureMetaData} {
\r
14 // ===================================================================================
\r
17 private String procedureName;
\r
18 private Map<String, ${glInternalProcedureParameterType}> unorderedMap = createUnorderedMap();
\r
19 private Map<String, ${glInternalProcedureParameterType}> parameterTypes = createParameterTypes();
\r
20 private boolean returnType;
\r
22 // ===================================================================================
\r
25 public ${glInternalProcedureMetaData}(final String procedureName) {
\r
26 this.procedureName = procedureName;
\r
29 // ===================================================================================
\r
32 protected Map<String, ${glInternalProcedureParameterType}> createUnorderedMap() {
\r
33 return new HashMap<String, ${glInternalProcedureParameterType}>();
\r
36 protected Map<String, ${glInternalProcedureParameterType}> createParameterTypes() {
\r
37 return new TreeMap<String, ${glInternalProcedureParameterType}>(new ParameterComparator());
\r
40 protected class ParameterComparator implements Comparator<String> {
\r
41 public int compare(String o1, String o2) {
\r
42 final int oneGreaterThanTwo = 1;
\r
43 final int twoGreaterThanOne = -1;
\r
44 final ${glInternalProcedureParameterType} parameterType1 = unorderedMap.get(o1);
\r
45 final ${glInternalProcedureParameterType} parameterType2 = unorderedMap.get(o2);
\r
46 if (parameterType1.isReturnType()) {
\r
47 return twoGreaterThanOne; // Return type is prior
\r
49 if (parameterType2.isReturnType()) {
\r
50 return oneGreaterThanTwo; // Return type is prior
\r
52 final Integer parameterIndex1 = parameterType1.getParameterIndex();
\r
53 final Integer parameterIndex2 = parameterType2.getParameterIndex();
\r
54 if (parameterIndex1 == null && parameterIndex2 == null) {
\r
55 return oneGreaterThanTwo; // No changes
\r
57 if (parameterIndex1 != null && parameterIndex2 == null) {
\r
58 return twoGreaterThanOne; // Not null is prior
\r
60 if (parameterIndex1 == null && parameterIndex2 != null) {
\r
61 return oneGreaterThanTwo; // Not null is prior
\r
63 return parameterIndex1.compareTo(parameterIndex2);
\r
67 // ===================================================================================
\r
70 public String getProcedureName() {
\r
71 return procedureName;
\r
74 public Collection<${glInternalProcedureParameterType}> parameterTypes() {
\r
75 return parameterTypes.values();
\r
78 public void addParameterType(final ${glInternalProcedureParameterType} parameterType) {
\r
79 final String name = parameterType.getParameterName();
\r
80 unorderedMap.put(name, parameterType);
\r
81 parameterTypes.put(name, parameterType);
\r
82 if (parameterType.isReturnType()) {
\r
87 public boolean hasReturnParameterType() {
\r