import components.simplereader.SimpleReader; import components.simplereader.SimpleReader1L; import components.simplewriter.SimpleWriter; import components.simplewriter.SimpleWriter1L; import components.xmltree.XMLTree; /** * Program to convert an XML RSS (version 2.0) feed from a given URL into the * corresponding HTML output file. * * @author Put your name here * */ public final class RSSReader { /** * Private constructor so this utility class cannot be instantiated. */ private RSSReader() { } /** * Outputs the "opening" tags in the generated HTML file. These are the * expected elements generated by this method:
     *
     * 
     * 
     *  the channel tag title as the page title
     * 
     * 
     *  

the page title inside a link to the link

*

* the channel description *

* * * * * * * * Note: pre open & close tags are just for formatting this comment. * Method output should not include pre tags. * * @param channel * the channel element XMLTree * @param out * the output stream * @updates out.content * @requires [the root of channel is a tag] and out.is_open * @ensures out.content = #out.content * [the HTML "opening" tags] */ private static void outputHeader(XMLTree channel, SimpleWriter out) { assert channel != null : "Violation of: channel is not null"; assert out != null : "Violation of: out is not null"; assert channel.isTag() && channel.label().equals("channel") : "" + "Violation of: the label root of channel is a tag"; assert out.isOpen() : "Violation of: out.is_open"; /* * TODO: fill in body */ } /** * Outputs the "closing" tags in the generated HTML file. These are the * expected elements generated by this method:
     *
     *  
DateSourceNews
* * * *
Note: pre open & close tags are just for formatting this comment. * Method output should not include pre tags. * * @param out * the output stream * @updates out.contents * @requires out.is_open * @ensures out.content = #out.content * [the HTML "closing" tags] */ private static void outputFooter(SimpleWriter out) { assert out != null : "Violation of: out is not null"; assert out.isOpen() : "Violation of: out.is_open"; /* * TODO: fill in body */ } /** * Finds the first occurrence of the given tag among the children of the * given {@code XMLTree} and return its index; returns -1 if not found. * * @param xml * the {@code XMLTree} to search * @param tag * the tag to look for * @return the index of the first child of type tag of the {@code XMLTree} * or -1 if not found * @requires [the label of the root of xml is a tag] * @ensures
     * getChildElement =
     *  [the index of the first tag child of the {@code XMLTree} matching the
     *  given tag or -1 if not found]
     * 
*/ private static int getChildElement(XMLTree xml, String tag) { assert xml != null : "Violation of: xml is not null"; assert tag != null : "Violation of: tag is not null"; assert xml.isTag() : "Violation of: the label root of xml is a tag"; /* * TODO: fill in body */ /* * This line added just to make the program compilable. Should be * replaced with appropriate return statement. */ return 0; } /** * Processes one news item and outputs one table row. The row contains three * elements: the publication date, the source, and the title (or * description) of the item. * * @param item * the news item * @param out * the output stream * @updates out.content * @requires [the label of the root of item is an tag] and * out.is_open * @ensures
     * out.content = #out.content *
     *   [an HTML table row with publication date, source, and title of news item]
     * 
*/ private static void processItem(XMLTree item, SimpleWriter out) { assert item != null : "Violation of: item is not null"; assert out != null : "Violation of: out is not null"; assert item.isTag() && item.label().equals("item") : "" + "Violation of: the label root of item is an tag"; assert out.isOpen() : "Violation of: out.is_open"; /* * TODO: fill in body */ } /** * Main method. * * @param args * the command line arguments; unused here */ public static void main(String[] args) { SimpleReader in = new SimpleReader1L(); SimpleWriter out = new SimpleWriter1L(); /* * TODO: fill in body */ in.close(); out.close(); } }