Coverage Report - yarfraw.core.datamodel.TextInput
 
Classes in this File Line Coverage Branch Coverage Complexity
TextInput
96% 
100% 
0
 
 1  
 package yarfraw.core.datamodel;
 2  
 
 3  
 import java.io.IOException;
 4  
 import java.util.ArrayList;
 5  
 import java.util.HashMap;
 6  
 import java.util.List;
 7  
 import java.util.Map;
 8  
 
 9  
 import javax.xml.namespace.QName;
 10  
 import javax.xml.parsers.ParserConfigurationException;
 11  
 
 12  
 import org.w3c.dom.Element;
 13  
 import org.xml.sax.SAXException;
 14  
 
 15  
 import yarfraw.utils.ValidationUtils;
 16  
 import yarfraw.utils.XMLUtils;
 17  
 /**
 18  
  * <b>&lt;TextInput> element of Rss 1.0 and Rss 2.0. This is ignored by Atom 1.0</b>
 19  
  * <br/>
 20  
  * <li> Rss 2.0 -
 21  
  *A channel may optionally contain a <textInput> sub-element, which contains four required sub-elements.<br/>
 22  
  *&lt;title> -- The label of the Submit button in the text input area.<br/>
 23  
  *&lt;description> -- Explains the text input area.<br/>
 24  
  *&lt;name> -- The name of the text object in the text input area.<br/>
 25  
  *&lt;link> -- The URI of the CGI script that processes text input requests.<br/>
 26  
  *The purpose of the <textInput> element is something of a mystery. You can use it to specify a search engine box. Or to allow a reader to provide feedback. Most aggregators ignore it.<br/>
 27  
  *</li>
 28  
  *<li> Rss 1.0 - 
 29  
  * The textinput element affords a method for submitting form data to an arbitrary URL -- usually located at the parent website. 
 30  
  * The form processor at the receiving end only is assumed to handle the HTTP GET method.
 31  
  * The field is typically used as a search box or subscription form -- among others. 
 32  
  * While this is of some use when RSS documents are rendered as channels (see MNN) and accompanied by human readable title 
 33  
  * and description, the ambiguity in automatic determination of meaning of this overloaded element renders it otherwise not 
 34  
  * particularly useful. RSS 1.0 therefore suggests either deprecation or augmentation with some form of resource discovery of 
 35  
  * this element in future versions while maintaining it for backward compatibility with RSS 0.9.
 36  
  * {textinput_uri} must be unique with respect to any other rdf:about attributes in the RSS document and is a URI which identifies the textinput. {textinput_uri} 
 37  
  * should be identical to the value of the <link> sub-element of the &lt;textinput> element, if possible. 
 38  
  *</li>
 39  
  *
 40  
  * @author jliang
 41  
  *
 42  
  */
 43  99
 public class TextInput extends AbstractBaseObject{
 44  
   private static final long serialVersionUID = 20070927L;
 45  
   private String _title;
 46  
   private String _description;
 47  
   private String _name;
 48  
   private String _link;
 49  21
   public TextInput(){}
 50  
    
 51  
   /**
 52  
    *A channel may optionally contain a <textInput> sub-element, which contains four required sub-elements.<br/>
 53  
    *&lt;title> -- The label of the Submit button in the text input area.<br/>
 54  
    *&lt;description> -- Explains the text input area.<br/>
 55  
    *&lt;name> -- The name of the text object in the text input area.<br/>
 56  
    *&lt;link> -- The URI of the CGI script that processes text input requests.<br/>
 57  
    *The purpose of the <textInput> element is something of a mystery. You can use it to specify a search engine box. Or to allow a reader to provide feedback. Most aggregators ignore it.<br/>
 58  
    * @throws URISyntaxException 
 59  
    * if <code>link</code> is an invalid URI 
 60  
    * 
 61  
    */
 62  9
   public TextInput(String title, String description, String name, String link){
 63  9
     _title = title;
 64  9
     _description = description;
 65  9
     _name = name;
 66  9
     setLink(link);
 67  9
   }
 68  
   /**
 69  
    * The label of the Submit button in the text input area.<br/>
 70  
    */
 71  
   public String getTitle() {
 72  21
     return _title;
 73  
   }
 74  
   /**
 75  
    * The label of the Submit button in the text input area.<br/>
 76  
    */  
 77  
   public TextInput  setTitle(String title) {
 78  18
     _title = title;
 79  18
     return this;
 80  
   }
 81  
   /**
 82  
    * Explains the text input area.<br/>
 83  
    */
 84  
   public String getDescription() {
 85  21
     return _description;
 86  
   }
 87  
   /**
 88  
    * Explains the text input area.<br/>
 89  
    */  
 90  
   public  TextInput  setDescription(String description) {
 91  18
     _description = description;
 92  18
     return this;
 93  
   }
 94  
   /**
 95  
    *The name of the text object in the text input area.<br/>
 96  
    */
 97  
   public String getName() {
 98  21
     return _name;
 99  
   }
 100  
   /**
 101  
    *The name of the text object in the text input area.<br/>
 102  
    */  
 103  
   public TextInput setName(String name) {
 104  18
     _name = name;
 105  18
     return this;
 106  
   }
 107  
   /**
 108  
    *The URI of the CGI script that processes text input requests.<br/>
 109  
    */
 110  
   public String getLink() {
 111  21
     return _link;
 112  
   }
 113  
   /**
 114  
    *The URI of the CGI script that processes text input requests.<br/>
 115  
    */  
 116  
   public TextInput setLink(String link) {
 117  27
     _link = link;
 118  27
     return this;
 119  
   }
 120  
   
 121  
   /**
 122  
    * <b>Rss 1.0 only</b><br/>
 123  
    * @param resource
 124  
    * @return
 125  
    */
 126  
   public TextInput setResource(String resource) {
 127  12
     _resource = resource;
 128  12
     return this;
 129  
   }
 130  
   /**
 131  
    * <b>Rss 1.0 only</b><br/>
 132  
    * @param about
 133  
    * @return
 134  
    */
 135  
   public TextInput setAbout(String about) {
 136  18
     _about = about;
 137  18
     return this;
 138  
   }
 139  
   
 140  
   ////////////////////////Common setters///////////////////////
 141  
   /**
 142  
    * Any other attribute that is not in the RSS 2.0 specs.
 143  
    */
 144  
   public TextInput setOtherAttributes(Map<QName, String> otherAttributes) {
 145  6
     _otherAttributes = otherAttributes;
 146  6
     return this;
 147  
   }
 148  
   /**
 149  
    * Add an attribute that is not in the RSS 2.0 specs.
 150  
    */
 151  
   public TextInput addOtherAttributes(QName namespace, String attribute) {
 152  6
     if(_otherAttributes == null){
 153  3
       _otherAttributes = new HashMap<QName, String>();
 154  
     }
 155  6
     _otherAttributes.put(namespace, attribute);
 156  6
     return this;
 157  
   }
 158  
   
 159  
   /**
 160  
    * Other additional elements that are not in the Rss specs.<br/>
 161  
    * **Note** The element should not have an empty namespace to avoid collision with the specs elements.
 162  
    */
 163  
   public TextInput setOtherElements(List<Element> otherElements) {
 164  6
     _otherElements = otherElements;
 165  6
     return this;
 166  
   }
 167  
   /**
 168  
    * Add an element that is not specified in the Rss specs.<br/>
 169  
    * **Note** The element should not have an empty namespace to avoid collision with the specs elements.
 170  
    * @param element - any element
 171  
    */
 172  
   public TextInput addOtherElement(Element element){
 173  24
     if(_otherElements == null){
 174  3
       _otherElements = new ArrayList<Element>();
 175  
     }
 176  24
     _otherElements.add(element);
 177  24
     return this;
 178  
   }
 179  
   
 180  
   /**
 181  
    * Add an element that is not specified in the Rss specs.<br/>
 182  
    * **Note** The element should not have an empty namespace to avoid collision with the specs elements.
 183  
    * 
 184  
    * @param xmlString - any element
 185  
    * @throws ParserConfigurationException 
 186  
    * @throws IOException 
 187  
    * @throws SAXException 
 188  
    */
 189  
   public TextInput addOtherElement(String xmlString) throws SAXException, IOException, ParserConfigurationException{
 190  21
     return addOtherElement(XMLUtils.parseXml(xmlString, false, false).getDocumentElement());
 191  
   }
 192  
   
 193  
 
 194  
   ////////////////////////Common setters///////////////////////
 195  
   
 196  
   @Override
 197  
   public void validate(FeedFormat format) throws ValidationException {
 198  3
     if(format == FeedFormat.ATOM10)
 199  0
        return;
 200  
     
 201  3
     if(format == FeedFormat.RSS20){
 202  3
       ValidationUtils.validateNotNull("Image: All required fields in the Image object should be not null", _title, _link, _description, _name);
 203  3
       ValidationUtils.validateUri("link is not a valid URI",  _link);
 204  
     }
 205  
     
 206  3
     if(format == FeedFormat.RSS10){
 207  0
       ValidationUtils.validateNotNull("[Textinput] about is required", getAbout());
 208  
     }
 209  3
   }
 210  
 }