]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/text/DbkTextInterpreter.java
1 package org
.argeo
.cms
.text
;
5 import javax
.jcr
.Property
;
6 import javax
.jcr
.RepositoryException
;
8 import org
.argeo
.cms
.CmsException
;
9 import org
.argeo
.jcr
.docbook
.DocBookNames
;
10 import org
.argeo
.jcr
.docbook
.DocBookTypes
;
12 /** Based on HTML with a few Wiki-like shortcuts. */
13 public class DbkTextInterpreter
implements TextInterpreter
{
16 public void write(Item item
, String content
) {
18 if (item
instanceof Node
) {
19 Node node
= (Node
) item
;
20 if (node
.isNodeType(DocBookTypes
.PARA
)) {
21 String raw
= convertToStorage(node
, content
);
22 validateBeforeStoring(raw
);
24 if (!node
.hasNode(DocBookNames
.JCR_XMLTEXT
))
25 jcrText
= node
.addNode(DocBookNames
.JCR_XMLTEXT
, DocBookTypes
.XMLTEXT
);
27 jcrText
= node
.getNode(DocBookNames
.JCR_XMLTEXT
);
28 jcrText
.setProperty(DocBookNames
.JCR_XMLCHARACTERS
, raw
);
30 throw new CmsException("Don't know how to interpret " + node
);
33 Property property
= (Property
) item
;
34 property
.setValue(content
);
36 // item.getSession().save();
37 } catch (RepositoryException e
) {
38 throw new CmsException("Cannot set content on " + item
, e
);
43 public String
read(Item item
) {
45 String raw
= raw(item
);
46 return convertFromStorage(item
, raw
);
47 } catch (RepositoryException e
) {
48 throw new CmsException("Cannot get " + item
+ " for edit", e
);
53 public String
raw(Item item
) {
55 item
.getSession().refresh(true);
56 if (item
instanceof Node
) {
57 Node node
= (Node
) item
;
58 if (node
.isNodeType(DocBookTypes
.PARA
)) {
59 // WORKAROUND FOR BROKEN PARARAPHS
60 // if (!node.hasProperty(CMS_CONTENT)) {
61 // node.setProperty(CMS_CONTENT, "");
62 // node.getSession().save();
64 Node jcrText
= node
.getNode(DocBookNames
.JCR_XMLTEXT
);
65 return jcrText
.getProperty(DocBookNames
.JCR_XMLCHARACTERS
).getString();
67 throw new CmsException("Don't know how to interpret " + node
);
70 Property property
= (Property
) item
;
71 return property
.getString();
73 } catch (RepositoryException e
) {
74 throw new CmsException("Cannot get " + item
+ " content", e
);
80 * To be overridden, in order to make sure that only valid strings are being
83 protected void validateBeforeStoring(String raw
) {
86 /** To be overridden, in order to support additional formatting. */
87 protected String
convertToStorage(Item item
, String content
) throws RepositoryException
{
92 /** To be overridden, in order to support additional formatting. */
93 protected String
convertFromStorage(Item item
, String content
) throws RepositoryException
{