diff --git a/core-jcr/src/main/java/org/silverpeas/core/jcr/impl/oak/JCRIndexDefinitionCreation.java b/core-jcr/src/main/java/org/silverpeas/core/jcr/impl/oak/JCRIndexDefinitionCreation.java index c0100ebd54..ad3e634417 100644 --- a/core-jcr/src/main/java/org/silverpeas/core/jcr/impl/oak/JCRIndexDefinitionCreation.java +++ b/core-jcr/src/main/java/org/silverpeas/core/jcr/impl/oak/JCRIndexDefinitionCreation.java @@ -33,6 +33,7 @@ import org.silverpeas.core.jcr.SilverpeasRepository; import org.silverpeas.core.jcr.util.SilverpeasJCRIndexation; import org.silverpeas.core.jcr.util.SilverpeasProperty; +import org.silverpeas.core.util.logging.SilverLogger; import javax.inject.Inject; import javax.inject.Singleton; @@ -55,6 +56,7 @@ public class JCRIndexDefinitionCreation implements SilverpeasJCRIndexation { @Override public void initialize() { if (repository instanceof OakRepository) { + SilverLogger.getLogger(this).info("Initialize indexation in JCR..."); NodeBuilder indexRoot = getIndexRoot(); Properties indexDefs = loadIndexDefinitions(); indexDefs.forEach((key, value) -> { @@ -62,8 +64,13 @@ public void initialize() { String properties = (String) value; String[] np = Arrays.stream(properties.split(" ")).map(String::trim).toArray(String[]::new); if (!indexRoot.hasChildNode(name)) { - IndexUtils.createIndexDefinition(indexRoot, name, true, false, Arrays.asList(np), + String prop = np.length > 1 ? "properties " : "property "; + SilverLogger.getLogger(this).info("Create index " + name + " on " + prop + + String.join(" and ", np)); + IndexUtils.createIndexDefinition(indexRoot, name, false, false, Arrays.asList(np), List.of(SilverpeasProperty.SLV_SIMPLE_DOCUMENT)); + } else { + SilverLogger.getLogger(this).info("Index " + name + " already created"); } }); } diff --git a/core-jcr/src/main/resources/silverpeas-oak-index.properties b/core-jcr/src/main/resources/silverpeas-oak-index.properties index ce6ac6c835..ab8f937592 100644 --- a/core-jcr/src/main/resources/silverpeas-oak-index.properties +++ b/core-jcr/src/main/resources/silverpeas-oak-index.properties @@ -6,13 +6,13 @@ # - the property value: a space-separated list of JCR node properties to index # -name = slv:name -description = slv:description -nameAndDescription = slv:name slv:description -oldSilverpeasId = slv:oldSilverpeasId -foreignKey = slv:foreignKey -owner = slv:owner -expiryDate = slv:expiryDate -alertDate = slv:alertDate -order = slv:order -versioned = slv:versioned \ No newline at end of file +indexByName = slv:name +indexByDescription = slv:description +indexByNameAndDescription = slv:name slv:description +indexByOldSilverpeasId = slv:oldSilverpeasId +indexByForeignKey = slv:foreignKey +indexByOwner = slv:owner +indexByOldSilverpeasIdAndVersioned = slv:oldSilverpeasId slv:versioned +indexByExpiryDate = slv:expiryDate slv:order +indexByAlertDate = slv:alertDate slv:order +indexByForeignKeyAndOrder = slv:foreignKey slv:order \ No newline at end of file diff --git a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorisedAttachmentServiceIT.java b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorizedAttachmentServiceIT.java similarity index 99% rename from core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorisedAttachmentServiceIT.java rename to core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorizedAttachmentServiceIT.java index 8d80f12803..6b381e9f4c 100644 --- a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorisedAttachmentServiceIT.java +++ b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/HistorizedAttachmentServiceIT.java @@ -70,7 +70,7 @@ * @author ehugonnet */ @RunWith(Arquillian.class) -public class HistorisedAttachmentServiceIT extends JcrIntegrationIT { +public class HistorizedAttachmentServiceIT extends JcrIntegrationIT { private static final String instanceId = "kmelia974"; private SimpleDocumentPK existingFrDoc; @@ -82,7 +82,7 @@ public class HistorisedAttachmentServiceIT extends JcrIntegrationIT { @Deployment public static Archive createTestArchive() { - return WarBuilder4LibCore.onWarForTestClass(HistorisedAttachmentServiceIT.class) + return WarBuilder4LibCore.onWarForTestClass(HistorizedAttachmentServiceIT.class) .addJcrFeatures() .addPublicationTemplateFeatures() .addSchedulerFeatures() diff --git a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/HistorizedDocumentRepositoryIT.java b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/HistorizedDocumentRepositoryIT.java index 6260ede4d8..74d4112c67 100644 --- a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/HistorizedDocumentRepositoryIT.java +++ b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/HistorizedDocumentRepositoryIT.java @@ -47,6 +47,7 @@ import org.silverpeas.core.util.DateUtil; import org.silverpeas.core.util.MimeTypes; import org.silverpeas.core.util.Pair; +import org.silverpeas.core.util.annotation.TimeMeasuring; import org.silverpeas.core.util.file.FileRepositoryManager; import org.silverpeas.core.jcr.JCRSession; diff --git a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/JcrContext.java b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/JcrContext.java index 83e17852f6..3911b8d246 100644 --- a/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/JcrContext.java +++ b/core-library/src/integration-test/java/org/silverpeas/core/contribution/attachment/repository/JcrContext.java @@ -34,30 +34,20 @@ import org.silverpeas.core.contribution.attachment.model.SimpleDocument; import org.silverpeas.core.contribution.attachment.model.SimpleDocumentPK; import org.silverpeas.core.index.indexing.IndexFileManager; -import org.silverpeas.core.jcr.util.SilverpeasJCRSchemaRegister; +import org.silverpeas.core.jcr.JCRSession; import org.silverpeas.core.util.Charsets; import org.silverpeas.core.util.ServiceProvider; import org.silverpeas.core.util.StringUtil; import org.silverpeas.core.util.file.FileRepositoryManager; -import org.silverpeas.core.jcr.JCRSession; -import javax.jcr.Binary; -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.Property; -import javax.jcr.RepositoryException; +import javax.jcr.*; +import javax.jcr.nodetype.NodeType; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; @@ -87,10 +77,12 @@ public void evaluate() throws Throwable { private void clearJcrRepository() throws RepositoryException { try (JCRSession session = JCRSession.openSystemSession()) { + System.out.println("CLEAR JCR REPOSITORY CONTENT..."); NodeIterator i = session.getRootNode().getNodes(); while(i.hasNext()) { Node node = i.nextNode(); - if (!"jcr:system".equals(node.getName())) { + if (node.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER)) { + System.out.println("REMOVE NODE " + node.getName()); node.remove(); } } diff --git a/core-library/src/integration-test/java/org/silverpeas/core/test/jcr/JcrIntegrationIT.java b/core-library/src/integration-test/java/org/silverpeas/core/test/jcr/JcrIntegrationIT.java index b7670575c0..d7470b4dc0 100644 --- a/core-library/src/integration-test/java/org/silverpeas/core/test/jcr/JcrIntegrationIT.java +++ b/core-library/src/integration-test/java/org/silverpeas/core/test/jcr/JcrIntegrationIT.java @@ -30,6 +30,7 @@ import org.silverpeas.core.contribution.attachment.process.SimpleDocumentDummyHandledFileConverter; import org.silverpeas.core.contribution.attachment.repository.JcrContext; import org.silverpeas.core.contribution.attachment.util.AttachmentSettings; +import org.silverpeas.core.jcr.JCRSession; import org.silverpeas.core.test.integration.rule.DbSetupRule; import org.silverpeas.core.test.integration.rule.MavenTargetDirectoryRule; import org.silverpeas.core.test.unit.extention.SettingBundleStub; diff --git a/core-library/src/integration-test/resources/org/silverpeas/core/admin/test-spaces_and_components-dataset.sql b/core-library/src/integration-test/resources/org/silverpeas/core/admin/test-spaces_and_components-dataset.sql index 5acdc69842..f03de88384 100644 --- a/core-library/src/integration-test/resources/org/silverpeas/core/admin/test-spaces_and_components-dataset.sql +++ b/core-library/src/integration-test/resources/org/silverpeas/core/admin/test-spaces_and_components-dataset.sql @@ -9,7 +9,10 @@ INSERT INTO st_domain (id, name, propFilename, className, authenticationServer, * users */ INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate) - VALUES (1, 0, '1', 'Administrateur', 'SilverAdmin', 'A', 'VALID', '2012-01-01 00:00:00.000'); + VALUES (0, 0, '0', 'Administrateur', 'SilverAdmin', 'A', 'VALID', '2012-01-01 00:00:00.000'); + +INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate) + VALUES (1, 0, '1', 'Toto', 'toto', 'U', 'VALID', '2012-01-01 00:00:00.000'); INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate) VALUES (2, 0, '2', 'SimpleUser', 'SimpleUser', 'U', 'VALID', '2012-01-01 00:00:00.000'); @@ -28,7 +31,8 @@ INSERT INTO st_group (id, domainId, specificId, name, state, stateSaveDate) /** * users in the default Silverpeas domain */ -INSERT INTO domainsp_user (id, lastName, login) VALUES (1, 'Administrateur', 'SilverAdmin'); +INSERT INTO domainsp_user (id, lastName, login) VALUES (0, 'Administrateur', 'SilverAdmin'); +INSERT INTO domainsp_user (id, lastName, login) VALUES (1, 'Toto', 'toto'); INSERT INTO domainsp_user (id, lastName, login) VALUES (2, 'SimpleUser', 'SimpleUser'); INSERT INTO domainsp_user (id, lastName, login) VALUES (3, 'Hetfield', 'Hetfield'); diff --git a/core-library/src/main/java/org/silverpeas/core/contribution/attachment/repository/DocumentRepository.java b/core-library/src/main/java/org/silverpeas/core/contribution/attachment/repository/DocumentRepository.java index fd79f69fa3..419af95d24 100644 --- a/core-library/src/main/java/org/silverpeas/core/contribution/attachment/repository/DocumentRepository.java +++ b/core-library/src/main/java/org/silverpeas/core/contribution/attachment/repository/DocumentRepository.java @@ -926,11 +926,11 @@ private NodeIterator getNodeIteratorByDateProperty(final Session session, final String slvPropertyDate, final Date date) throws RepositoryException { QueryManager manager = session.getWorkspace().getQueryManager(); QueryObjectModelFactory factory = manager.getQOMFactory(); - Calendar expiry = Calendar.getInstance(); - expiry.setTime(DateUtil.getBeginOfDay(date)); + Calendar calendarDate = Calendar.getInstance(); + calendarDate.setTime(DateUtil.getBeginOfDay(date)); Selector source = factory.selector(SLV_SIMPLE_DOCUMENT, SIMPLE_DOCUMENT_ALIAS); return getNodeIteratorByProperty(factory, source, slvPropertyDate, - session.getValueFactory().createValue(expiry)); + session.getValueFactory().createValue(calendarDate)); } private NodeIterator getNodeIteratorByProperty(final QueryObjectModelFactory factory, @@ -981,12 +981,12 @@ NodeIterator selectDocumentsRequiringUnlocking(Session session, Date expiryDate) Calendar expiry = Calendar.getInstance(); expiry.setTime(DateUtil.getBeginOfDay(expiryDate)); Selector source = factory.selector(SLV_SIMPLE_DOCUMENT, SIMPLE_DOCUMENT_ALIAS); - Comparison foreignIdComparison = getComparison(factory, SLV_PROPERTY_EXPIRY_DATE, + Comparison expiryDateComparison = getComparison(factory, SLV_PROPERTY_EXPIRY_DATE, QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN, session.getValueFactory().createValue(expiry)); Ordering order = factory.ascending( factory.propertyValue(SIMPLE_DOCUMENT_ALIAS, SLV_PROPERTY_ORDER)); - QueryObjectModel query = factory.createQuery(source, foreignIdComparison, new Ordering[]{order}, + QueryObjectModel query = factory.createQuery(source, expiryDateComparison, new Ordering[]{order}, null); QueryResult result = query.execute(); return result.getNodes();