1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package ca.uhn.hl7v2.conf.classes.generator.builders;
33
34 import ca.uhn.hl7v2.conf.classes.generator.genclasses.*;
35 import ca.uhn.hl7v2.conf.classes.exceptions.*;
36
37
38
39
40
41
42
43
44 public class ConformancePrimitiveBuilder {
45 private final DeploymentManager depManager;
46 private final DocumentationBuilder docBuilder;
47
48 private final String packageName;
49
50
51
52 public ConformancePrimitiveBuilder(String packageName, DeploymentManager depManager) {
53 super();
54 this.packageName = packageName;
55 this.docBuilder = DocumentationBuilder.getDocumentationBuilder();
56 this.depManager = depManager;
57 }
58
59
60
61
62 public void buildClass(ca.uhn.hl7v2.conf.spec.message.AbstractComponent primitive, int profileType) {
63 GeneratedPrimitiveor/genclasses/GeneratedPrimitive.html#GeneratedPrimitive">GeneratedPrimitive genClass = new GeneratedPrimitive();
64 ProfileNameerator/builders/ProfileName.html#ProfileName">ProfileName profileName = new ProfileName(primitive.getName(), profileType);
65
66
67 genClass.setClassPackage(packageName);
68 genClass.addClassImport("ca.uhn.hl7v2.model.*");
69 genClass.addClassImport("ca.uhn.hl7v2.conf.classes.abs.*");
70 genClass.setProperties("extends AbstractConformanceDataType");
71
72 genClass.setName(profileName.getClassName());
73 docBuilder.decorateConstructor( genClass.getConstructor(), profileName.getClassName() );
74
75 if (primitive.getConstantValue() != null && primitive.getConstantValue().length() > 0) {
76
77 genClass.addConstantValue(primitive.getConstantValue());
78 } else {
79
80 GeneratedMethodnerator/genclasses/GeneratedMethod.html#GeneratedMethod">GeneratedMethod setter = new GeneratedMethod();
81 setter.addParam("java.lang.String value");
82 setter.addToThrows("ConfDataException");
83 setter.addToBody("super.setValue( value );");
84 setter.setReturnType("void");
85 setter.setVisibility("public");
86 setter.setName("setValue");
87 docBuilder.decorateSetValue(setter, primitive.getLength());
88 genClass.addMethod(setter);
89
90 genClass.addClassImport("ca.uhn.hl7v2.conf.classes.exceptions.*");
91 }
92 genClass.addMaxLength(primitive.getLength());
93
94
95 docBuilder.decoratePrimitive(genClass, primitive);
96 if (depManager.getVerbose())
97 System.out.println("Generating Primitive: " + packageName + "." + genClass.getName());
98
99 depManager.generateFile(genClass, packageName, genClass.getName());
100
101 }
102
103
104
105
106 public void buildClass(ca.uhn.hl7v2.conf.spec.message.Field primitive, String parentUnderlyingType, ProfileName profileName) {
107 GeneratedPrimitiveor/genclasses/GeneratedPrimitive.html#GeneratedPrimitive">GeneratedPrimitive genClass = new GeneratedPrimitive();
108
109
110 if (primitive.getName() == null || primitive.getName().length() < 1)
111 throw new ConformanceError("Error building ConformanceSegment: Runtime AbstractComponent does not contain a name.");
112
113 GeneratedMethodgenclasses/GeneratedMethod.html#GeneratedMethod">GeneratedMethod theConstructor = new GeneratedMethod();
114 genClass.setConstructor(theConstructor);
115 genClass.addClassImport("ca.uhn.hl7v2.model.*");
116
117 UnderlyingAccessors/UnderlyingAccessor.html#UnderlyingAccessor">UnderlyingAccessor underlyingAccessor = new UnderlyingAccessor(parentUnderlyingType, profileName.getAccessorName());
118 theConstructor.addParam(parentUnderlyingType + " parentSeg", "The parent underlying data type");
119 theConstructor.addParam("int rep", "The desired repetition");
120 theConstructor.setName(profileName.getClassName());
121 theConstructor.setVisibility("public ");
122 theConstructor.addToThrows("ca.uhn.hl7v2.HL7Exception");
123 theConstructor.addToBody("super( (Primitive)parentSeg." + underlyingAccessor + " );");
124 theConstructor.addToBody("if ( parentSeg." + underlyingAccessor + " == null )");
125 theConstructor.addToBody(" throw new ca.uhn.hl7v2.HL7Exception( \"Error accussing underlying object. This is a bug.\", 0 );");
126
127
128 genClass.setClassPackage(packageName);
129
130 genClass.addClassImport("ca.uhn.hl7v2.conf.classes.abs.*");
131
132 genClass.setProperties("extends AbstractConformanceDataType implements Repeatable");
133
134
135 genClass.setMinMaxReps(primitive.getMin(), primitive.getMax());
136
137 genClass.setName(profileName.getClassName());
138 docBuilder.decorateConstructor( genClass.getConstructor(), profileName.getClassName() );
139
140
141 if (primitive.getConstantValue() != null && primitive.getConstantValue().length() > 0) {
142 genClass.addConstantValue(primitive.getConstantValue());
143 } else {
144 GeneratedMethodnerator/genclasses/GeneratedMethod.html#GeneratedMethod">GeneratedMethod setter = new GeneratedMethod();
145 setter.addParam("java.lang.String value");
146 setter.addToThrows("ConfDataException");
147 setter.addToBody("super.setValue( value );");
148 setter.setReturnType("void");
149 setter.setVisibility("public");
150 setter.setName("setValue");
151 docBuilder.decorateSetValue(setter, primitive.getLength());
152 genClass.addMethod(setter);
153
154 genClass.addClassImport("ca.uhn.hl7v2.conf.classes.exceptions.*");
155 }
156 genClass.addMaxLength(primitive.getLength());
157
158
159 docBuilder.decoratePrimitive(genClass, primitive);
160 if (depManager.getVerbose())
161 System.out.println("Generating Primitive: " + packageName + "." + genClass.getName());
162
163 depManager.generateFile(genClass, packageName, genClass.getName());
164 }
165
166 }