[Yanel-commits] rev 30983 - in
public/yanel/contributions/resources/gallery/src: build
java/org/wyona/yanel/impl/resources/gallery
michi at wyona.com
michi at wyona.com
Wed Jan 30 16:32:26 CET 2008
Author: michi
Date: 2008-01-30 16:32:26 +0100 (Wed, 30 Jan 2008)
New Revision: 30983
Modified:
public/yanel/contributions/resources/gallery/src/build/dependencies.xml
public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/Gallery.java
public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/GalleryResource.java
public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/SimpleGallery.java
Log:
methods updated
Modified: public/yanel/contributions/resources/gallery/src/build/dependencies.xml
===================================================================
--- public/yanel/contributions/resources/gallery/src/build/dependencies.xml 2008-01-30 15:32:18 UTC (rev 30982)
+++ public/yanel/contributions/resources/gallery/src/build/dependencies.xml 2008-01-30 15:32:26 UTC (rev 30983)
@@ -10,7 +10,7 @@
<dependency groupId="wyona-org-yanel" artifactId="yanel-core"
version="${yanel.source.version}"/>
<dependency groupId="wyona-org-yanel" artifactId="yanel-impl" version="${yanel.source.version}"/>
-
+ <dependency groupId="javax.servlet" artifactId="servlet-api" version="2.3"/>
</artifact:dependencies>
<artifact:dependencies pathId="maven2.resource.classpath" filesetId="maven2.resource.fileset">
Modified: public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/Gallery.java
===================================================================
--- public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/Gallery.java 2008-01-30 15:32:18 UTC (rev 30982)
+++ public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/Gallery.java 2008-01-30 15:32:26 UTC (rev 30983)
@@ -28,12 +28,12 @@
Node createItem(GenericItem item);
/**
- * @return - success or failure
+ * @return - the removed item or <code>null</code> on failure
* */
- boolean removeItem(GenericItem item);
+ GalleryItem removeItem(GalleryItem item);
/**
- * @return - success or failure
+ * @return - the removed item or <code>null</code> on failure
* */
- boolean removeItem(String id);
+ GalleryItem removeItem(String id);
}
Modified: public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/GalleryResource.java
===================================================================
--- public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/GalleryResource.java 2008-01-30 15:32:18 UTC (rev 30982)
+++ public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/GalleryResource.java 2008-01-30 15:32:26 UTC (rev 30983)
@@ -11,11 +11,8 @@
import java.io.Writer;
import org.apache.log4j.Logger;
-import org.wyona.yanel.core.Constants;
import org.wyona.yanel.core.Path;
-import org.wyona.yanel.core.Resource;
import org.wyona.yanel.core.api.attributes.ModifiableV2;
-import org.wyona.yanel.core.attributes.viewable.View;
import org.wyona.yanel.core.util.PathUtil;
import org.wyona.yanel.impl.resources.BasicXMLResource;
import org.wyona.yarep.core.NoSuchNodeException;
@@ -30,8 +27,8 @@
/**
* On delete this parameter gives the item id for deletion
* */
- private static final String PARAM_REMOVE_ITEM_ID = "remove.item.id";
- private static final String ATOM_VIEW_ID = "atom";
+ public static final String PARAM_REMOVE_ITEM_ID = "remove.item.id";
+ public static final String ATOM_VIEW_ID = "atom";
/**
* Property name for the collection where galleries are situated
@@ -40,12 +37,13 @@
/**
- * Takes the path from property, or respective to the requested resource
+ * Takes the path from property, or respective to the requested resource.
+ * The path should end with '/'
* */
- protected String getGalleryPath(){
+ public String getGalleryPath(){
String collection = null;
try {
- collection = getConfiguration().getProperty(GALLERIES_COLLECTION_KEY);
+ collection = getResourceConfigProperty(GALLERIES_COLLECTION_KEY);
} catch (Exception e) {
log.warn(e, e);
}
@@ -74,44 +72,59 @@
return super.getContentXML(viewId);
}
- // Generate XML
+ // Generate content
+ String content = null;
- Gallery gallery = new SimpleGallery(getRealm().getRepository(), getGalleryPath());
-
- InputStream result = null;
if(viewId.equals(ATOM_VIEW_ID)){
- // Create the Atom feed
- StringBuffer feed = new StringBuffer("<?xml version='1.0' ?>"+"\n");
- feed.append("<feed xmlns='http://www.w3.org/2005/Atom'>"+"\n");
+ Gallery gallery = new SimpleGallery(getRealm().getRepository(), getGalleryPath());
+ content = generateGalleryAtom(gallery);
- feed.append("<id>"+gallery.getId()+"</id>"+"\n");
- feed.append("<title>"+gallery.getTitle()+"</title>"+"\n");
- feed.append("<updated>"+gallery.getUpdated()+"</updated>"+"\n");
+ // Avoid caching of the atom feed
+ // TODO: maybe cache/no-cache should be configurable for a resource?
+ /*
+ * Cache-control: no-cache
+ * Cache-control: no-store
+ * Pragma: no-cache
+ * Expires: 0
+ */
+ getEnvironment().getResponse().setHeader("Cache-control", "no-cache");
+ getEnvironment().getResponse().setHeader("Cache-control", "no-store");
+ getEnvironment().getResponse().setHeader("Pragma", "no-cache");
+ getEnvironment().getResponse().setHeader("Expires", "0");
+ }
+
+ return new ByteArrayInputStream(content.getBytes());
+ }
+
+ private String generateGalleryAtom(Gallery gallery){
+ StringBuffer feed = new StringBuffer("<?xml version='1.0' ?>"+"\n");
+ feed.append("<feed xmlns='http://www.w3.org/2005/Atom'>"+"\n");
+
+ feed.append("<id>"+gallery.getId()+"</id>"+"\n");
+ feed.append("<title>"+gallery.getTitle()+"</title>"+"\n");
+ feed.append("<updated>"+gallery.getUpdated()+"</updated>"+"\n");
+
+ for (int i = 0; i < gallery.size(); i++) {
+ feed.append("<entry>"+"\n");
- for (int i = 0; i < gallery.size(); i++) {
- feed.append("<entry>"+"\n");
-
- GalleryItem entry = gallery.getItem(i);
- feed.append("<id>"+entry.getId()+"</id>"+"\n");
- feed.append("<title>"+entry.getTitle()+"</title>"+"\n");
- feed.append("<updated>"+entry.getUpdated()+"</updated>"+"\n");
-
- if(entry.getContent().isLinkedContent()){
- feed.append("<content type='"+entry.getContent().getContentType()+"' src='"+PathUtil.backToRealm(getPath())+entry.getContent().toString()+"'>"+"</content>"+"\n");
- }else{
- feed.append("<content type='"+entry.getContent().getContentType()+"'>"+entry.getContent().toString()+"</content>"+"\n");
- }
-
- feed.append("</entry>"+"\n");
+ GalleryItem entry = gallery.getItem(i);
+ feed.append("<id>"+entry.getId()+"</id>"+"\n");
+ feed.append("<title>"+entry.getTitle()+"</title>"+"\n");
+ feed.append("<updated>"+entry.getUpdated()+"</updated>"+"\n");
+
+ if(entry.getContent().isLinkedContent()){
+ feed.append("<content type='"+entry.getContent().getContentType()+"' src='"+PathUtil.backToRealm(getPath())+entry.getContent().toString()+"'>"+"</content>"+"\n");
+ }else{
+ feed.append("<content type='"+entry.getContent().getContentType()+"'>"+entry.getContent().toString()+"</content>"+"\n");
}
- feed.append("</feed>");
-
- result = new ByteArrayInputStream(feed.toString().getBytes());
+ feed.append("</entry>"+"\n");
}
- return result;
+ feed.append("</feed>");
+ return feed.toString();
}
+
//--- Modifiable
@@ -126,7 +139,11 @@
}else{
// Remove the gallery
try {
+ // Remove the images
getRealm().getRepository().getNode(getGalleryPath()).delete();
+
+ // Remove gallery related browsing
+ getRealm().getRepository().getNode(PathUtil.getParent(getPath())).delete();
} catch (NoSuchNodeException e) {
log.debug(e, e);
deleteOK = false;
@@ -143,25 +160,32 @@
return deleteOK;
}
+ // Don't understand
public InputStream getInputStream() throws Exception {
return getRealm().getRepository().getNode(getGalleryPath()).getInputStream();
}
+
+ // Don't understand
public long getLastModified() throws Exception {
return getRealm().getRepository().getNode(getGalleryPath()).getLastModified();
}
+ // Don't understand
public OutputStream getOutputStream() throws Exception {
return getRealm().getRepository().getNode(getGalleryPath()).getOutputStream();
}
+ // Don't understand
public Reader getReader() throws Exception {
return getRealm().getRepository().getReader(new Path(getGalleryPath()));
}
+ // Don't understand
public Writer getWriter() throws Exception {
return getRealm().getRepository().getWriter(new Path(getGalleryPath()));
}
+ // Don't understand
public void write(InputStream in) throws Exception {
// TODO Auto-generated method stub
log.warn("TODO[normal]: implement!");
Modified: public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/SimpleGallery.java
===================================================================
--- public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/SimpleGallery.java 2008-01-30 15:32:18 UTC (rev 30982)
+++ public/yanel/contributions/resources/gallery/src/java/org/wyona/yanel/impl/resources/gallery/SimpleGallery.java 2008-01-30 15:32:26 UTC (rev 30983)
@@ -54,7 +54,7 @@
* </p>
*/
public class SimpleGallery extends GenericItemBase implements Gallery {
- private static final String META_XML = "meta.xml";
+ public static final String META_XML = "meta.xml";
private static final String ITEM_COLLECTION_PREFIX = "item-";
private Repository repository = null;
@@ -165,7 +165,7 @@
Node [] imageData = children[i].getNodes();
for (int j = 0; j < imageData.length; j++) {
// Detect mime type
- String mimeType = children[i].getMimeType();
+ String mimeType = imageData[j].getMimeType();
if(null == mimeType){
mimeType = MimeTypeUtil.guessMimeType(PathUtil.getSuffix(imageData[j].getName()));
}
@@ -247,7 +247,7 @@
return imageItems.size();
}
- public final boolean removeItem(String id) {
+ public final GalleryItem removeItem(String id) {
if(imageItems == null){
imageItems = new ArrayList/*<Item>*/();
loadRepository();
@@ -260,14 +260,14 @@
}
}
- return false;
+ return null;
}
/**
* Override the method in order to remove differently.
* @param the [item-X] node inside gallery
* */
- public boolean removeItem(GenericItem item) {
+ public GalleryItem removeItem(GalleryItem item) {
boolean deleteOK = true;
Node n = null;
@@ -289,7 +289,11 @@
deleteOK = false;
}
- return deleteOK;
+ if(deleteOK){
+ return item;
+ }else{
+ return null;
+ }
}
/**
@@ -306,7 +310,15 @@
Node itemNode = null;
try {
- itemNode = getRepository().getNode(getPath()).addNode(ITEM_COLLECTION_PREFIX+size(), NodeType.COLLECTION);
+ Node galleryNode = getRepository().getNode(getPath());
+ String itemNodeName = null;
+ for (int i = size(); i < Integer.MAX_VALUE; i++) {
+ itemNodeName = ITEM_COLLECTION_PREFIX+i;
+ if(!galleryNode.hasNode(itemNodeName)){
+ break;
+ }
+ }
+ itemNode = galleryNode.addNode(itemNodeName, NodeType.COLLECTION);
// Fix the system properties
item.setProperty(ID_KEY, itemNode.getUUID());
@@ -321,14 +333,18 @@
StringBuffer sb = new StringBuffer("<?xml version='1.0'?>");
sb.append("<meta>");
- sb.append("<"+TITLE_KEY+"><![CDATA[");
- sb.append(item.getProperty(TITLE_KEY));
- sb.append("]]></"+TITLE_KEY+">");
+ if(item.getProperty(TITLE_KEY) != null){
+ sb.append("<"+TITLE_KEY+"><![CDATA[");
+ sb.append(item.getProperty(TITLE_KEY));
+ sb.append("]]></"+TITLE_KEY+">");
+ }
// TODO: Other meta info
sb.append("</meta>");
- new PrintWriter(new OutputStreamWriter(metaXml.getOutputStream())).write(sb.toString());
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(metaXml.getOutputStream()));
+ pw.write(sb.toString());
+ pw.flush();
} catch (Exception e) {
log.warn("Could not create the item properly", e);
}
More information about the Yanel-commits
mailing list