package de.twentyeleven.skysail.resources;
import java.util.ArrayList;
import java.util.List;
import org.restlet.data.Form;
import org.restlet.ext.atom.Entry;
import org.restlet.ext.atom.Feed;
import org.restlet.ext.atom.Text;
import org.restlet.resource.Get;
import org.restlet.resource.ResourceException;
import de.twenty11.skysail.common.Presentation;
import de.twenty11.skysail.common.PresentationStyle;
import de.twenty11.skysail.common.navigation.LinkedPage;
import de.twenty11.skysail.common.responses.SkysailResponse;
import de.twenty11.skysail.server.core.restlet.ListServerResource2;
import de.twentyeleven.skysail.MyApplication;
import de.twentyeleven.skysail.domain.RssFeed;
/**
* Restlet Root Resource for dbViewer application.
*
*/
@Presentation(preferred = PresentationStyle.LIST2)
public class RssFeedResource extends ListServerResource2<RssFeed> {
public RssFeedResource() {
setName("osgimonitor root resource");
setDescription("The root resource of the osgimonitor application");
}
@Override
protected void doInit() throws ResourceException {
super.doInit();
}
@Override
@Get("html|json|csv")
public SkysailResponse<List<RssFeed>> getEntities() {
registerLinkedPage(new LinkedPage() {
@Override
public String getLinkText() {
return "new Folder";
}
@Override
public String getHref() {
return "notes/folder";
}
@Override
public boolean applicable() {
return true;
}
});
registerLinkedPage(new LinkedPage() {
@Override
public String getLinkText() {
return "new MyEntity";
}
@Override
public String getHref() {
return "notes/note";
}
@Override
public boolean applicable() {
return true;
}
});
return getEntities("Folders and Notes");
}
@Get("atom")
public Feed toAtom() throws ResourceException {
Feed result = new Feed();
result.setTitle(new Text("Homer's feed"));
for (int i = 1; i < 11; i++) {
Entry entry = new Entry();
entry.setTitle(new Text("Mail #" + i));
entry.setSummary("Doh! This is the content of mail #" + i);
result.getEntries().add(entry);
}
return result;
}
// @Get("rss")
// public SyndFeed toRss() throws ResourceException {
// SyndFeed result = new SyndFeedImpl();
// result.setTitle("Homer's feed");
// result.setDescription("Homer's feed");
// result.setLink(getReference().toString());
// List<SyndEntry> entries = new ArrayList<SyndEntry>();
// result.setEntries(entries);
// for (int i = 1; i < 11; i++) {
// SyndEntry entry = new SyndEntryImpl();
// entry.setTitle("Mail #" + i);
// SyndContent description = new SyndContentImpl();
// description.setValue("Doh! This is the content of mail #" + i);
// entry.setDescription(description);
// entries.add(entry);
// }
// return result;
// }
@Override
protected List<RssFeed> getData() {
MyApplication app = (MyApplication) getApplication();
List<RssFeed> result = new ArrayList<RssFeed>();
// addNotes(result, app);
return result;
}
@Override
public RssFeed getData(Form form) {
// TODO Auto-generated method stub
return null;
}
@Override
public SkysailResponse<?> addEntity(RssFeed entity) {
// TODO Auto-generated method stub
return null;
}
}