1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.javagen.agile.core.visitor;
17
18 import org.javagen.agile.core.Generator;
19 import org.javagen.agile.core.model.Model;
20 import org.javagen.agile.core.xml.XmlReader;
21 import org.javagen.agile.core.xml.jaxb.JAXBXmlReader;
22
23 /***
24 * Customizes model by reading in metadata XML file and setting all non-null values
25 * on model properties having matching IDs. Requires all nodes to have IDs and an
26 * index to be present in the root node.
27 *
28 * @author Richard Easterling
29 */
30 public class CustomizerVisitor implements Generator {
31
32 private XmlReader xmlReader;
33 private IdOverrideVisitor idOverrideVisitor;
34 private String idPrefixFilter;
35
36
37
38
39
40 public Model gen(Model input) {
41 Model customizedModels = getXmlReader().gen(null);
42 if (customizedModels==null)
43 return input;
44 getIdOverrideVisitor().setCustomizingModels(customizedModels);
45 getIdOverrideVisitor().setIdPrefixFilter(idPrefixFilter);
46 getIdOverrideVisitor().gen(input);
47 return input;
48 }
49
50
51
52
53
54 public XmlReader getXmlReader() {
55 if (xmlReader==null)
56 xmlReader = new JAXBXmlReader();
57 return xmlReader;
58 }
59
60 public void setXmlReader(XmlReader xmlReader) {
61 this.xmlReader = xmlReader;
62 }
63
64 public IdOverrideVisitor getIdOverrideVisitor() {
65 if (idOverrideVisitor==null)
66 idOverrideVisitor = new IdOverrideVisitor();
67 return idOverrideVisitor;
68 }
69
70 public void setIdOverrideVisitor(IdOverrideVisitor idOverrideVisitor) {
71 this.idOverrideVisitor = idOverrideVisitor;
72 }
73
74 public String getIdPrefixFilter() {
75 return idPrefixFilter;
76 }
77
78 public void setIdPrefixFilter(String idPrefixFilter) {
79 this.idPrefixFilter = idPrefixFilter;
80 }
81
82 }