View Javadoc

1   package yarfraw.core.datamodel;
2   
3   import java.util.HashMap;
4   import java.util.Locale;
5   import java.util.Map;
6   
7   import javax.xml.namespace.QName;
8   
9   import yarfraw.utils.ValidationUtils;
10  
11  /***
12   * <li>Rss 1.0 - Not supported, this is ignored.</li>
13   * <li>Rss 2.0 - &lt;generator> A string indicating the program used to generate the channel.  
14   * </li>
15   * <li>Atom 1.0 - &lt;generator> 
16   * The "atom:generator" element's content identifies the agent used to generate a feed, for debugging and other purposes.
17   * </li>
18   * @author jliang
19   *
20   */
21  public class Generator extends AbstractBaseObject{
22    private static final long serialVersionUID = 20070927L;
23    private String _value;
24    private String _uri;
25    private String _version;
26    
27    public Generator(String generatorValue){
28      _value = generatorValue;
29    }
30    /***
31     * <li>Rss 1.0 - Not supported.</li>
32     * <li>Rss 2.0 - the text content of the &lt;generator>
33     * </li>
34     * <li>Atom 1.0 - 
35     * The content of this element, when present, MUST be a string that is a 
36     * human-readable name for the generating agent. The escaped versions of 
37     * characters such as "&" and ">" represent those characters, not markup.
38     * </li>
39     * @return
40     */
41    public String getValue() {
42      return _value;
43    }
44  
45    /***
46     * <li>Rss 1.0 - Not supported.</li>
47     * <li>Rss 2.0 - the text content of the &lt;generator>
48     * </li>
49     * <li>Atom 1.0 - 
50     * The content of this element, when present, MUST be a string that is a 
51     * human-readable name for the generating agent. The escaped versions of 
52     * characters such as "&" and ">" represent those characters, not markup.
53     * </li>
54     * @param value
55     */
56    public Generator setValue(String value) {
57      _value = value;
58      return this;
59    }
60  
61  
62    /***
63     * <li>Rss 1.0 - Not supported.</li>
64     * <li>Rss 2.0 -  - Not supported.
65     * </li>
66     * <li>Atom 1.0 - 
67     * The atom:generator element MAY have a "uri" attribute whose value MUST be 
68     * an IRI reference [RFC3987]. When dereferenced, the resulting URI 
69     * (mapped from an IRI, if necessary) SHOULD produce a representation that is relevant to that agent.
70     * </li>
71     * @return
72     */
73    public String getUri() {
74      return _uri;
75    }
76  
77    /***
78     * <li>Rss 1.0 - Not supported.</li>
79     * <li>Rss 2.0 -  - Not supported.
80     * </li>
81     * <li>Atom 1.0 - 
82     * The atom:generator element MAY have a "uri" attribute whose value MUST be 
83     * an IRI reference [RFC3987]. When dereferenced, the resulting URI 
84     * (mapped from an IRI, if necessary) SHOULD produce a representation that is relevant to that agent.
85     * </li>
86     * @param uri
87     * @return
88     */
89    public Generator setUri(String uri) {
90      _uri = uri;
91      return this;
92    }
93  
94  
95    /***
96     * <li>Rss 1.0 - Not supported.</li>
97     * <li>Rss 2.0 -  - Not supported.
98     * </li>
99     * <li>Atom 1.0 - 
100    * The atom:generator element MAY have a "version" attribute that indicates the version of the generating agent.
101    * </li>
102    * @return
103    */
104   public String getVersion() {
105     return _version;
106   }
107 
108   /***
109    * <li>Rss 1.0 - Not supported.</li>
110    * <li>Rss 2.0 -  - Not supported.
111    * </li>
112    * <li>Atom 1.0 - 
113    * The atom:generator element MAY have a "version" attribute that indicates the version of the generating agent.
114    * </li>
115    * @param version
116    */
117   public Generator setVersion(String version) {
118     _version = version;
119     return this;
120   }
121   ////////////////////////Common setters///////////////////////
122   /***
123    * Any other attribute that is not in the RSS 2.0 specs.
124    */
125   public Generator setOtherAttributes(Map<QName, String> otherAttributes) {
126     _otherAttributes = otherAttributes;
127     return this;
128   }
129   /***
130    * Add an attribute that is not in the RSS 2.0 specs.
131    */
132   public  Generator addOtherAttributes(QName namespace, String attribute) {
133     if(_otherAttributes == null){
134       _otherAttributes = new HashMap<QName, String>();
135     }
136     _otherAttributes.put(namespace, attribute);
137     return this;
138   }
139   
140 
141   /***
142    * <b>Atom 1.0 only</b><br/>
143    * Any element defined by this specification MAY have an xml:base attribute 
144    * [W3C.REC-xmlbase-20010627]. When xml:base is used in an Atom Document, 
145    * it serves the function described in section 5.1.1 of [RFC3986], establishing 
146    * the base URI (or IRI) for resolving any relative references found within the 
147    * effective scope of the xml:base attribute.
148    * @param base
149    * @return
150    */
151   public Generator setBase(String base) {
152     _base = base;
153     return this;
154   }
155   /***
156    * <li>Rss 2.0 - &lt;language> element. 
157    * The language the channel is written in. This allows aggregators to group 
158    * all Italian language sites, for example, on a single page. A list of allowable 
159    * values for this element, as provided by Netscape, is here. You may also use values 
160    * defined by the W3C.
161    * Only &lt;channel> support this element.</li>
162    * <li>Rss 1.0 - &lt;dc:language> element. A language of the intellectual content of the resource.
163    * Only &lt;channel> and &lt;item> support this element. </li>
164    * <li>Atom 1.0 - 'lang' attribute</li>
165    * <br/>
166    * Note: for Rss 2.0 and Rss 1.0, only &lt;channel> and &lt;item>
167    * @param lang
168    * @return
169    */
170   public Generator setLang(String lang) {
171     _lang = lang;
172     return this;
173   }
174   /***
175    * <li>Rss 2.0 - &lt;language> element. 
176    * The language the channel is written in. This allows aggregators to group 
177    * all Italian language sites, for example, on a single page. A list of allowable 
178    * values for this element, as provided by Netscape, is here. You may also use values 
179    * defined by the W3C.
180    * Only &lt;channel> support this element.</li>
181    * <li>Rss 1.0 - &lt;dc:language> element. A language of the intellectual content of the resource.
182    * Only &lt;channel> and &lt;item> support this element. </li>
183    * <li>Atom 1.0 - 'lang' attribute</li>
184    * <br/>
185    * Note: for Rss 2.0 and Rss 1.0, only &lt;channel> and &lt;item>
186    * @param lang
187    * @return
188    */
189   public Generator setLang(Locale lang) {
190     _lang = lang.getLanguage();
191     return this;
192   }
193   ////////////////////////Common setters///////////////////////
194   @Override
195   public void validate(FeedFormat format) throws ValidationException {
196     if(format == FeedFormat.RSS10){
197       return;
198     }
199     ValidationUtils.validateNotNull("[Generator] Value should not be null", _value);
200     ValidationUtils.validateUri("[Generator] uri should be an valid uri", _uri);
201   }
202   
203 }