Lines 12-20
Link Here
|
12 |
******************************************************************************/ |
12 |
******************************************************************************/ |
13 |
package org.eclipse.persistence.sdo.helper; |
13 |
package org.eclipse.persistence.sdo.helper; |
14 |
|
14 |
|
15 |
import commonj.sdo.Property; |
|
|
16 |
import commonj.sdo.helper.HelperContext; |
15 |
import commonj.sdo.helper.HelperContext; |
17 |
|
|
|
18 |
import java.io.FileReader; |
16 |
import java.io.FileReader; |
19 |
import java.io.IOException; |
17 |
import java.io.IOException; |
20 |
import java.io.Reader; |
18 |
import java.io.Reader; |
Lines 46-52
Link Here
|
46 |
private static final String lsep2 = lsep + lsep; |
44 |
private static final String lsep2 = lsep + lsep; |
47 |
private static final String START_PROPERTY_INDEX = "START_PROPERTY_INDEX"; |
45 |
private static final String START_PROPERTY_INDEX = "START_PROPERTY_INDEX"; |
48 |
private Map generatedBuffers; |
46 |
private Map generatedBuffers; |
49 |
private boolean generateInterfaces = true; |
47 |
private boolean interfaceGenerator = true; |
|
|
48 |
private boolean implGenerator = true; |
50 |
private CodeWriter codeWriter; |
49 |
private CodeWriter codeWriter; |
51 |
private SDOClassGeneratorListener sdoClassGeneratorListener; |
50 |
private SDOClassGeneratorListener sdoClassGeneratorListener; |
52 |
|
51 |
|
Lines 62-67
Link Here
|
62 |
generatedBuffers = new HashMap(); |
61 |
generatedBuffers = new HashMap(); |
63 |
} |
62 |
} |
64 |
|
63 |
|
|
|
64 |
public void setInterfaceGenerator(boolean genIterfaces) { |
65 |
interfaceGenerator = genIterfaces; |
66 |
} |
67 |
|
68 |
public void setImplGenerator(boolean genImpls) { |
69 |
implGenerator = genImpls; |
70 |
} |
71 |
|
65 |
public static void main(String[] args) { |
72 |
public static void main(String[] args) { |
66 |
// default to dynamic context |
73 |
// default to dynamic context |
67 |
SDOClassGenerator generator = new SDOClassGenerator(new SDOHelperContext()); |
74 |
SDOClassGenerator generator = new SDOClassGenerator(new SDOHelperContext()); |
Lines 76-102
Link Here
|
76 |
if (args[i].equals("-help")) { |
83 |
if (args[i].equals("-help")) { |
77 |
generator.printUsage(null); |
84 |
generator.printUsage(null); |
78 |
System.exit(0); |
85 |
System.exit(0); |
79 |
} |
86 |
} else if (args[i].equals("-sourceFile")) { |
80 |
if (args[i].equals("-sourceFile")) { |
|
|
81 |
if (i == (argsLength - 1)) { |
87 |
if (i == (argsLength - 1)) { |
82 |
generator.printUsage("sdo_classgenerator_usage_missing_sourcefile_value"); |
88 |
generator.printUsage("sdo_classgenerator_usage_missing_sourcefile_value"); |
83 |
System.exit(0); |
89 |
System.exit(0); |
84 |
} |
90 |
} |
85 |
sourceFile = args[++i]; |
91 |
sourceFile = args[++i]; |
86 |
} |
92 |
} else if (args[i].equals("-targetDirectory")) { |
87 |
if (args[i].equals("-targetDirectory")) { |
|
|
88 |
if (i == (argsLength - 1)) { |
93 |
if (i == (argsLength - 1)) { |
89 |
generator.printUsage("sdo_classgenerator_usage_missing_targetdir"); |
94 |
generator.printUsage("sdo_classgenerator_usage_missing_targetdir"); |
90 |
System.exit(0); |
95 |
System.exit(0); |
91 |
} |
96 |
} |
92 |
sourceDir = args[++i]; |
97 |
sourceDir = args[++i]; |
93 |
} |
98 |
} else if (args[i].equals("-logLevel")) { |
94 |
|
99 |
// log level is optional and will default to INFO |
95 |
// log level is optional and will default to INFO |
|
|
96 |
if (args[i].equals("-logLevel")) { |
97 |
if (i != (argsLength - 1)) { |
100 |
if (i != (argsLength - 1)) { |
98 |
AbstractSessionLog.getLog().setLevel(Integer.parseInt(args[++i])); |
101 |
AbstractSessionLog.getLog().setLevel(Integer.parseInt(args[++i])); |
99 |
} |
102 |
} |
|
|
103 |
} else if (args[i].equals("-noInterfaces")) { |
104 |
generator.setInterfaceGenerator(false); |
105 |
} else if (args[i].equals("-noImpls")) { |
106 |
generator.setImplGenerator(false); |
100 |
} |
107 |
} |
101 |
} |
108 |
} |
102 |
if (null == sourceFile) { |
109 |
if (null == sourceFile) { |
Lines 130-148
Link Here
|
130 |
|
137 |
|
131 |
// Because we can no longer use Helper.cr() inside of message bundles, we must break |
138 |
// Because we can no longer use Helper.cr() inside of message bundles, we must break |
132 |
// up the message into separate lines and use Helper.cr() here instead. (bug6470503) |
139 |
// up the message into separate lines and use Helper.cr() here instead. (bug6470503) |
133 |
String messageString = ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_1of6", new Object[] { Helper.getShortClassName(getClass()) }); |
140 |
String messageString = ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_1of8", new Object[] { Helper.getShortClassName(getClass()) }); |
134 |
messageString += Helper.cr() + Helper.cr(); |
141 |
messageString += Helper.cr() + Helper.cr(); |
135 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_2of6"); |
142 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_2of8"); |
136 |
messageString += Helper.cr(); |
143 |
messageString += Helper.cr(); |
137 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_3of6"); |
144 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_3of8"); |
138 |
messageString += Helper.cr(); |
145 |
messageString += Helper.cr(); |
139 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_4of6"); |
146 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_4of8"); |
140 |
messageString += Helper.cr(); |
147 |
messageString += Helper.cr(); |
141 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_5of6"); |
148 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_5of8"); |
142 |
messageString += Helper.cr(); |
149 |
messageString += Helper.cr(); |
143 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_6of6"); |
150 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_6of8"); |
144 |
messageString += Helper.cr(); |
151 |
messageString += Helper.cr(); |
145 |
|
152 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_7of8"); |
|
|
153 |
messageString += Helper.cr(); |
154 |
messageString += ToStringLocalization.buildMessage("sdo_classgenerator_usage_help_8of8"); |
155 |
messageString += Helper.cr(); |
156 |
|
146 |
System.out.println(messageString); |
157 |
System.out.println(messageString); |
147 |
} |
158 |
} |
148 |
|
159 |
|
Lines 212-218
Link Here
|
212 |
|
223 |
|
213 |
public Map generate(CodeWriter aCodeWriter, java.util.List types) { |
224 |
public Map generate(CodeWriter aCodeWriter, java.util.List types) { |
214 |
generatedBuffers = new HashMap(); |
225 |
generatedBuffers = new HashMap(); |
215 |
generateInterfaces = true; |
|
|
216 |
codeWriter = aCodeWriter; |
226 |
codeWriter = aCodeWriter; |
217 |
|
227 |
|
218 |
for (int i = 0; i < types.size(); i++) { |
228 |
for (int i = 0; i < types.size(); i++) { |
Lines 224-231
Link Here
|
224 |
String packageDir = nextBuffer.getPackageName(); |
234 |
String packageDir = nextBuffer.getPackageName(); |
225 |
packageDir = packageDir.replace('.', '/'); |
235 |
packageDir = packageDir.replace('.', '/'); |
226 |
|
236 |
|
227 |
getCodeWriter().writeInterface(packageDir, nextBuffer.getInterfaceName() + ".java", nextBuffer.getInterfaceBuffer()); |
237 |
if(interfaceGenerator) { |
228 |
getCodeWriter().writeImpl(packageDir, nextBuffer.getClassName() + ".java", nextBuffer.getClassBuffer()); |
238 |
getCodeWriter().writeInterface(packageDir, nextBuffer.getInterfaceName() + ".java", nextBuffer.getInterfaceBuffer()); |
|
|
239 |
} |
240 |
if(implGenerator) { |
241 |
getCodeWriter().writeImpl(packageDir, nextBuffer.getClassName() + ".java", nextBuffer.getClassBuffer()); |
242 |
} |
229 |
} |
243 |
} |
230 |
} |
244 |
} |
231 |
return generatedBuffers; |
245 |
return generatedBuffers; |
Lines 235-241
Link Here
|
235 |
private ClassBuffer buildClassForType(SDOType sdoType) { |
249 |
private ClassBuffer buildClassForType(SDOType sdoType) { |
236 |
ClassBuffer classBuffer = new ClassBuffer(sdoClassGeneratorListener); |
250 |
ClassBuffer classBuffer = new ClassBuffer(sdoClassGeneratorListener); |
237 |
classBuffer.setSdoType(sdoType); |
251 |
classBuffer.setSdoType(sdoType); |
238 |
classBuffer.setGenerateInterface(generateInterfaces); |
252 |
classBuffer.setGenerateInterface(interfaceGenerator); |
239 |
classBuffer.setSdoTypeName(sdoType.getName()); |
253 |
classBuffer.setSdoTypeName(sdoType.getName()); |
240 |
StringBuffer currentClassBuffer = new StringBuffer(); |
254 |
StringBuffer currentClassBuffer = new StringBuffer(); |
241 |
if (sdoClassGeneratorListener != null) { |
255 |
if (sdoClassGeneratorListener != null) { |
Lines 299-305
Link Here
|
299 |
} |
313 |
} |
300 |
|
314 |
|
301 |
currentClassBuffer.append("extends ").append(implExtends); |
315 |
currentClassBuffer.append("extends ").append(implExtends); |
302 |
if (generateInterfaces) { |
316 |
if (interfaceGenerator) { |
303 |
currentClassBuffer.append(" implements ")// |
317 |
currentClassBuffer.append(" implements ")// |
304 |
.append(interfaceName); |
318 |
.append(interfaceName); |
305 |
} |
319 |
} |
Lines 308-314
Link Here
|
308 |
classBuffer.getMethodBuffer().append(buildNoArgCtor(fullClassName)); |
322 |
classBuffer.getMethodBuffer().append(buildNoArgCtor(fullClassName)); |
309 |
currentClassBuffer.append(indent).append(" {").append(lsep2); |
323 |
currentClassBuffer.append(indent).append(" {").append(lsep2); |
310 |
|
324 |
|
311 |
if (generateInterfaces) { |
325 |
if (interfaceGenerator) { |
312 |
StringBuffer currentInterfaceBuffer = new StringBuffer(); |
326 |
StringBuffer currentInterfaceBuffer = new StringBuffer(); |
313 |
if (sdoClassGeneratorListener != null) { |
327 |
if (sdoClassGeneratorListener != null) { |
314 |
sdoClassGeneratorListener.preInterfacePackage(currentInterfaceBuffer); |
328 |
sdoClassGeneratorListener.preInterfacePackage(currentInterfaceBuffer); |
Lines 468-474
Link Here
|
468 |
* @param className |
482 |
* @param className |
469 |
*/ |
483 |
*/ |
470 |
private void buildGetMethodBuffer(ClassBuffer classBuffer, SDOProperty property, java.util.List documentation) { |
484 |
private void buildGetMethodBuffer(ClassBuffer classBuffer, SDOProperty property, java.util.List documentation) { |
471 |
String returnType = getJavaTypeForProperty(property); |
485 |
String returnType = SDOUtil.getJavaTypeForProperty(property); |
472 |
String methodName = SDOUtil.getMethodName(property.getName(), returnType); |
486 |
String methodName = SDOUtil.getMethodName(property.getName(), returnType); |
473 |
|
487 |
|
474 |
if (!(property.getType().isChangeSummaryType() && methodName.equals("getChangeSummary"))) { |
488 |
if (!(property.getType().isChangeSummaryType() && methodName.equals("getChangeSummary"))) { |
Lines 484-490
Link Here
|
484 |
pushIndent(); |
498 |
pushIndent(); |
485 |
classBuffer.getMethodBuffer().append(indent).append("return "); |
499 |
classBuffer.getMethodBuffer().append(indent).append("return "); |
486 |
//cast return value |
500 |
//cast return value |
487 |
String builtIn = getBuiltInType(returnType); |
501 |
String builtIn = SDOUtil.getBuiltInType(returnType); |
488 |
|
502 |
|
489 |
if (builtIn != null) { |
503 |
if (builtIn != null) { |
490 |
String wrapperCall = getWrapperCall(returnType); |
504 |
String wrapperCall = getWrapperCall(returnType); |
Lines 513-519
Link Here
|
513 |
popIndent(); |
527 |
popIndent(); |
514 |
classBuffer.getMethodBuffer().append(indent).append("}").append(lsep2); |
528 |
classBuffer.getMethodBuffer().append(indent).append("}").append(lsep2); |
515 |
} |
529 |
} |
516 |
if (generateInterfaces) { |
530 |
if (interfaceGenerator) { |
517 |
classBuffer.getInterfaceBuffer().append(indent); |
531 |
classBuffer.getInterfaceBuffer().append(indent); |
518 |
classBuffer.getInterfaceBuffer().append("public "); |
532 |
classBuffer.getInterfaceBuffer().append("public "); |
519 |
classBuffer.getInterfaceBuffer().append(returnType).append(" "); |
533 |
classBuffer.getInterfaceBuffer().append(returnType).append(" "); |
Lines 546-552
Link Here
|
546 |
classBuffer.getMethodBuffer().append(methodName); |
560 |
classBuffer.getMethodBuffer().append(methodName); |
547 |
classBuffer.getMethodBuffer().append("("); |
561 |
classBuffer.getMethodBuffer().append("("); |
548 |
|
562 |
|
549 |
String paramType = getJavaTypeForProperty(property); |
563 |
String paramType = SDOUtil.getJavaTypeForProperty(property); |
550 |
|
564 |
|
551 |
classBuffer.getMethodBuffer().append(paramType).append(" value"); |
565 |
classBuffer.getMethodBuffer().append(paramType).append(" value"); |
552 |
|
566 |
|
Lines 563-569
Link Here
|
563 |
classBuffer.getMethodBuffer().append(indent).append("}"); |
577 |
classBuffer.getMethodBuffer().append(indent).append("}"); |
564 |
classBuffer.getMethodBuffer().append(lsep2); |
578 |
classBuffer.getMethodBuffer().append(lsep2); |
565 |
|
579 |
|
566 |
if (generateInterfaces) { |
580 |
if (interfaceGenerator) { |
567 |
classBuffer.getInterfaceBuffer().append(indent); |
581 |
classBuffer.getInterfaceBuffer().append(indent); |
568 |
classBuffer.getInterfaceBuffer().append("public void "); |
582 |
classBuffer.getInterfaceBuffer().append("public void "); |
569 |
classBuffer.getInterfaceBuffer().append(methodName); |
583 |
classBuffer.getInterfaceBuffer().append(methodName); |
Lines 590-635
Link Here
|
590 |
indent = buf.toString(); |
604 |
indent = buf.toString(); |
591 |
} |
605 |
} |
592 |
|
606 |
|
593 |
/** |
|
|
594 |
* INTERNAL: |
595 |
* @param qualifiedName |
596 |
* @param targetNamespace |
597 |
* @return |
598 |
*/ |
599 |
private String getBuiltInType(String typeName) { |
600 |
if ((typeName.equals(ClassConstants.PBOOLEAN.getName())) || (typeName.equals(ClassConstants.BOOLEAN.getName()))) { |
601 |
return "Boolean"; |
602 |
} else if ((typeName.equals(ClassConstants.PBYTE.getName())) || (typeName.equals(ClassConstants.BYTE.getName()))) { |
603 |
return "Byte"; |
604 |
} else if ((typeName.equals(ClassConstants.APBYTE.getName())) || (typeName.equals(ClassConstants.ABYTE.getName()))) { |
605 |
return "Bytes"; |
606 |
} else if ((typeName.equals(ClassConstants.PCHAR.getName())) || (typeName.equals(ClassConstants.CHAR.getName()))) { |
607 |
return "Char"; |
608 |
} else if ((typeName.equals(ClassConstants.PDOUBLE.getName())) || (typeName.equals(ClassConstants.DOUBLE.getName()))) { |
609 |
return "Double"; |
610 |
} else if ((typeName.equals(ClassConstants.PFLOAT.getName())) || (typeName.equals(ClassConstants.FLOAT.getName()))) { |
611 |
return "Float"; |
612 |
} else if ((typeName.equals(ClassConstants.PLONG.getName())) || (typeName.equals(ClassConstants.LONG.getName()))) { |
613 |
return "Long"; |
614 |
} else if ((typeName.equals(ClassConstants.PSHORT.getName())) || (typeName.equals(ClassConstants.SHORT.getName()))) { |
615 |
return "Short"; |
616 |
} else if ((typeName.equals(ClassConstants.PINT.getName())) || (typeName.equals(ClassConstants.INTEGER.getName()))) { |
617 |
return "Int"; |
618 |
} else if (typeName.equals(ClassConstants.STRING.getName())) { |
619 |
return "String"; |
620 |
} else if (typeName.equals(ClassConstants.BIGINTEGER.getName())) { |
621 |
return "BigInteger"; |
622 |
} else if (typeName.equals(ClassConstants.BIGDECIMAL.getName())) { |
623 |
return "BigDecimal"; |
624 |
} else if (typeName.equals(ClassConstants.UTILDATE.getName())) { |
625 |
return "Date"; |
626 |
} else if (typeName.equals("java.util.List")) { |
627 |
return "List"; |
628 |
} |
629 |
|
630 |
return null; |
631 |
} |
632 |
|
633 |
public void setGeneratedBuffers(Map generatedBuffersMap) { |
607 |
public void setGeneratedBuffers(Map generatedBuffersMap) { |
634 |
generatedBuffers = generatedBuffersMap; |
608 |
generatedBuffers = generatedBuffersMap; |
635 |
} |
609 |
} |
Lines 655-675
Link Here
|
655 |
return null; |
629 |
return null; |
656 |
} |
630 |
} |
657 |
|
631 |
|
658 |
private String getJavaTypeForProperty(SDOProperty property) { |
|
|
659 |
if (property.isMany() || ((SDOType)property.getType()).isXsdList()) { |
660 |
return "java.util.List"; |
661 |
} else { |
662 |
SDOType propertyType = property.getType(); |
663 |
Class instanceClass = propertyType.getInstanceClass(); |
664 |
if (ClassConstants.ABYTE.equals(instanceClass)) { |
665 |
return "Byte[]"; |
666 |
} else if (ClassConstants.APBYTE.equals(instanceClass)) { |
667 |
return "byte[]"; |
668 |
} |
669 |
return propertyType.getInstanceClassName(); |
670 |
} |
671 |
} |
672 |
|
673 |
public void setCodeWriter(CodeWriter theCodeWriter) { |
632 |
public void setCodeWriter(CodeWriter theCodeWriter) { |
674 |
codeWriter = theCodeWriter; |
633 |
codeWriter = theCodeWriter; |
675 |
} |
634 |
} |