diff --git a/README.md b/README.md
index 69461826..ffae59de 100644
--- a/README.md
+++ b/README.md
@@ -81,6 +81,7 @@ To build external URL, the server is expecting a `DOCS_BASE_URL` environment var
- `DATABASE_URL`: The jdbc connection string to be used by `hibernate`.
- `DATABASE_USER`: The user which should be used for the database connection.
- `DATABASE_PASSWORD`: The password to be used for the database connection.
+ - `DATABASE_POOL_SIZE`: The pool size to be used for the database connection.
- Language
- `DOCS_DEFAULT_LANGUAGE`: The language which will be used as default. Currently supported values are:
@@ -122,6 +123,7 @@ services:
DATABASE_URL: "jdbc:postgresql://teedy-db:5432/teedy"
DATABASE_USER: "teedy_db_user"
DATABASE_PASSWORD: "teedy_db_password"
+ DATABASE_POOL_SIZE: "10"
volumes:
- ./docs/data:/data
networks:
diff --git a/docs-core/pom.xml b/docs-core/pom.xml
index 4decd254..dd5d2c0f 100644
--- a/docs-core/pom.xml
+++ b/docs-core/pom.xml
@@ -8,7 +8,7 @@
1.12-SNAPSHOT
../pom.xml
-
+
4.0.0
docs-core
jar
@@ -17,10 +17,10 @@
- org.hibernate
- hibernate-core-jakarta
+ org.hibernate.orm
+ hibernate-core
-
+
joda-time
@@ -31,12 +31,12 @@
com.google.guava
guava
-
+
org.apache.commons
commons-compress
-
+
org.apache.commons
commons-lang3
@@ -46,7 +46,7 @@
org.apache.commons
commons-email
-
+
org.freemarker
freemarker
@@ -66,17 +66,17 @@
log4j
log4j
-
+
org.slf4j
slf4j-log4j12
-
+
org.slf4j
slf4j-api
-
+
org.slf4j
jcl-over-slf4j
@@ -86,17 +86,17 @@
at.favre.lib
bcrypt
-
+
org.apache.lucene
lucene-core
-
+
org.apache.lucene
lucene-analyzers-common
-
+
org.apache.lucene
lucene-queryparser
@@ -119,7 +119,12 @@
org.apache.directory.api
- api-all
+ api-ldap-client-api
+
+
+
+ org.apache.directory.api
+ api-ldap-codec-standalone
@@ -127,22 +132,22 @@
org.apache.lucene
lucene-backward-codecs
-
+
org.imgscalr
imgscalr-lib
-
+
org.apache.pdfbox
pdfbox
-
+
org.bouncycastle
bcprov-jdk15on
-
+
fr.opensagres.xdocreport
fr.opensagres.odfdom.converter.pdf
@@ -186,14 +191,14 @@
junit
test
-
+
com.h2database
h2
test
-
+
@@ -205,7 +210,7 @@
dev
-
+
@@ -221,7 +226,7 @@
prod
-
+
diff --git a/docs-core/src/main/java/com/sismics/docs/core/dao/DocumentDao.java b/docs-core/src/main/java/com/sismics/docs/core/dao/DocumentDao.java
index dd28032a..5a83c2ef 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/dao/DocumentDao.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/dao/DocumentDao.java
@@ -87,7 +87,7 @@ public class DocumentDao {
}
EntityManager em = ThreadLocalContext.get().getEntityManager();
- StringBuilder sb = new StringBuilder("select distinct d.DOC_ID_C, d.DOC_TITLE_C, d.DOC_DESCRIPTION_C, d.DOC_SUBJECT_C, d.DOC_IDENTIFIER_C, d.DOC_PUBLISHER_C, d.DOC_FORMAT_C, d.DOC_SOURCE_C, d.DOC_TYPE_C, d.DOC_COVERAGE_C, d.DOC_RIGHTS_C, d.DOC_CREATEDATE_D, d.DOC_UPDATEDATE_D, d.DOC_LANGUAGE_C, ");
+ StringBuilder sb = new StringBuilder("select distinct d.DOC_ID_C, d.DOC_TITLE_C, d.DOC_DESCRIPTION_C, d.DOC_SUBJECT_C, d.DOC_IDENTIFIER_C, d.DOC_PUBLISHER_C, d.DOC_FORMAT_C, d.DOC_SOURCE_C, d.DOC_TYPE_C, d.DOC_COVERAGE_C, d.DOC_RIGHTS_C, d.DOC_CREATEDATE_D, d.DOC_UPDATEDATE_D, d.DOC_LANGUAGE_C, d.DOC_IDFILE_C,");
sb.append(" (select count(s.SHA_ID_C) from T_SHARE s, T_ACL ac where ac.ACL_SOURCEID_C = d.DOC_ID_C and ac.ACL_TARGETID_C = s.SHA_ID_C and ac.ACL_DELETEDATE_D is null and s.SHA_DELETEDATE_D is null) shareCount, ");
sb.append(" (select count(f.FIL_ID_C) from T_FILE f where f.FIL_DELETEDATE_D is null and f.FIL_IDDOC_C = d.DOC_ID_C) fileCount, ");
sb.append(" u.USE_USERNAME_C ");
@@ -121,6 +121,7 @@ public class DocumentDao {
documentDto.setCreateTimestamp(((Timestamp) o[i++]).getTime());
documentDto.setUpdateTimestamp(((Timestamp) o[i++]).getTime());
documentDto.setLanguage((String) o[i++]);
+ documentDto.setFileId((String) o[i++]);
documentDto.setShared(((Number) o[i++]).intValue() > 0);
documentDto.setFileCount(((Number) o[i++]).intValue());
documentDto.setCreator((String) o[i]);
diff --git a/docs-core/src/main/java/com/sismics/docs/core/dao/criteria/DocumentCriteria.java b/docs-core/src/main/java/com/sismics/docs/core/dao/criteria/DocumentCriteria.java
index 8d69f381..cbd62383 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/dao/criteria/DocumentCriteria.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/dao/criteria/DocumentCriteria.java
@@ -19,7 +19,7 @@ public class DocumentCriteria {
/**
* Search query.
*/
- private String search;
+ private String simpleSearch;
/**
* Full content search query.
@@ -96,12 +96,12 @@ public class DocumentCriteria {
this.targetIdList = targetIdList;
}
- public String getSearch() {
- return search;
+ public String getSimpleSearch() {
+ return simpleSearch;
}
- public void setSearch(String search) {
- this.search = search;
+ public void setSimpleSearch(String search) {
+ this.simpleSearch = search;
}
public String getFullSearch() {
diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/authentication/LdapAuthenticationHandler.java b/docs-core/src/main/java/com/sismics/docs/core/util/authentication/LdapAuthenticationHandler.java
index 65d0afc8..b0d7550f 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/util/authentication/LdapAuthenticationHandler.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/util/authentication/LdapAuthenticationHandler.java
@@ -62,6 +62,7 @@ public class LdapAuthenticationHandler implements AuthenticationHandler {
if (ldapConnection == null) {
return null;
}
+ ldapConnection.bind();
EntryCursor cursor = ldapConnection.search(ConfigUtil.getConfigStringValue(ConfigType.LDAP_BASE_DN),
ConfigUtil.getConfigStringValue(ConfigType.LDAP_FILTER).replace("USERNAME", username), SearchScope.SUBTREE);
diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
index 27a33547..9fa0ad66 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
@@ -276,9 +276,8 @@ public class LuceneIndexingHandler implements IndexingHandler {
criteriaList.add("(a.ACL_ID_C is not null or a2.ACL_ID_C is not null)");
}
parameterMap.put("targetIdList", criteria.getTargetIdList());
-
- if (!Strings.isNullOrEmpty(criteria.getSearch()) || !Strings.isNullOrEmpty(criteria.getFullSearch())) {
- documentSearchMap = search(criteria.getSearch(), criteria.getFullSearch());
+ if (!Strings.isNullOrEmpty(criteria.getSimpleSearch()) || !Strings.isNullOrEmpty(criteria.getFullSearch())) {
+ documentSearchMap = search(criteria.getSimpleSearch(), criteria.getFullSearch());
if (documentSearchMap.isEmpty()) {
// If the search doesn't find any document, the request should return nothing
documentSearchMap.put(UUID.randomUUID().toString(), null);
@@ -413,14 +412,14 @@ public class LuceneIndexingHandler implements IndexingHandler {
/**
* Fulltext search in files and documents.
*
- * @param searchQuery Search query on metadatas
+ * @param simpleSearchQuery Search query on metadatas
* @param fullSearchQuery Search query on all fields
* @return Map of document IDs as key and highlight as value
* @throws Exception e
*/
- private Map search(String searchQuery, String fullSearchQuery) throws Exception {
+ private Map search(String simpleSearchQuery, String fullSearchQuery) throws Exception {
// The fulltext query searches in all fields
- searchQuery = searchQuery + " " + fullSearchQuery;
+ String searchQuery = simpleSearchQuery + " " + fullSearchQuery;
// Build search query
Analyzer analyzer = new StandardAnalyzer();
diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/jpa/PaginatedLists.java b/docs-core/src/main/java/com/sismics/docs/core/util/jpa/PaginatedLists.java
index 08748609..2a34d51a 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/util/jpa/PaginatedLists.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/util/jpa/PaginatedLists.java
@@ -68,7 +68,7 @@ public class PaginatedLists {
}
/**
- * Executes a query and returns the data of the currunt page.
+ * Executes a query and returns the data of the current page.
*
* @param paginatedList Paginated list object containing parameters, and into which results are added by side effects
* @param queryParam Query parameters
@@ -82,18 +82,6 @@ public class PaginatedLists {
q.setMaxResults(paginatedList.getLimit());
return q.getResultList();
}
-
- /**
- * Executes a paginated request with 2 native queries (one to count the number of results, and one to return the page).
- *
- * @param paginatedList Paginated list object containing parameters, and into which results are added by side effects
- * @param queryParam Query parameters
- * @return List of results
- */
- public static List