Kategorie: Java

RSS-Feeds mit Rome & Spring 2.5

Problem: Wie erzeuge ich einen RSS-Feed mit Rome und Spring MVC

Lösung:

Man lädt sich Rome und Spring Modules herunter und packt beide Jars in seinen Classpath.

Danach erzeugt man einen RSSView:

public class RSSView extends AbstractRssView
{
	private static final String[] FEED_TYPE = {"rss_0.90","rss_0.91","rss_0.92","rss_0.93","rss_0.94","rss_1.0","rss_2.0","atom_0.3"};	

	private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd");

	private String description;

	/**
	 * Generates the Feed.
	 */
	@SuppressWarnings("unchecked")
	@Override
	protected void buildFeed(Map model, HttpServletRequest request, HttpServletResponse response, SyndFeed feed)
	{
		feed.setFeedType(FEED_TYPE[6]);

		feed.setTitle("Peters Feeds");
		feed.setLink(getBaseUrl());
		feed.setDescription(description);

		SyndImage image 	= new SyndImageImpl();
		image.setLink(getBaseUrl());
		image.setUrl("URLTOIMAGE");
		image.setDescription(description);
		image.setTitle("Peter");
		feed.setImage(image);

		List entries = new ArrayList();
		SyndEntry entry;

		entry = new SyndEntryImpl();
		entry.setTitle("Rome v1.0");
		entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
		entry.setPublishedDate(DATE_PARSER.parse("2004-06-08"));
		description = new SyndContentImpl();
		description.setType("text/plain");
		description.setValue("Initial release of Rome");
		entry.setDescription(description);
		entries.add(entry);

		entry = new SyndEntryImpl();
		entry.setTitle("Rome v2.0");
		entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02");
		entry.setPublishedDate(DATE_PARSER.parse("2004-06-16"));
		description = new SyndContentImpl();
		description.setType("text/plain");
		description.setValue("Bug fixes, minor API changes and some new features");
		entry.setDescription(description);
		entries.add(entry);

		feed.setEntries(entries);

	}

	public void setDescription(String description)
	{
		this.description = description;
	}

}

Anschließend erzeugt man den dazugehörigen Controller:

public class RssFeedController implements Controller
{

	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception
	{

		return  new ModelAndView("rSSView");
	}
}

Als Letztes verdrahtet man alles in seiner dispatcher.xml:

...
RssFeedController

	

	

	
	
...

… ab Version 3.0 des Springframework kann man das ganz einfach so machen.




Composite Pattern mit Hibernate

Problem: Wie kann man im Bäume mit “Eltern” und “Kindern”, also ein klassisches Composite-Pattern mit Hibernate abbilden?

Meine Lösung:
(Im Konkreten ging es um die Darstellung dieser Codes mit Hibernate, wobei ich momentan noch keine Angaben zur Performance im Vergleich zu einer Implementierung mit Nested Sets machen kann)

public class CpvCodes implements Serializable
{
	private Integer id;
	private String code;
	private String name;
	private CpvCodes parent;

	Set children = new HashSet();

	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}

	public String getCode()
	{
		return code;
	}
	public void setCode(String code)
	{
		this.code = code;
	}
	public Integer getId()
	{
		return id;
	}
	public void setId(Integer id)
	{
		this.id = id;
	}

	public Set getChildren()
	{
		return children;
	}
	public void setChildren(Set children)
	{
		this.children = children;
	}
	public CpvCodes getParent()
	{
		return parent;
	}
	public void setParent(CpvCodes parent)
	{
		this.parent = parent;
	}
}


      

      	

		


		


		

		
			
			

		
		

    


Ich finde es nur seltsam, das es zu so einem (Standard-) Problem relativ wenig Infos von Hibernate und so viele Fragen dazu in diversen Hibernateforen gibt!