From: <jbo...@li...> - 2005-10-20 21:08:50
|
Author: adamw Date: 2005-10-20 17:08:41 -0400 (Thu, 20 Oct 2005) New Revision: 1418 Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFileBasedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedElement.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Rss2Feed.java Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java Log: http://jira.jboss.com/jira/browse/JBLAB-408 : first classes Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/XmlTools.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -84,8 +84,34 @@ return buf.toString(); } + + /** + * Reads and returns a HTML block contained in the children of the specified + * node with a default xml -> html transformer. + * @param root Node from which's children to get the HTML block. + * @return A string representation of the html contained in the given + * node. + */ + public static String unmarshallHtml(Node root) { + return unmarshallHtml(root, new DomToXmlTransformer()); + } /** + * Reads and returns a xml block contained in the entire specified + * node. + * @param root Node from which's to get the xml block. + * @return A string representation of the xml contained in the given + * node, including this node's representation. + */ + public static String unmarshallXml(Node root) { + try { + return new DomToXmlTransformer().transformNode(root); + } catch (TransformerException e) { + return ""; + } + } + + /** * Reads text contained in a tag of the form <tag>text</tag>. * @param textNode Node to read text from. * @return Text contained in the given node. Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFeed.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFeed.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,5 @@ +package org.jboss.forge.feeds; + +public interface AggregatedFeed { + public Feed getFeed(Feed[] toAggregate); +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFileBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFileBasedFeed.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AggregatedFileBasedFeed.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,53 @@ +package org.jboss.forge.feeds; + +import java.io.File; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public abstract class AggregatedFileBasedFeed implements AggregatedFeed { + private File file; + + public AggregatedFileBasedFeed(File file) { + this.file = file; + } + + protected abstract Feed createNewFeed(File file); + protected abstract void appendHeader(StringBuffer sb, List<FeedElement> elements); + protected abstract void appendFooter(StringBuffer sb); + + public Feed getFeed(Feed[] toAggregate) { + StringBuffer sb = new StringBuffer(); + + List<FeedElement> allElements = new ArrayList<FeedElement>(); + for (Feed feed : toAggregate) { + allElements.addAll(feed.getElements()); + } + + Collections.sort(allElements, new Comparator<FeedElement>() { + public int compare(FeedElement el1, FeedElement el2) { + return el1.getDate().compareTo(el2.getDate()); + } + }); + + appendHeader(sb, allElements); + + for (FeedElement feedElement : allElements) { + sb.append(feedElement.getContent()); + } + + appendFooter(sb); + + try { + file.createNewFile(); + PrintWriter pw = new PrintWriter(file); + pw.append(sb); + } catch (Exception e) { + // What can we do ... + } + + return createNewFeed(file); + } +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,10 @@ +package org.jboss.forge.feeds; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +public interface Feed { + public void write(OutputStream os) throws IOException; + public List<FeedElement> getElements(); +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedElement.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedElement.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedElement.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,21 @@ +package org.jboss.forge.feeds; + +import java.util.Date; + +public class FeedElement { + private Date date; + private String content; + + public FeedElement(Date date, String content) { + this.date = date; + this.content = content; + } + + public String getContent() { + return content; + } + + public Date getDate() { + return date; + } +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,20 @@ +package org.jboss.forge.feeds; + +import java.io.IOException; + +import javax.portlet.PortletException; +import javax.portlet.PortletSecurityException; + +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; + +public class FeedsPortlet extends JBossPortlet { + + @Override + protected void doView(JBossRenderRequest request, JBossRenderResponse response) + throws PortletException, PortletSecurityException, IOException { + + } + +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,66 @@ +package org.jboss.forge.feeds; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.util.List; + +public abstract class FileBasedFeed implements Feed { + private final static int BUF_SIZE = 32768; + + private File file; + private List<FeedElement> elements; + + protected abstract List<FeedElement> generateElements(); + + public FileBasedFeed(File file) { + this.file = file; + elements = null; + } + + private void transfer(InputStream is, OutputStream os) throws IOException { + byte[] buffer = new byte[BUF_SIZE]; + int read; + while ((read = is.read(buffer)) != -1) + os.write(buffer, 0, read); + } + + public FileBasedFeed(File file, URL url) throws IOException { + this(file); + + file.createNewFile(); + + InputStream is = url.openStream(); + OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); + + transfer(is, os); + + is.close(); + os.close(); + } + + public List<FeedElement> getElements() { + if (elements == null) { + elements = generateElements(); + } + + return elements; + } + + public void write(OutputStream os) throws IOException { + InputStream is = new BufferedInputStream(new FileInputStream(file)); + + transfer(is, os); + is.close(); + } + + protected File getFile() { + return file; + } +} Added: trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Rss2Feed.java =================================================================== --- trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Rss2Feed.java 2005-10-20 20:16:00 UTC (rev 1417) +++ trunk/forge/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Rss2Feed.java 2005-10-20 21:08:41 UTC (rev 1418) @@ -0,0 +1,22 @@ +package org.jboss.forge.feeds; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.List; + +public class Rss2Feed extends FileBasedFeed { + public Rss2Feed(File file, URL url) throws IOException { + super(file, url); + } + + public Rss2Feed(File file) { + super(file); + } + + @Override + protected List<FeedElement> generateElements() { + + return null; + } +} |