<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jlmontesdeoca&#039;s Blog</title>
	<atom:link href="http://jlmontesdeoca.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jlmontesdeoca.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Wed, 25 May 2011 13:54:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jlmontesdeoca.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Jlmontesdeoca&#039;s Blog</title>
		<link>http://jlmontesdeoca.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jlmontesdeoca.wordpress.com/osd.xml" title="Jlmontesdeoca&#039;s Blog" />
	<atom:link rel='hub' href='http://jlmontesdeoca.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Simplified Hibernate DAO</title>
		<link>http://jlmontesdeoca.wordpress.com/2009/11/22/simplified-hibernate-dao/</link>
		<comments>http://jlmontesdeoca.wordpress.com/2009/11/22/simplified-hibernate-dao/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 16:54:38 +0000</pubDate>
		<dc:creator>jlmontesdeoca</dc:creator>
				<category><![CDATA[At work]]></category>

		<guid isPermaLink="false">http://jlmontesdeoca.wordpress.com/?p=36</guid>
		<description><![CDATA[I&#8217;m currently in the process of adopting Hibernate as my ORM tool for all my upcoming projects, and the first thing I&#8217;m trying to resolve is the DAO implementation. DAO Pattern According to Wikipedia a DAO is &#8220;&#8230;an object that provides an abstract interface to some type of database or persistence mechanism, providing some specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jlmontesdeoca.wordpress.com&amp;blog=10292477&amp;post=36&amp;subd=jlmontesdeoca&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently in the process of adopting Hibernate as my ORM tool for all my upcoming projects, and the first thing I&#8217;m trying to resolve is the DAO implementation.</p>
<h2>DAO Pattern</h2>
<p>According to Wikipedia a DAO is &#8220;&#8230;an object that provides an abstract interface to some type of database or persistence mechanism, providing some specific operations without exposing details of the database&#8221;</p>
<p>If you look around a bit you will notice that the most publicized advantage of the DAO pattern is that it separates the persistence model from the domain mechanism, so you can change the persistence mechanism without affecting the domain logic. But sincerely, how often we are going to change the persistence mechanism? So I rather point to the abstraction advantage &#8211; the separation of persistence logic and business logic (<a title="DAO1" href="http://gleichmann.wordpress.com/2009/02/17/dao-its-not-about-layering-its-about-abstraction" target="_blank">DAO – it’s not about Layering, it’s about Abstraction!</a>)</p>
<p>I got inspiration from <a title="Don't repeat the DAO!" href="http://www.ibm.com/developerworks/java/library/j-genericdao.html">Don&#8217;t repeat the DAO!</a>. You should take a look at it &#8211; it has some serious stuff inside!</p>
<p>But I decided to take things slower, choosing a light-weight approach to the proposed model. Here is my simplified version</p>
<h2>Simplified model</h2>
<p>As I said early I will be using Hibernate to take care of the database. I will skip all the Hibernate configuration details &#8211; there are a lot of sources available for this. So we are jumping right into the stuff that brought us here.</p>
<p>First I get rid of the <code>GenericDao</code> interface and then I made the <code>GenericHibernateDao</code> abstract. A <code>Session</code> instance variable is also added. In this we are following the advice to avoid any session/connection handling inside the DAO (no <code>close</code>, no <code>commit</code> or <code>rollback</code> here)</p>
<p><pre class="brush: java; wrap-lines: false;">
import java.io.Serializable;
import org.hibernate.Session;

public abstract class GenericDaoHibernate  {
    private Class type;
    private Session session;

    public GenericDaoHibernate(Class type) {
        this.type = type;
    }

    public PK save(T o) {
        return (PK) getSession().save(o);
    }

    public T read(PK id) {
        return (T) getSession().get(type, id);
    }

    public void update(T o) {
        getSession().update(o);
    }

    public void delete(T o) {
        getSession().delete(o);
    }

    public void setSession(Session session) {
       this.session = session;
    }

    public Session getSession() {
       return session;
    }
}
</pre></p>
<p>We already have our Hibernate environment set to handle a couple of different objects &#8211; <code>Cardcontrol</code> among them</p>
<p><pre class="brush: java; wrap-lines: false;">
public class Cardcontrol implements java.io.Serializable {
   private String prefix;
   private Byte batch;
   private Integer available;

   public Cardcontrol() {
   }

   public Cardcontrol(String prefix) {
      this.prefix = prefix;
   }

   public Cardcontrol(String prefix, Byte batch, Integer available) {
      this.prefix = prefix;
      this.batch = batch;
      this.available = available;
   }

   public String getPrefix() {
      return this.prefix;
   }

   public void setPrefix(String prefix) {
      this.prefix = prefix;
   }

   public Byte getBatch() {
      return this.batch;
   }

   public void setBatch(Byte batch) {
      this.batch = batch;
   }

   public Integer getAvailable() {
      return this.available;
   }

   public void setAvailable(Integer available) {
      this.available = available;
   }

   @Override
   public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(&quot;Cardcontrol:(&quot;);
      sb.append(this.getPrefix());
      sb.append(&quot;, &quot;);
      sb.append(this.getBatch());
      sb.append(&quot;, &quot;);
      sb.append(this.getAvailable());
      sb.append(&quot;)&quot;);
      return sb.toString();
   }
}
</pre></p>
<p>Now, the DAO implementation for this class is&#8230;</p>
<p><pre class="brush: java; wrap-lines: false;">
public class CardcontrolDao extends GenericDaoHibernate {
   public CardcontrolDao() {
      super(Cardcontrol.class);
   }
}
</pre></p>
<p>and we have <code>create</code>, <code>read</code>, <code>update</code> and <code>delete</code> solved!</p>
<h2>Sharing the session/connection</h2>
<p>Of course we will have more than one class to persist in our model, so lets see how to do it. Lets add another class</p>
<p><pre class="brush: java; wrap-lines: false;">
import java.util.Date;

/**
 * NotificacionesM generated by hbm2java
 */
public class NotificacionesM implements java.io.Serializable {
   private int idNotificacion;
   private Date fechaenvio;
   private String origen;
   private String destino;
   private String prioridad;
   private String textonota;
   private String estatusenvio;

   public NotificacionesM() {
   }

   public NotificacionesM(int idNotificacion, Date fechaenvio, String origen, String destino, String prioridad, String textonota, String estatusenvio) {
      setIdNotificacion(idNotificacion);
      setFechaenvio(fechaenvio);
      setOrigen(origen);
      setDestino(destino);
      setPrioridad(prioridad);
      setTextonota(textonota);
      setEstatusenvio(estatusenvio);
   }

   public int getIdNotificacion() {
      return this.idNotificacion;
   }

   public void setIdNotificacion(int idNotificacion) {
      this.idNotificacion = idNotificacion;
   }

   public Date getFechaenvio() {
      return this.fechaenvio;
   }

   public void setFechaenvio(Date fechaenvio) {
      this.fechaenvio = fechaenvio;
   }

   public String getOrigen() {
      return this.origen;
   }

   public void setOrigen(String origen) {
      this.origen = origen;
   }

   public String getDestino() {
      return this.destino;
   }

   public void setDestino(String destino) {
      this.destino = destino;
   }

   public String getPrioridad() {
      return this.prioridad;
   }

   public void setPrioridad(String prioridad) {
      this.prioridad = prioridad;
   }

   public String getTextonota() {
      return this.textonota;
   }

   public void setTextonota(String textonota) {
      this.textonota = textonota;
   }

   public String getEstatusenvio() {
      return this.estatusenvio;
   }

   public void setEstatusenvio(String estatusenvio) {
      this.estatusenvio = estatusenvio;
   }

   @Override
   public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(&quot;NotificacionesM:(&quot;);
      sb.append(this.getIdNotificacion());
      sb.append(&quot;, &quot;);
      sb.append(this.getFechaenvio());
      sb.append(&quot;, &quot;);
      sb.append(this.getOrigen());
      sb.append(&quot;, &quot;);
      sb.append(this.getDestino());
      sb.append(&quot;, &quot;);
      sb.append(this.getPrioridad());
      sb.append(&quot;, &quot;);
      sb.append(this.getEstatusenvio());
      sb.append(&quot;)&quot;);
      return sb.toString();
   }
}
</pre></p>
<p>and it&#8217;s DAO</p>
<p><pre class="brush: java; wrap-lines: false;">
public class NotificacionesMDao extends GenericDaoHibernate {
   public NotificacionesMDao() {
      super(NotificacionesM.class);
   }
}
</pre></p>
<p>For demonstration purpose only we will see how to handle this in a main, you of course will implement this inside your domain logic classes</p>
<p><pre class="brush: java; wrap-lines: false;">
public class Main {
   public static void main(String[] args) {
      NotificacionesM n1;
      Cardcontrol cc1;

      Session session = HibernateUtil.getSessionFactory().getCurrentSession();
      Transaction tx = session.beginTransaction();

      NotificacionesMDao nDao = new NotificacionesMDao();
      CardcontrolDao ccDao = new CardcontrolDao();
      nDao.setSession(session);
      ccDao.setSession(session);

      n1 = nDao.read(1);
      System.out.println(n1);

      cc1 = ccDao.read(&quot;52218801&quot;);
      System.out.println(cc1);

      session.close();
   }
}
</pre></p>
<p>We are not altering the persistence status, so no commit or rollback is needed. In case you need reflect/discard changes all that is required is a <code>tx.commit()</code> or a <code>tx.rollback()</code>.</p>
<p>This code exposes some things we may like to hide: the process to obtain a Hibernate session and the transaction scope delimitation. This we will discuss in the next post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jlmontesdeoca.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jlmontesdeoca.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jlmontesdeoca.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jlmontesdeoca.wordpress.com&amp;blog=10292477&amp;post=36&amp;subd=jlmontesdeoca&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jlmontesdeoca.wordpress.com/2009/11/22/simplified-hibernate-dao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5d76901a2146d2618d3bb59df50acab0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jlmontesdeoca</media:title>
		</media:content>
	</item>
		<item>
		<title>Bitbucket</title>
		<link>http://jlmontesdeoca.wordpress.com/2009/11/05/3/</link>
		<comments>http://jlmontesdeoca.wordpress.com/2009/11/05/3/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:39:39 +0000</pubDate>
		<dc:creator>jlmontesdeoca</dc:creator>
				<category><![CDATA[At work]]></category>

		<guid isPermaLink="false">http://jlmontesdeoca.wordpress.com/?p=3</guid>
		<description><![CDATA[Today I decided to start my blog at WordPress. I choose Bitbucket as my first theme&#8230; and hope it won&#8217;t be the last. So what is Bitbucket? Bitbucket is a code hosting site, for the popular Mercurial version control system. With Mercurial, your data is distributed by definition, but you still need a place to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jlmontesdeoca.wordpress.com&amp;blog=10292477&amp;post=3&amp;subd=jlmontesdeoca&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://jlmontesdeoca.files.wordpress.com/2009/11/bitbucket_logo.png?w=600" alt="Bitbucket" /></p>
<p>
      Today I decided to start my blog at WordPress. I choose Bitbucket as my first theme&#8230; and hope it won&#8217;t be the last.
   </p>
<h3>So what is Bitbucket?</h3>
<p>
      Bitbucket is a code hosting site, for the popular Mercurial version control system. With Mercurial, your data is distributed by definition, but you still need a place to share it, and keep track of your development.
   </p>
<p>
      Bitbucket is that. It provides a fully featured environment for managing development, including a wiki (naturally backed by Mercurial, you can clone it!), a powerful issue tracker, and easy collaboration with others.
   </p>
<p>
      Simply put, it takes the pain out of sharing code, and lets you focus on what you do best: Code.
   </p>
<h3>What do I get?</h3>
<ul>
<li>HTTP push/pull support</li>
<li>SSH push/pull support (with public key authentication)</li>
<li>Integrated flexible issue tracker</li>
<li>Per-repository wikis (backed by hg repositories)</li>
<li>Plenty of &#8220;services&#8221; for repositories, automatic issue resolving, web hooks, etc.</li>
<li>Email support (for both paid and free plans)</li>
<li>CNAME support, so you can keep the code on your own domain</li>
<li>Collaborate with other users easily</li>
<li>Source view with highlighting for many languages</li>
<li>Forks and Mercurial Queue (MQ) integration</li>
<li>A bunch of social aspects</li>
<li>RSS/Atom feeds for everything</li>
<li>Host static files on our CDN (Content Delivery Network)</li>
</ul>
<h3>What&#8217;s Mercurial then?</h3>
<p>
      Mercurial is a distributed version control system, or DVCS for short. It is in the ranks of Git and Bazaar, leading a new paradigm of working with version control.
   </p>
<p>
      If you have been using other version control systems like CVS or SVN, you should feel right at home, as Mercurial&#8217;s command set is very similar.
   </p>
<p>
      The main difference between a traditional version control system and a distributed one is that the distributed system does not rely on one central server. Every person with a repository also has the full history of changes. Each repository is independent.
   </p>
<p>
      In Subversion, for example, each developer checks out a copy from the main server, works on changes, and commits them back in. In case of conflicting changes made by other developers, you will be notified and asked to merge the changes. In a DVCS world, this is different, as commits are local, and you can commit several dozens of changes locally without ever communicating with anyone else.
   </p>
<h3>Getting started with Bitbucket</h3>
<p>
      Be sure to install TortoiseHG in your machine before go any further. Yor can download it from http://bitbucket.org/tortoisehg/stable/. Installation is pretty straighforward, so I won&#8217;t discuss it here. After that you must create an account with Bitbucket at http://bitbucket.org/. Log in and we are ready to continue.
   </p>
<p>
      Starting a new project or importing your current project into Bitbucket is easy! If you haven&#8217;t already, you can create a fresh repository on the &#8220;Create repository&#8221; page, which is also accessible from your Bitbucket personal home page.
   </p>
<p>
      We will assume that you have created a new repository named testrepo and begin from scratch. If you already have a code base you want to import, skip ahead to the section &#8220;Importing existing files&#8221;.
   </p>
<p>
      The first thing you should do is clone the repository from us. This gets you a local copy of the entire repository, including all changes, but that won&#8217;t matter much since the repository you have just created is empty.
   </p>
<p><pre class="brush: plain; gutter: false;">
$ hg clone http://bitbucket.org/jespern/testrepo
destination directory: testrepo
no changes found
updating working directory
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
</pre></p>
<p>
      You now have an exact copy of what we had on our end. This means that you are ready to start work!
   </p>
<p>
      Lets add a few files:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ cd testrepo
$ echo 'Hey this is a file I am about to add' &amp;gt; README
$ echo 'This is some other file.' &amp;gt; textfile.txt
$ ls
README    textfile.txt
$ hg add README textfile.txt
$ hg commit -m &quot;Adding initial README file, as well as a file with text in it&quot;
</pre></p>
<p>
      OK, hg is now tracking both README and textfile.txt, and has recorded their changes. Here comes the fun part, let&#8217;s publish it:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ hg push
pushing to http://bitbucket.org/jespern/testrepo
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: &amp;lt;your username&amp;gt;
password: &amp;lt;your password&amp;gt;
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
</pre></p>
<p>
      &#8230;and our changes are published. We comitted 1 changeset, which held 2 changes to 2 files. Makes sense? Great!
   </p>
<h3>Importing existing files</h3>
<p>
      Chances are you are either coming from a different version control system such as Subversion or CVS, and you want to get started using Mercurial instead. Luckily, you can push anything into an empty repository. This allows you to easily move any number of files into your new repository at Bitbucket.
   </p>
<p>
      Let&#8217;s say I have a project in ~/Work/Blonk, and I want to add it to Bitbucket. The first thing to do is create a new empty repository via the &#8220;Create repository&#8221; page. Again, we will assume that this repository is named blonk and is to be found on http://bitbucket.org/jespern/blonk.
   </p>
<p>
      First, we will make a local copy, by cloning it:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ hg clone http://bitbucket.org/jespern/blonk
destination directory: blonk
no changes found
updating working directory
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
</pre></p>
<p>
      Now let&#8217;s enter the directory, and copy all of our previous work in:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ cd blonk
$ cp -R ~/Work/Blonk/* .
</pre></p>
<p>
      Now all that remains is to add and commit the files:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ hg add
$ hg ci -m &quot;Initial import of the old Blonk files&quot;
</pre></p>
<p>
      And we can go ahead and push:
   </p>
<p><pre class="brush: plain; gutter: false;">
$ hg push
pushing to http://bitbucket.org/jespern/blonk
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: &amp;lt;your username&amp;gt;
password: &amp;lt;your password&amp;gt;
adding changesets
adding manifests
adding file changes
added 1 changesets with 162 changes to 162 files
</pre></p>
<p>
      We&#8217;re done. You may now browse to the repository online and see your files appear.
   </p>
<h3>Continuing on from here</h3>
<p>
      You now know how to create a new repository, and either work with it from scratch, or import pre-existing files. Of course, you are going to want to make changes to those files now.
   </p>
<p>
      The workflow remains the same:
   </p>
<ul>
<li>To add files to the repository, you hg add</li>
<li>To commit changes, you hg commit</li>
<li>To publish your changes, you hg push</li>
</ul>
<p>
      Have fun!
   </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jlmontesdeoca.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jlmontesdeoca.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jlmontesdeoca.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jlmontesdeoca.wordpress.com&amp;blog=10292477&amp;post=3&amp;subd=jlmontesdeoca&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jlmontesdeoca.wordpress.com/2009/11/05/3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5d76901a2146d2618d3bb59df50acab0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jlmontesdeoca</media:title>
		</media:content>

		<media:content url="http://jlmontesdeoca.files.wordpress.com/2009/11/bitbucket_logo.png" medium="image">
			<media:title type="html">Bitbucket</media:title>
		</media:content>
	</item>
	</channel>
</rss>
