1 20 package org.objectweb.modfact.jmi.api; 21 22 import javax.jmi.model.*; 23 24 import org.objectweb.modfact.jmi.helper.*; 25 26 27 30 public class EnumerationTypeImplementationGenerator 31 extends EnumerationTypeInterfaceGenerator { 32 33 34 37 public void generate() { 38 39 int d=0; 40 EnumerationType type = input[d]; 41 42 43 49 outputln( 50 "package " + JMIProvider.qualifierOf(type) +";" ); 51 52 outputln("public class "+type.getName()+"Enum implements " +type.getName() 54 +" {"); 55 56 String [] labels = (String []) type.getLabels().toArray(new String [0]); 58 59 for (int i=0 ; i < labels.length; i++) { 60 outputln("public static final "+type.getName()+"Enum " 61 +labels[i].toUpperCase() 62 +" = new "+type.getName()+"Enum(\""+labels[i]+"\");"); 63 } 64 65 outputln("private static final "+ type.getName()+"[] allValues = new "+type.getName()+"[" +labels.length +"];"); 66 outputln("private static final java.util.List typeName;"); 67 68 outputln("private final String literalName;"); 69 70 outputln("static {"); 71 for (int i=0 ; i < labels.length; i++) { 72 outputln("allValues["+ i +"] = " 73 +labels[i].toUpperCase() 74 +";"); 75 } 76 outputln("java.util.Vector temp = new java.util.Vector();"); 77 ModelElement elem = type; 79 while(true) { 80 if(elem==null) break; 81 outputln("temp.insertElementAt(\""+elem.getName()+"\",0);" ); 82 elem = elem.getContainer(); 83 } 84 outputln("typeName = java.util.Collections.unmodifiableList(temp);"); 85 outputln("}"); 86 87 outputln("public "+type.getName()+"Enum(String literalName) {"); 88 outputln("this.literalName = literalName;"); 89 outputln("}"); 90 91 outputln("public String toString() {"); 92 outputln("return literalName;"); 93 outputln("}"); 94 95 outputln("public static " +type.getName() +" forName(String value) {" ); 96 outputln("for(int i=0; i<allValues.length; i++) {"); 97 outputln("if(allValues[i].toString().equals(value)) return allValues[i];" ); 98 outputln("}"); 99 outputln("\t" +"return null;" ); 100 outputln("}"); 101 102 outputln("public java.util.List refTypeName() {"); 103 outputln("return typeName;"); 104 outputln("}"); 105 106 outputln("public boolean equals(Object o) {"); 107 outputln("if (o==null) {"); 108 outputln("return false;"); 109 outputln("} else {"); 110 output("return ((o instanceof javax.jmi.reflect.RefEnum) && "); 111 output("((javax.jmi.reflect.RefEnum) o).refTypeName().equals(typeName)"); 112 outputln("&& ((javax.jmi.reflect.RefEnum) o).toString().equals(literalName));"); 113 outputln("}"); 114 outputln("}"); 115 116 outputln("}"); 117 flushFile(); 118 } 119 120 } 121 | Popular Tags |