| 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 | } |