Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||||||
AbstractBaseObject |
|
| 0.0;0 |
1 | package yarfraw.core.datamodel; |
|
2 | ||
3 | import java.io.Serializable; |
|
4 | import java.util.ArrayList; |
|
5 | import java.util.HashMap; |
|
6 | import java.util.List; |
|
7 | import java.util.Locale; |
|
8 | import java.util.Map; |
|
9 | import java.util.Map.Entry; |
|
10 | ||
11 | import javax.xml.namespace.QName; |
|
12 | ||
13 | import org.apache.commons.lang.builder.EqualsBuilder; |
|
14 | import org.apache.commons.lang.builder.HashCodeBuilder; |
|
15 | import org.apache.commons.lang.builder.ToStringBuilder; |
|
16 | import org.apache.commons.lang.builder.ToStringStyle; |
|
17 | import org.w3c.dom.Element; |
|
18 | ||
19 | import yarfraw.utils.XMLUtils; |
|
20 | /** |
|
21 | * An abstract base object for the core data model |
|
22 | */ |
|
23 | 46292 | abstract class AbstractBaseObject implements Serializable{ |
24 | protected String _base; |
|
25 | protected String _lang; |
|
26 | protected String _resource; |
|
27 | protected String _about; |
|
28 | //this is initial to 0 in the interest of saving space since most of the time |
|
29 | //these elements are expectted to be empty |
|
30 | 46292 | protected Map<QName, String> _otherAttributes = new HashMap<QName, String>(0); |
31 | 46293 | protected List<Element> _otherElements = new ArrayList<Element>(0); |
32 | ||
33 | /** |
|
34 | * This maps to the 'base' attribute that is common in all Atom 1.0 elements. |
|
35 | * Other {@link FeedFormat} will ignore this attribute. |
|
36 | * |
|
37 | * @return - attribute value. |
|
38 | */ |
|
39 | public String getBase() { |
|
40 | 750 | return _base; |
41 | } |
|
42 | /** |
|
43 | * The language attribute indicates the language that is used by the enclosed |
|
44 | * element. |
|
45 | * |
|
46 | * @return - attribute value. |
|
47 | */ |
|
48 | public String getLang() { |
|
49 | 927 | return _lang; |
50 | } |
|
51 | ||
52 | /** |
|
53 | * The language attribute indicates the language that is used by the enclosed |
|
54 | * element. |
|
55 | * |
|
56 | * @return - a new Locale Object by parsing the lang attribute. |
|
57 | */ |
|
58 | public Locale getLangAsLocale() { |
|
59 | 6 | if(_lang == null) |
60 | 3 | return null; |
61 | ||
62 | 3 | return new Locale(_lang); |
63 | } |
|
64 | ||
65 | /** |
|
66 | * This maps to the optional 'resource' attribute that present in some Rss 1.0 elements. |
|
67 | * Other {@link FeedFormat} will ignore this attribute. |
|
68 | * |
|
69 | * @return - attribute value. |
|
70 | */ |
|
71 | public String getResource() { |
|
72 | 156 | return _resource; |
73 | } |
|
74 | ||
75 | /** |
|
76 | * This maps to the required 'about' attribute that present of all second level elements |
|
77 | * (channel, image, item, and textinput). |
|
78 | * Other {@link FeedFormat} will ignore this attribute. |
|
79 | * |
|
80 | * @return - attribute value. |
|
81 | */ |
|
82 | public String getAbout() { |
|
83 | 531 | return _about; |
84 | } |
|
85 | ||
86 | /** |
|
87 | * Other additional elements that are not in the Rss specs. |
|
88 | */ |
|
89 | public List<Element> getOtherElements() { |
|
90 | 20443 | return _otherElements; |
91 | } |
|
92 | ||
93 | /** |
|
94 | * Search through the other element list and return the first element that matches |
|
95 | * both input the namespaceURI and the localName. |
|
96 | * |
|
97 | * @param namespaceURI - namespaceURI of the element to be search for |
|
98 | * @param localName - localName of the element |
|
99 | * @return - null if no matching element is found, |
|
100 | * the matching element otherwise. |
|
101 | */ |
|
102 | public Element getElementByNS(String namespaceURI, String localName){ |
|
103 | 78 | return XMLUtils.getElementByNS(_otherElements, namespaceURI, localName); |
104 | } |
|
105 | ||
106 | /** |
|
107 | * Search through the other element list and return the FIRST element that matches |
|
108 | * the input localName. |
|
109 | * |
|
110 | * @param localName - localName of the element |
|
111 | * @return - null if no matching element is found, |
|
112 | * the matching element otherwise. |
|
113 | */ |
|
114 | public Element getElementByLocalName(String localName){ |
|
115 | 12 | return XMLUtils.getElementByLocalName(_otherElements, localName); |
116 | } |
|
117 | ||
118 | /** |
|
119 | * Any other attribute that is not in the RSS specs. |
|
120 | */ |
|
121 | public Map<QName, String> getOtherAttributes() { |
|
122 | 7094 | return _otherAttributes; |
123 | } |
|
124 | ||
125 | /** |
|
126 | * Search for attributes that are not in the spec by its local name. |
|
127 | * @param localName localName of the attribute |
|
128 | * @return null if attribute is not found, the value of the attribute otherwise |
|
129 | */ |
|
130 | public String getAttributeValueByLocalName(String localName){ |
|
131 | 30 | if(_otherAttributes != null && localName != null){ |
132 | 30 | for(Entry<QName, String> e : _otherAttributes.entrySet()){ |
133 | 54 | if(localName.equals(e.getKey().getLocalPart())){ |
134 | 27 | return e.getValue(); |
135 | } |
|
136 | } |
|
137 | } |
|
138 | 3 | return null; |
139 | } |
|
140 | /** |
|
141 | * Search for attributes that are not in the spec by its {@link QName}. |
|
142 | * @param name {@link QName} of the attribute |
|
143 | * @return null if attribute is not found, the value of the attribute otherwise |
|
144 | */ |
|
145 | public String getAttributeValueByQName(QName name){ |
|
146 | 30 | if(_otherAttributes != null){ |
147 | 30 | return _otherAttributes.get(name); |
148 | } |
|
149 | 0 | return null; |
150 | } |
|
151 | ||
152 | @Override |
|
153 | public String toString(){ |
|
154 | 0 | return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); |
155 | } |
|
156 | @Override |
|
157 | public boolean equals(Object other){ |
|
158 | 1061 | return EqualsBuilder.reflectionEquals(this, other); |
159 | } |
|
160 | @Override |
|
161 | public int hashCode(){ |
|
162 | 4306 | return HashCodeBuilder.reflectionHashCode(this); |
163 | } |
|
164 | ||
165 | public abstract void validate(FeedFormat format) throws ValidationException; |
|
166 | } |