[Yanel-commits] rev 57617 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/impl

michi at wyona.com michi at wyona.com
Thu Mar 31 17:48:56 CEST 2011


Author: michi
Date: 2011-03-31 17:48:55 +0200 (Thu, 31 Mar 2011)
New Revision: 57617

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/impl/RevisionsWorkflowMenuItem.java
Log:
versionable v3 added

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/impl/RevisionsWorkflowMenuItem.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/impl/RevisionsWorkflowMenuItem.java	2011-03-31 15:46:43 UTC (rev 57616)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/impl/RevisionsWorkflowMenuItem.java	2011-03-31 15:48:55 UTC (rev 57617)
@@ -2,6 +2,7 @@
 
 import org.wyona.yanel.core.Resource;
 import org.wyona.yanel.core.api.attributes.VersionableV2;
+import org.wyona.yanel.core.api.attributes.VersionableV3;
 import org.wyona.yanel.core.api.attributes.WorkflowableV1;
 import org.wyona.yanel.core.attributes.versionable.RevisionInformation;
 import org.wyona.yanel.core.map.Map;
@@ -32,27 +33,59 @@
     public String getMenuItem(Resource resource) throws Exception {
         StringBuilder sb = new StringBuilder();
 
-        if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2")) {
+        if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2") && !ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "3")) {
             RevisionInformation[] revisions = ((VersionableV2) resource).getRevisions();
             if (revisions !=  null && revisions.length > 0) {
+                // TODO: i18n
+                //sb.append("<li class=\"haschild\">Revisionen (und Workflow)   <ul>");
                 sb.append("<li class=\"haschild\">Revisions (and Workflow)   <ul>");
                 for (int i = revisions.length -1; i >= 0; i--) {
-                    boolean mostRecent = false;
-                    boolean oldestRevision = false;
-                    if (i == revisions.length - 1) mostRecent = true;
-                    if (i == 0) oldestRevision = true;
+                    boolean isMostRecent = false;
+                    boolean isOldestRevision = false;
+                    if (i == revisions.length - 1) isMostRecent = true;
+                    if (i == 0) isOldestRevision = true;
                     sb.append((new RevisionInformationMenuItem(resource,
                                                                revisions[i],
+                                                               resource.getRequestedLanguage())).toHTML(isMostRecent, isOldestRevision));
+                }
+                sb.append("</ul></li>");
+            } else {
+                sb.append("<li>No revisions yet</li>");
+            }
+            return sb.toString();
+        } else {
+            if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2") && ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "3")) {
+                log.warn("The resource '" + resource.getPath() + "' seems to implement VersionableV3 and hence will not use interface VersionableV2.");
+            }
+        }
+
+        if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "3")) {
+            java.util.Iterator it = ((VersionableV3) resource).getRevisions(false);
+            if (it !=  null) {
+                // TODO: i18n
+                sb.append("<li class=\"haschild\">Revisionen (und Workflow)   <ul>");
+                //sb.append("<li class=\"haschild\">Revisions (and Workflow)   <ul>");
+                boolean mostRecent = true;
+                boolean oldestRevision = false;
+                while(it.hasNext()) {
+                    RevisionInformation revInfo = (RevisionInformation)it.next();
+                    if (!it.hasNext()) {
+                        oldestRevision = true;
+                    }
+                    sb.append((new RevisionInformationMenuItem(resource, revInfo,
                                                                resource.getRequestedLanguage())).toHTML(mostRecent, oldestRevision));
+                    mostRecent = false;
                 }
                 sb.append("</ul></li>");
             } else {
                 sb.append("<li>No revisions yet</li>");
             }
+            return sb.toString();
         } else {
-            log.warn("The resource '" + resource.getPath() + "' does not implement interface VersionableV2!");
+            log.warn("The resource '" + resource.getPath() + "' does not implement interface VersionableV3!");
         }
 
+        sb.append("The resource '" + resource.getPath() + "' does not implement any versionable interface!");
         return sb.toString();
     }
 }



More information about the Yanel-commits mailing list