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 }