]> git.argeo.org Git - gpl/argeo-suite.git/blob - publishing/org.argeo.publishing.ui/src/org/argeo/cms/text/IdentityTextInterpreter.java
[maven-release-plugin] prepare release argeo-suite-2.1.17
[gpl/argeo-suite.git] / publishing / org.argeo.publishing.ui / src / org / argeo / cms / text / IdentityTextInterpreter.java
1 package org.argeo.cms.text;
2
3 import javax.jcr.Item;
4 import javax.jcr.Node;
5 import javax.jcr.Property;
6 import javax.jcr.RepositoryException;
7
8 import org.argeo.cms.CmsException;
9
10 /** Based on HTML with a few Wiki-like shortcuts. */
11 public class IdentityTextInterpreter implements TextInterpreter, CmsNames {
12
13 @Override
14 public void write(Item item, String content) {
15 try {
16 if (item instanceof Node) {
17 Node node = (Node) item;
18 if (node.isNodeType(CmsTypes.CMS_STYLED)) {
19 String raw = convertToStorage(node, content);
20 validateBeforeStoring(raw);
21 node.setProperty(CMS_CONTENT, raw);
22 } else {
23 throw new CmsException("Don't know how to interpret "
24 + node);
25 }
26 } else {// property
27 Property property = (Property) item;
28 property.setValue(content);
29 }
30 // item.getSession().save();
31 } catch (RepositoryException e) {
32 throw new CmsException("Cannot set content on " + item, e);
33 }
34 }
35
36 @Override
37 public String read(Item item) {
38 try {
39 String raw = raw(item);
40 return convertFromStorage(item, raw);
41 } catch (RepositoryException e) {
42 throw new CmsException("Cannot get " + item + " for edit", e);
43 }
44 }
45
46 @Override
47 public String raw(Item item) {
48 try {
49 item.getSession().refresh(true);
50 if (item instanceof Node) {
51 Node node = (Node) item;
52 if (node.isNodeType(CmsTypes.CMS_STYLED)) {
53 // WORKAROUND FOR BROKEN PARARAPHS
54 if (!node.hasProperty(CMS_CONTENT)) {
55 node.setProperty(CMS_CONTENT, "");
56 node.getSession().save();
57 }
58
59 return node.getProperty(CMS_CONTENT).getString();
60 } else {
61 throw new CmsException("Don't know how to interpret "
62 + node);
63 }
64 } else {// property
65 Property property = (Property) item;
66 return property.getString();
67 }
68 } catch (RepositoryException e) {
69 throw new CmsException("Cannot get " + item + " content", e);
70 }
71 }
72
73 // EXTENSIBILITY
74 /**
75 * To be overridden, in order to make sure that only valid strings are being
76 * stored.
77 */
78 protected void validateBeforeStoring(String raw) {
79 }
80
81 /** To be overridden, in order to support additional formatting. */
82 protected String convertToStorage(Item item, String content)
83 throws RepositoryException {
84 return content;
85
86 }
87
88 /** To be overridden, in order to support additional formatting. */
89 protected String convertFromStorage(Item item, String content)
90 throws RepositoryException {
91 return content;
92 }
93 }