Update of /var/cvs/applications/mynews/src/org/mmbase/mynews
In directory james.mmbase.org:/tmp/cvs-serv25942

Modified Files:
        MyNewsUrlConverter.java 
Log Message:
extended from DirectoryUrlConverter


See also: 
http://cvs.mmbase.org/viewcvs/applications/mynews/src/org/mmbase/mynews


Index: MyNewsUrlConverter.java
===================================================================
RCS file: 
/var/cvs/applications/mynews/src/org/mmbase/mynews/MyNewsUrlConverter.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- MyNewsUrlConverter.java     9 Jul 2008 17:54:46 -0000       1.18
+++ MyNewsUrlConverter.java     1 Sep 2008 07:07:00 -0000       1.19
@@ -16,7 +16,8 @@
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.storage.search.*;
 import org.mmbase.framework.*;
-import org.mmbase.framework.basic.UrlConverter;
+import org.mmbase.framework.basic.DirectoryUrlConverter;
+import org.mmbase.framework.basic.BasicFramework;
 import org.mmbase.util.functions.*;
 import org.mmbase.util.logging.*;
 
@@ -33,20 +34,20 @@
  *
  *
  * @author Michiel Meeuwissen
- * @version $Id: MyNewsUrlConverter.java,v 1.18 2008/07/09 17:54:46 michiel 
Exp $
+ * @version $Id: MyNewsUrlConverter.java,v 1.19 2008/09/01 07:07:00 michiel 
Exp $
  * @since MMBase-1.9
  */
-public class MyNewsUrlConverter implements UrlConverter {
+public class MyNewsUrlConverter extends DirectoryUrlConverter {
     private static final Logger log = 
Logging.getLoggerInstance(MyNewsUrlConverter.class);
 
     private static CharTransformer trans = new Identifier();
     private boolean useTitle = false;
     private int dateDepth  = 0;
-    private String  directory = "/magazine";
-    private final Framework framework;
 
-    public MyNewsUrlConverter(Framework fw) {
-        framework = fw;
+    public MyNewsUrlConverter(BasicFramework fw) {
+        super(fw);
+        setDirectory("/magazine/");
+        addComponent(ComponentRepository.getInstance().getComponent("mynews"));
     }
 
     public void setUseTitle(boolean t) {
@@ -55,37 +56,19 @@
     public void setDateDepth(int d) {
         dateDepth = d;
     }
-    public void setDir(String d) {
-        directory = d;
-    }
-
 
-    public Parameter[] getParameterDefinition() {
-        return new Parameter[] {};
-    }
 
-    protected String getUrl(String path,
+    protected String getNiceUrl(Block block,
                              Map<String, Object> parameters,
-                             Parameters frameworkParameters, boolean 
escapeAmps, boolean action) {
+                                Parameters frameworkParameters, boolean 
escapeAmps, boolean action) throws FrameworkException {
         if (log.isDebugEnabled()) {
-            log.debug("" + path + parameters + frameworkParameters);
+            log.debug("" + block + parameters + frameworkParameters);
         }
-        Block renderingBlock = 
framework.getRenderingBlock(frameworkParameters);
-        if (renderingBlock == null) {
-            log.debug("No current block found for parameters " + 
frameworkParameters);
-            return null;
-        } else {
-            HttpServletRequest request = 
frameworkParameters.get(Parameter.REQUEST);
-
-            Block block = framework.getBlock(frameworkParameters);
 
-            if (block != null && 
"mynews".equals(block.getComponent().getName())) {
-                block = renderingBlock.getComponent().getBlock(path);
                 log.debug("Found mynews block " + block);
                 Node n = (Node) parameters.get(Framework.N.getName());
                 StringBuilder b = new StringBuilder(directory);
                 if(block.getName().equals("article")) {
-                    b.append("/");
                     if (dateDepth > 0) {
                         Calendar cal = Calendar.getInstance();
                         cal.setTime(n.getDateValue("date"));
@@ -108,60 +91,30 @@
                     }
                 }
                 return b.toString();
-            } else {
-                log.debug("No mynews block found");
-                return null;
-            }
-        }
     }
 
-    public String getUrl(String path,
-                         Map<String, Object> parameters,
-                         Parameters frameworkParameters, boolean escapeAmps) {
-        return getUrl(path, parameters, frameworkParameters, escapeAmps, 
false);
-    }
-    public String getProcessUrl(String path,
-                                Map<String, Object> parameters,
-                                Parameters frameworkParameters, boolean 
escapeAmps) {
-        return getUrl(path, parameters, frameworkParameters, escapeAmps, true);
-    }
 
-    public String getInternalUrl(String page, Map<String, Object> params, 
Parameters frameworkParameters) throws FrameworkException {
-        HttpServletRequest request = 
frameworkParameters.get(Parameter.REQUEST);
-        if (page == null) throw new IllegalArgumentException();
-        if (page.startsWith(directory)) {
-            log.debug("Found a mynews url");
-            String sp = FrameworkFilter.getPath(request);
-            String[] path = sp.split("/");
-            if (log.isDebugEnabled()) {
-                log.debug("Going to filter " + Arrays.asList(path));
-            }
-            if (path.length >= 2) {
+    public String getFilteredInternalUrl(List<String>  path, Map<String, 
Object> params, Parameters frameworkParameters) throws FrameworkException {
                 StringBuilder result = new 
StringBuilder("/mmbase/mynews/render.jspx");
-                assert path[0].equals("");
-                assert path[1].equals(directory.substring(1)) : path[1] + " " 
+ directory;
-                if (path.length == 2) {
-                    // magazine mode.
-                    return result.toString();
-                } else {
+        if (path.size() > 0) {
                     // article mode
-                    String id = path[path.length - 1];
+            String id = path.get(path.size() - 1); // last element in the list 
identifies the article
                     String n;
                     if (useTitle) {
                         Cloud cloud = 
ContextProvider.getDefaultCloudContext().getCloud("mmbase");
                         NodeManager news = cloud.getNodeManager("news");
                         NodeQuery q = news.createQuery();
-                        String like = id;//.replaceAll("_", "?");
+                String like = id;
                         Queries.addConstraint(q, Queries.createConstraint(q, 
"title", Queries.getOperator("LIKE"), like));
-                        if (path.length > 3) {
-                            String[] date = new String[] {path[2], "01", "01"};
+                if (path.size() > 1) {
+                    String[] date = new String[] {path.get(0), "01", "01"};
                             String offset = "1 year";
-                            if (path.length > 4) {
-                                date[1] = path[3];
+                    if (path.size() > 2) {
+                        date[1] = path.get(1);
                                 offset = "1 month";
                             }
-                            if (path.length > 5) {
-                                date[2] = path[4];
+                    if (path.size() > 3) {
+                        date[2] = path.get(2);
                                 offset = "1 day";
                             }
                             String ds = date[0] + '-' + date[1] + '-' + 
date[2];
@@ -192,21 +145,9 @@
                         n = id;
                     }
                     result.append("?block=article&n=" + n);
-                    return result.toString();
-                }
-            } else {
-                log.debug("path length " + path.length);
-                return null;
-            }
-        } else {
-            log.debug("Leaving unfiltered");
-            return null;
-        }
     }
 
-    public String toString() {
-        return directory;
+        return result.toString();
     }
 
-
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to