Update of /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template In directory james.mmbase.org:/tmp/cvs-serv32624/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template
Modified Files: SimpleTemplateParser.java QueryTemplateParser.java Template.java MultiTemplateParser.java AbstractTemplateParser.java TemplateParser.java Log Message: more tests See also: http://cvs.mmbase.org/viewcvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template Index: SimpleTemplateParser.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/SimpleTemplateParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- SimpleTemplateParser.java 6 Dec 2008 17:58:51 -0000 1.1 +++ SimpleTemplateParser.java 8 Dec 2008 19:37:08 -0000 1.2 @@ -3,20 +3,19 @@ public class SimpleTemplateParser extends AbstractTemplateParser implements TemplateParser { public static final String SIMPLE_TEMPLATE_REGEXP = "\\w+(:[0-9]+)?"; - public SimpleTemplateParser(String nodeType, String nodeNumber, String template) { super(nodeType, nodeNumber, template); } - public void insertNumber() { - removeNumber(); + public void insertNodeNumber() { + removeNodeNumber(); if (nodeType.equals(template.getTemplate())) { - template.setNodenr(nodeNumber); + template.setNodeNumber(nodeNumber); } } - public static boolean isTemplate(String template){ - return template.matches("^"+SIMPLE_TEMPLATE_REGEXP+"$"); + public static boolean isTemplate(String template) { + return template.matches("^" + SIMPLE_TEMPLATE_REGEXP + "$"); } @Override @@ -29,5 +28,4 @@ return new Template(templateStr); } - } Index: QueryTemplateParser.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/QueryTemplateParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- QueryTemplateParser.java 6 Dec 2008 17:58:51 -0000 1.1 +++ QueryTemplateParser.java 8 Dec 2008 19:37:08 -0000 1.2 @@ -13,10 +13,10 @@ this.templateQueryRunner = templateQueryRunner; } - public void insertNumber() { - removeNumber(); + public void insertNodeNumber() { + removeNodeNumber(); if(nodeType.equals(((QueryTemplate)template).getSourceType())){ - template.setNodenr(templateQueryRunner.runQuery(nodeNumber, queryTemplate)); + template.setNodeNumber(templateQueryRunner.runQuery(nodeNumber, queryTemplate)); } } Index: Template.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/Template.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- Template.java 6 Dec 2008 17:58:51 -0000 1.1 +++ Template.java 8 Dec 2008 19:37:08 -0000 1.2 @@ -7,7 +7,7 @@ public class Template { protected String template; - protected String nodenr = ""; + protected String nodeNumber = ""; static final String TEMPLATE_NODENR_SEPARATOR=":"; @@ -18,23 +18,27 @@ } public void removeNodenr(){ - nodenr = ""; + nodeNumber = ""; } String getNodeNumber(){ - return nodenr; + return nodeNumber; } - public boolean hasNodenr(){ - return !"".equals(nodenr); + public boolean hasNodeNumber(){ + return !"".equals(nodeNumber); } - public void setNodenr(String nodenr){ - this.nodenr = (StringUtils.isBlank(nodenr) ? "" : nodenr); + public void setNodeNumber(String nodeNumber){ + this.nodeNumber = (StringUtils.isBlank(nodeNumber) ? "" : nodeNumber); } public String getTemplate(){ - return template + (hasNodenr() ? TEMPLATE_NODENR_SEPARATOR + nodenr : ""); + return template + (hasTemplate() && hasNodeNumber() ? TEMPLATE_NODENR_SEPARATOR : "") + nodeNumber; + } + + public boolean hasTemplate() { + return ! StringUtils.isBlank(template); } private void splitNodenrFromTemplate() { @@ -43,7 +47,11 @@ Matcher m = p.matcher(_template); if (m.find()) { template = _template.substring(0, m.start()); - nodenr = _template.substring(m.start() + 1); + nodeNumber = _template.substring(m.start() + 1); } } + + public void removeTemplate() { + template = ""; + } } Index: MultiTemplateParser.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/MultiTemplateParser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -b -r1.3 -r1.4 --- MultiTemplateParser.java 6 Dec 2008 18:48:45 -0000 1.3 +++ MultiTemplateParser.java 8 Dec 2008 19:37:08 -0000 1.4 @@ -12,15 +12,9 @@ return validator.isValidMultitemplate(); } - /** - * Convenience method to clean the node numbers from a multi template. For this you don't need - * things like node type,node number or a [EMAIL PROTECTED] TemplateQueryRunner} instance. - * @param template - * @return - */ - public static String cleanTemplate(String template) { + public static String stripTemplatesLeaveNodeNr(String template) { MultiTemplateParser mtp = new MultiTemplateParser("", "", template, null); - mtp.removeNumber(); + mtp.stripTemplateLeaveNodenr(); return mtp.getTemplate(); } @@ -30,21 +24,43 @@ this.templateQueryRunner = templateQueryRunner; } - public void insertNumber() { + public void stripTemplateLeaveNodenr() { process(new Processor() { @Override void process() { - templateParser.insertNumber(); + templateParser.stripTemplateLeaveNodenr(); + } + + @Override + String processPrefix(String prefix) { + //strip the opening bracket + return prefix.substring(0, prefix.length()-1); + } + + @Override + String processSuffix(String suffix) { + return suffix.substring(1); + } + + + }); + } + + public void insertNodeNumber() { + process(new Processor() { + @Override + void process() { + templateParser.insertNodeNumber(); } }); } - public void removeNumber() { + public void removeNodeNumber() { process(new Processor() { @Override void process() { - templateParser.removeNumber(); + templateParser.removeNodeNumber(); } }); } @@ -62,7 +78,9 @@ processor.process(); String processedTemplate = processor.getTemplateParser().getTemplate(); - template = new Template(templatePrefix + processedTemplate + templateSuffix); + template = new Template(processor.processPrefix(templatePrefix) + + processedTemplate + + processor.processSuffix(templateSuffix)); offset = begin + processedTemplate.length() + 1; } } @@ -80,6 +98,19 @@ } + @Override + protected boolean matches(String template) { + return MultiTemplateParser.isTemplate(template); + } + + @Override + protected Template instantiateTemplate(String templateStr) { + //TODO: there should be a MultiTemplate type, that holds the structure of text/subtemplates as a model. + + return new Template(templateStr); + } + + private static abstract class Processor { protected TemplateParser templateParser; @@ -87,22 +118,18 @@ this.templateParser = templateParser; } - public TemplateParser getTemplateParser() { + TemplateParser getTemplateParser() { return templateParser; } - abstract void process(); + String processPrefix(String prefix){ + return prefix; } - @Override - protected boolean matches(String template) { - return MultiTemplateParser.isTemplate(template); + String processSuffix(String suffix){ + return suffix; } - @Override - protected Template instantiateTemplate(String templateStr) { - //TODO: there should be a MultiTemplate type, that holds the structure of text/subtemplates as a model. - - return new Template(templateStr); + abstract void process(); } } Index: AbstractTemplateParser.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/AbstractTemplateParser.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- AbstractTemplateParser.java 6 Dec 2008 18:45:42 -0000 1.2 +++ AbstractTemplateParser.java 8 Dec 2008 19:37:08 -0000 1.3 @@ -15,7 +15,7 @@ public String getTemplate() { return template.getTemplate(); } - public void removeNumber() { + public void removeNodeNumber() { template.removeNodenr(); } @@ -26,6 +26,10 @@ } } + public void stripTemplateLeaveNodenr() { + template.removeTemplate(); + } + //TODO: this is all a bit weird. Better solution for static isTemplate() methods //(should be in interface, but you don't want to instantiate a parser to see if it can parse a template... protected abstract boolean matches(String template); Index: TemplateParser.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/template/TemplateParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- TemplateParser.java 6 Dec 2008 17:58:51 -0000 1.1 +++ TemplateParser.java 8 Dec 2008 19:37:08 -0000 1.2 @@ -7,7 +7,8 @@ * */ public interface TemplateParser { - public void insertNumber(); - public void removeNumber(); + public void insertNodeNumber(); + public void removeNodeNumber(); + public void stripTemplateLeaveNodenr(); public String getTemplate(); } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs