X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fparts%2FCmsDocBookEditor.java;h=ae77e1e5b86925ab8938fe34b2b6275728e51925;hb=cb244985c93c4003dee97ad26eed7fb814f71986;hp=b39feab14ae0426201a67983fec87178708e806d;hpb=fd768714f37a93b1b188a535991be43c9dc9ef6d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/CmsDocBookEditor.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/CmsDocBookEditor.java index b39feab14..ae77e1e5b 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/CmsDocBookEditor.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/CmsDocBookEditor.java @@ -1,21 +1,27 @@ package org.argeo.cms.e4.parts; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Map; import java.util.Observable; import java.util.Observer; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.inject.Inject; +import javax.jcr.ImportUUIDBehavior; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; +import org.apache.commons.logging.Log; import org.argeo.cms.CmsException; import org.argeo.cms.text.DocumentTextEditor; import org.argeo.cms.viewers.JcrVersionCmsEditable; import org.argeo.jcr.JcrUtils; +import org.argeo.jcr.docbook.DocBookNames; import org.argeo.jcr.docbook.DocBookTypes; import org.eclipse.e4.ui.di.Persist; import org.eclipse.e4.ui.model.application.ui.basic.MPart; @@ -37,16 +43,41 @@ public class CmsDocBookEditor implements Observer { public void createUI(Composite parent) { try { parent.setLayout(new GridLayout()); - session = repository.login(); - JcrUtils.loginOrCreateWorkspace(repository, "demo"); - Node textNode = JcrUtils.getOrAdd(session.getRootNode(), "article", DocBookTypes.ARTICLE); - if (textNode.isCheckedOut()) - textNode.addMixin(NodeType.MIX_TITLE); + // session = repository.login(); + session = JcrUtils.loginOrCreateWorkspace(repository, "example"); +// Node textNode = JcrUtils.getOrAdd(session.getRootNode(), "article", DocBookTypes.ARTICLE); +// if (textNode.isCheckedOut()) +// textNode.addMixin(NodeType.MIX_TITLE); + + String textNodeName = "docbook"; + if (session.getRootNode().hasNode(textNodeName)) + session.getRootNode().getNode(textNodeName).remove(); + + Node textNode = JcrUtils.getOrAdd(session.getRootNode(), textNodeName, DocBookTypes.BOOK); + Map properties = mpart.getProperties(); + String defaultContentUri = properties.get("defaultContentUri"); + if (textNode.hasNode(DocBookNames.DBK_ARTICLE)) + textNode.getNode(DocBookNames.DBK_ARTICLE).remove(); + if (defaultContentUri != null && !textNode.hasNode(DocBookNames.DBK_ARTICLE)) + try { + URL url = new URL(defaultContentUri); + try (InputStream in = url.openStream()) { + session.importXML(textNode.getPath(), in, + ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING); + } + Node dbkNode = textNode.getNode(DocBookNames.DBK_ARTICLE); + if (dbkNode.isNodeType(DocBookTypes.ARTICLE)) + System.out.println(dbkNode + " is an article"); + } catch (IOException e) { + e.printStackTrace(); + } + cmsEditable = new JcrVersionCmsEditable(textNode); if (session.hasPendingChanges()) session.save(); cmsEditable.addObserver(this); - DocumentTextEditor textEditor = new DocumentTextEditor(parent, SWT.NONE, textNode, cmsEditable); + DocumentTextEditor textEditor = new DocumentTextEditor(parent, SWT.NONE, + textNode.getNode(DocBookNames.DBK_ARTICLE), cmsEditable); mpart.setDirty(isDirty()); } catch (RepositoryException e) { throw new CmsException("Cannot create text editor", e);