View Javadoc

1   
2   package org.catacomb.serial.om;
3   
4   import org.catacomb.interlish.structure.Attribute;
5   import org.catacomb.interlish.structure.Constructor;
6   import org.catacomb.report.E;
7   
8   
9   
10  
11  public class ElementConstructor implements Constructor {
12  
13  
14      public Object newInstance(String s) {
15          return new OmElement(s);
16      }
17  
18  
19      public boolean setAttributeField(Object parent, String fieldName, String val) {
20          if (parent instanceof OmElement) {
21              OmElement omp = (OmElement)parent;
22              omp.addAttribute(fieldName, val);
23          }
24          return true;
25      }
26  
27  
28      public void appendContent(Object obj, String s) {
29          ((OmElement)obj).addToBody(s);
30      }
31  
32  
33      public Object getChildObject(Object parent, String name, Attribute[] atta) {
34  
35          OmElement elt = new OmElement(name);
36  
37          return elt;
38      }
39  
40  
41      public void applyAttributes(Object obj, Attribute[] atta) {
42          ((OmElement)obj).copyAttributes(atta);
43      }
44  
45  
46  
47      public boolean setField(Object parent, String fieldName, Object child) {
48          boolean ok = false;
49  
50          if (parent instanceof OmElement && child instanceof String) {
51  
52              OmElement omp = (OmElement)parent;
53              OmElement ec = new OmElement(fieldName);
54  
55              ec.setBody((String)child);
56              omp.addElement(ec);
57  
58  
59          } else if (parent instanceof OmElement && child instanceof OmElement) {
60              OmElement omp = (OmElement)parent;
61              OmElement omc = (OmElement)child;
62  
63              if (omc.getName().equals(fieldName)) {
64                  omp.addElement(omc);
65                  ok = true;
66  
67              } else {
68                  E.error(" - element instantiator set field hs fieldname " +
69                          fieldName + "  but element " + omc.getName());
70              }
71  
72          } else {
73              E.error(" - ElementInstantiator set field : fieldname=" + fieldName +
74                      " parent=" + parent +
75                      "    child=" + child + " " + child.getClass().getName() +
76                      "  but need elements only");
77              (new Exception()).printStackTrace();
78          }
79          return ok;
80      }
81  
82  
83      public Object getField(Object parent, String fieldName) {
84          return new OmElement(fieldName);
85      }
86  
87  
88      public void setIntFromStatic(Object ret, String id, String sv) {
89          E.missing();
90      }
91  
92  
93  }