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