X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=core%2Forg.argeo.entity.core%2Fsrc%2Forg%2Fargeo%2Fentity%2Fcore%2FJcrEntityDefinition.java;fp=core%2Forg.argeo.entity.core%2Fsrc%2Forg%2Fargeo%2Fentity%2Fcore%2FJcrEntityDefinition.java;h=7fd26d1c078de79409d456fb6cc2984baa642071;hb=418ea1efbf3f0d6b706603c6ff1c0fdd17314773;hp=0000000000000000000000000000000000000000;hpb=70010c4afc5799622fcad5b075740d94da074798;p=gpl%2Fargeo-suite.git diff --git a/core/org.argeo.entity.core/src/org/argeo/entity/core/JcrEntityDefinition.java b/core/org.argeo.entity.core/src/org/argeo/entity/core/JcrEntityDefinition.java new file mode 100644 index 0000000..7fd26d1 --- /dev/null +++ b/core/org.argeo.entity.core/src/org/argeo/entity/core/JcrEntityDefinition.java @@ -0,0 +1,73 @@ +package org.argeo.entity.core; + +import java.util.Map; + +import javax.jcr.Node; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.argeo.api.NodeUtils; +import org.argeo.entity.EntityConstants; +import org.argeo.entity.EntityDefinition; +import org.argeo.jcr.Jcr; +import org.osgi.framework.BundleContext; + +/** An entity definition based on a JCR data structure. */ +public class JcrEntityDefinition implements EntityDefinition { + private Repository repository; + + private String type; + private String defaultEditoryId; + + public void init(BundleContext bundleContext, Map properties) throws RepositoryException { + Session adminSession = NodeUtils.openDataAdminSession(repository, null); + try { + type = properties.get(EntityConstants.TYPE); + if (type == null) + throw new IllegalArgumentException("Entity type property " + EntityConstants.TYPE + " must be set."); + defaultEditoryId = properties.get(EntityConstants.DEFAULT_EDITORY_ID); +// String definitionPath = EntityNames.ENTITY_DEFINITIONS_PATH + '/' + type; +// if (!adminSession.itemExists(definitionPath)) { +// Node entityDefinition = JcrUtils.mkdirs(adminSession, definitionPath, EntityTypes.ENTITY_DEFINITION); +//// entityDefinition.addMixin(EntityTypes.ENTITY_DEFINITION); +// adminSession.save(); +// } + initJcr(adminSession); + } finally { + Jcr.logout(adminSession); + } + } + + /** To be overridden in order to perform additional initialisations. */ + protected void initJcr(Session adminSession) throws RepositoryException { + + } + + public void destroy(BundleContext bundleContext, Map properties) throws RepositoryException { + + } + + @Override + public String getEditorId(Node entity) { + return defaultEditoryId; + } + + @Override + public String getType() { + return type; + } + + protected Repository getRepository() { + return repository; + } + + public void setRepository(Repository repository) { + this.repository = repository; + } + + public String toString() { + return "Entity Definition " + getType(); + } + +}