1 package org.exolab.castor.builder.factory;
2
3 import org.castor.xml.JavaNaming;
4 import org.exolab.castor.builder.SGTypes;
5 import org.exolab.castor.builder.info.CollectionInfo;
6 import org.exolab.castor.builder.info.FieldInfo;
7 import org.exolab.javasource.JClass;
8 import org.exolab.javasource.JMethod;
9 import org.exolab.javasource.JSourceCode;
10
11
12
13
14
15 public class CollectionODMG30MemberAndAccessorFactory extends CollectionMemberAndAccessorFactory {
16
17
18
19
20
21
22 public CollectionODMG30MemberAndAccessorFactory(final JavaNaming naming) {
23 super(naming);
24 }
25
26
27
28
29 public void generateInitializerCode(final FieldInfo fieldInfo, final JSourceCode jsc) {
30 jsc.add("this.");
31 jsc.append(fieldInfo.getName());
32 jsc.append(" = ODMG.getImplementation().newDArray();");
33 }
34
35
36
37
38 protected void createEnumerateMethod(final CollectionInfo fieldInfo, final JClass jClass,
39 final boolean useJava50) {
40 JMethod method = new JMethod("enumerate" + fieldInfo.getMethodSuffix(),
41 SGTypes.createEnumeration(fieldInfo.getContentType().getJType(), useJava50, true),
42 "an Enumeration over all elements of this collection");
43
44 JSourceCode sourceCode = method.getSourceCode();
45 sourceCode.add("java.util.Vector v = new java.util.Vector();");
46 sourceCode.add("java.util.Iterator i = ");
47 sourceCode.append(fieldInfo.getName());
48 sourceCode.append(".iterator();");
49 sourceCode.add("");
50 sourceCode.add("while (i.hasNext()) {");
51 sourceCode.indent();
52 sourceCode.add("v.add(i.next());");
53 sourceCode.unindent();
54 sourceCode.add("");
55 sourceCode.add("return v.elements();");
56
57 jClass.addMethod(method);
58 }
59
60 }