X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FIdentityTextInterpreter.java;fp=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FIdentityTextInterpreter.java;h=c66cd866def539e9cd22486b8648dc45ea79f615;hb=998cdf60d00ffc35d987bdb373a9676b095f16f8;hp=0000000000000000000000000000000000000000;hpb=fe9129fa0539f717ce18f0e42829ff3f31559c3b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/IdentityTextInterpreter.java b/org.argeo.cms/src/org/argeo/cms/IdentityTextInterpreter.java new file mode 100644 index 000000000..c66cd866d --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/IdentityTextInterpreter.java @@ -0,0 +1,79 @@ +package org.argeo.cms; + +import javax.jcr.Item; +import javax.jcr.Node; +import javax.jcr.Property; +import javax.jcr.RepositoryException; + +/** Based on HTML with a few Wiki-like shortcuts. */ +public class IdentityTextInterpreter implements TextInterpreter, CmsNames { + + @Override + public void write(Item item, String content) { + try { + if (item instanceof Node) { + Node node = (Node) item; + if (node.isNodeType(CmsTypes.CMS_STYLED)) { + String raw = convertToStorage(node, content); + node.setProperty(CMS_CONTENT, raw); + } else { + throw new CmsException("Don't know how to interpret " + + node); + } + } else {// property + Property property = (Property) item; + property.setValue(content); + } + item.getSession().save(); + } catch (RepositoryException e) { + throw new CmsException("Cannot set content on " + item, e); + } + } + + @Override + public String read(Item item) { + try { + String raw = raw(item); + return convertFromStorage(item, raw); + } catch (RepositoryException e) { + throw new CmsException("Cannot get " + item + " for edit", e); + } + } + + @Override + public String raw(Item item) { + try { + if (item instanceof Node) { + Node node = (Node) item; + if (node.isNodeType(CmsTypes.CMS_STYLED)) { + // WORKAROUND FOR BROKEN PARARAPHS + if (!node.hasProperty(CMS_CONTENT)) { + node.setProperty(CMS_CONTENT, ""); + node.getSession().save(); + } + + return node.getProperty(CMS_CONTENT).getString(); + } else { + throw new CmsException("Don't know how to interpret " + + node); + } + } else {// property + Property property = (Property) item; + return property.getString(); + } + } catch (RepositoryException e) { + throw new CmsException("Cannot get " + item + " content", e); + } + } + + protected String convertToStorage(Item item, String content) + throws RepositoryException { + return content; + + } + + protected String convertFromStorage(Item item, String content) + throws RepositoryException { + return content; + } +}