From 87e13f014ab60fb7691a14b653495e32fe5a76e3 Mon Sep 17 00:00:00 2001 From: cheetah100 Date: Tue, 17 Nov 2015 15:30:23 +1300 Subject: [PATCH] * Adding Indexes for Jcr Repository * Different Handling of Numbers - Integer to Double. --- .../orcon/kanban/controllers/RuleCache.java | 21 ++++++++++++++++ .../kanban/controllers/TemplateCache.java | 2 +- .../orcon/kanban/tools/OcmMapperFactory.java | 13 ++++++---- .../tools/RepositoryIndexInitializer.java | 24 +++++++++++++++++++ 4 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/main/java/nz/net/orcon/kanban/tools/RepositoryIndexInitializer.java diff --git a/src/main/java/nz/net/orcon/kanban/controllers/RuleCache.java b/src/main/java/nz/net/orcon/kanban/controllers/RuleCache.java index 06c215e..7db6d5e 100644 --- a/src/main/java/nz/net/orcon/kanban/controllers/RuleCache.java +++ b/src/main/java/nz/net/orcon/kanban/controllers/RuleCache.java @@ -26,6 +26,8 @@ import java.util.Map; import javax.annotation.Resource; import org.apache.jackrabbit.ocm.manager.ObjectContentManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,6 +37,8 @@ import nz.net.orcon.kanban.tools.OcmMapperFactory; @Service public class RuleCache extends CacheImpl { + + private static final Logger LOG = LoggerFactory.getLogger(RuleCache.class); @Resource(name="ocmFactory") OcmMapperFactory ocmFactory; @@ -44,6 +48,9 @@ public class RuleCache extends CacheImpl { @Override protected Rule getFromStore(String... itemIds) throws Exception { + + LOG.info("Get Rule Store: "+ getStringFromArray(itemIds)); + ObjectContentManager ocm = ocmFactory.getOcm(); Rule rule; try{ @@ -56,6 +63,9 @@ public class RuleCache extends CacheImpl { @Override protected Map getListFromStore(String... prefixes) throws Exception { + + LOG.info("Get Rule List Store: "+ getStringFromArray(prefixes)); + ObjectContentManager ocm = ocmFactory.getOcm(); Map result = null; try{ @@ -65,5 +75,16 @@ public class RuleCache extends CacheImpl { } return result; } + + private String getStringFromArray( String[] stringArray){ + + StringBuilder builder = new StringBuilder(); + for( int a=0; a{ case STRING: return value.toString(); case NUMBER: - return Integer.parseInt(value.toString()); + return Double.valueOf(value.toString()); case BOOLEAN: return Boolean.parseBoolean(value.toString()); case DATE: diff --git a/src/main/java/nz/net/orcon/kanban/tools/OcmMapperFactory.java b/src/main/java/nz/net/orcon/kanban/tools/OcmMapperFactory.java index 3384c28..b47de05 100644 --- a/src/main/java/nz/net/orcon/kanban/tools/OcmMapperFactory.java +++ b/src/main/java/nz/net/orcon/kanban/tools/OcmMapperFactory.java @@ -45,7 +45,6 @@ import org.apache.jackrabbit.ocm.mapper.Mapper; import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -//import org.springframework.beans.factory.annotation.Autowired; import com.mongodb.DB; import com.mongodb.MongoClient; @@ -53,7 +52,7 @@ import com.mongodb.MongoClient; public class OcmMapperFactory { private static final Logger logger = LoggerFactory.getLogger(OcmMapperFactory.class); - + private Repository repository; private String domainPackage; @@ -86,8 +85,12 @@ public class OcmMapperFactory { DB db = new MongoClient(host, 27017).getDB("gravity"); DocumentNodeStore ns = new DocumentMK.Builder(). - setMongoDB(db).getNodeStore(); - this.repository = new Jcr(new Oak(ns)).createRepository(); + setMongoDB(db).getNodeStore(); + + this.repository = new Jcr(new Oak(ns)) + .with(new RepositoryIndexInitializer()) + .withAsyncIndexing() + .createRepository(); } if(this.mapper==null){ @@ -134,7 +137,7 @@ public class OcmMapperFactory { * * @param session */ - private void setupListener(Session session){ + private void setupListener(){ //session.getWorkspace().getObservationManager().addEventListener(arg0, arg1, arg2, arg3, arg4, arg5, arg6) diff --git a/src/main/java/nz/net/orcon/kanban/tools/RepositoryIndexInitializer.java b/src/main/java/nz/net/orcon/kanban/tools/RepositoryIndexInitializer.java new file mode 100644 index 0000000..3978280 --- /dev/null +++ b/src/main/java/nz/net/orcon/kanban/tools/RepositoryIndexInitializer.java @@ -0,0 +1,24 @@ +package nz.net.orcon.kanban.tools; + +import org.apache.jackrabbit.oak.plugins.index.IndexUtils; +import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer; +import org.apache.jackrabbit.oak.spi.state.NodeBuilder; + +import com.google.common.collect.ImmutableList; + +public class RepositoryIndexInitializer implements RepositoryInitializer{ + + @Override + public void initialize(NodeBuilder builder) { + + NodeBuilder root = builder.getBaseState().builder(); + NodeBuilder index = IndexUtils.getOrCreateOakIndex(root); + + ImmutableList fields = + ImmutableList.builder().add( "id","name" ).build(); + + NodeBuilder indexNodebuilder = + IndexUtils.createIndexDefinition(index, "gravityIndexes", true, false, fields, null); + + } +} -- GitLab