diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/HibernatePersistentObjectDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/HibernatePersistentObjectDAO.java index 03fbe4cef..ace6ec92f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/HibernatePersistentObjectDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/HibernatePersistentObjectDAO.java @@ -15,6 +15,7 @@ import javax.sql.DataSource; +import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -24,6 +25,7 @@ import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import com.logicaldoc.core.metadata.Attribute; @@ -148,36 +150,6 @@ public List findByWhere(String where, String order, Integer max) throws Persi return findByWhere(where, (Map) null, order, max); } - @Override - public List findByWhere(String where, Object[] values, String order, Integer max) throws PersistenceException { - List coll = new ArrayList<>(); - try { - String sorting = StringUtils.isNotEmpty(order) && !order.toLowerCase().contains(ORDER_BY) - ? ORDER_BY + " " + order - : order; - String query = "from " + entityClass.getCanonicalName() + DEFAULT_WHERE_PREAMBLE - + (StringUtils.isNotEmpty(where) ? AND + where + ") " : " ") - + (StringUtils.isNotEmpty(sorting) ? sorting : " "); - coll = findByObjectQuery(query, values, max); - return coll; - } catch (Exception e) { - throw new PersistenceException(e); - } - } - - @Override - public List findByObjectQuery(String query, Object[] values, Integer max) throws PersistenceException { - List coll = new ArrayList<>(); - try { - logQuery(query); - Query queryObject = prepareQueryForObject(query, values, max); - coll = queryObject.list(); - return coll; - } catch (Exception e) { - throw new PersistenceException(e); - } - } - @Override public List findByWhere(String where, Map parameters, String order, Integer max) throws PersistenceException { @@ -214,20 +186,6 @@ protected void logQuery(String query) { log.debug("Execute query: {}", query); } - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public List findByQuery(String query, Object[] values, Integer max) throws PersistenceException { - List coll = new ArrayList<>(); - try { - logQuery(query); - Query queryObject = prepareQuery(query, values, max); - coll = queryObject.list(); - return coll; - } catch (Exception e) { - throw new PersistenceException(e); - } - } - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public List findByQuery(String query, Map parameters, Integer max) throws PersistenceException { @@ -439,7 +397,7 @@ private void applyParamsAndLimit(Object[] values, Integer max, @SuppressWarnings */ protected Query prepareQuery(String expression, Map values, Integer max) { Query queryObject = sessionFactory.getCurrentSession().createQuery(expression, Object[].class); - applyParamsAndLimit(values, max, queryObject); + applyParametersAndLimit(values, max, queryObject); return queryObject; } @@ -456,7 +414,7 @@ protected Query prepareQuery(String expression, Map va */ protected Query prepareQueryForLong(String expression, Map values, Integer max) { Query queryObject = sessionFactory.getCurrentSession().createQuery(expression, Long.class); - applyParamsAndLimit(values, max, queryObject); + applyParametersAndLimit(values, max, queryObject); return queryObject; } @@ -473,7 +431,7 @@ protected Query prepareQueryForLong(String expression, Map */ protected Query prepareQueryForObject(String expression, Map values, Integer max) { Query queryObject = sessionFactory.getCurrentSession().createQuery(expression, entityClass); - applyParamsAndLimit(values, max, queryObject); + applyParametersAndLimit(values, max, queryObject); return queryObject; } @@ -490,14 +448,14 @@ protected Query prepareQueryForObject(String expression, Map @SuppressWarnings("rawtypes") protected Query prepareQueryForUpdate(String expression, Map values, Integer max) { Query queryObject = sessionFactory.getCurrentSession().createQuery(expression); - applyParamsAndLimit(values, max, queryObject); + applyParametersAndLimit(values, max, queryObject); return queryObject; } - private void applyParamsAndLimit(Map values, Integer max, @SuppressWarnings("rawtypes") + private void applyParametersAndLimit(Map parameters, Integer max, @SuppressWarnings("rawtypes") Query queryObject) { - if (values != null) - for (Map.Entry entry : values.entrySet()) + if (parameters != null) + for (Map.Entry entry : parameters.entrySet()) queryObject.setParameter(entry.getKey(), entry.getValue()); if (max != null && max > 0) @@ -565,71 +523,106 @@ else if (srcQuery.startsWith("select")) return outQuery; } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public List query(String sql, Object[] args, RowMapper rowMapper, Integer maxRows) throws PersistenceException { - List list = new ArrayList(); + @SuppressWarnings({ "rawtypes", "unchecked" }) + public List query(String sql, RowMapper rowMapper, Integer maxRows) throws PersistenceException { try { DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); - JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); if (maxRows != null) jdbcTemplate.setMaxRows(maxRows); - if (args != null) - list = jdbcTemplate.query(insertTopClause(sql, maxRows), args, rowMapper); - else - list = jdbcTemplate.query(insertTopClause(sql, maxRows), rowMapper); - return list; + return jdbcTemplate.query(insertTopClause(sql, maxRows), rowMapper); } catch (Exception e) { throw new PersistenceException(e); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public List queryForList(String sql, Object[] args, Class elementType, Integer maxRows) + @SuppressWarnings({ "rawtypes", "unchecked" }) + public List query(String sql, Map parameters, RowMapper rowMapper, Integer maxRows) throws PersistenceException { + if (MapUtils.isEmpty(parameters)) + return query(sql, rowMapper, maxRows); + try { + DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); + NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + return jdbcTemplate.query(insertTopClause(sql, maxRows), parameters, rowMapper); + } catch (Exception e) { + throw new PersistenceException(e); + } + + } - List list = new ArrayList(); + @SuppressWarnings({ "rawtypes" }) + @Override + public List queryForList(String sql, Class elementType) throws PersistenceException { + return queryForList(sql, elementType, null); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public List queryForList(String sql, Class elementType, Integer maxRows) throws PersistenceException { try { DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); if (maxRows != null) jdbcTemplate.setMaxRows(maxRows); - if (args != null) - list = jdbcTemplate.queryForList(insertTopClause(sql, maxRows), args, elementType); - else - list = jdbcTemplate.queryForList(insertTopClause(sql, maxRows), elementType); - return list; + return jdbcTemplate.queryForList(insertTopClause(sql, maxRows), elementType); } catch (Exception e) { log.error(e.getMessage(), e); throw new PersistenceException(e); } } + @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public SqlRowSet queryForRowSet(String sql, Object[] args, Integer maxRows) throws PersistenceException { + public List queryForList(String sql, Map prameters, Class elementType, Integer maxRows) + throws PersistenceException { + + if (MapUtils.isEmpty(prameters)) + return queryForList(sql, elementType, maxRows); + + try { + DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); + NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + return jdbcTemplate.queryForList(insertTopClause(sql, maxRows), prameters, elementType); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new PersistenceException(e); + } + } + + @Override + public SqlRowSet queryForRowSet(String sql, Integer maxRows) throws PersistenceException { try { SqlRowSet rs = null; DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); if (maxRows != null) jdbcTemplate.setMaxRows(maxRows); - if (args != null) - rs = jdbcTemplate.queryForRowSet(insertTopClause(sql, maxRows), args); - else - rs = jdbcTemplate.queryForRowSet(insertTopClause(sql, maxRows)); + rs = jdbcTemplate.queryForRowSet(insertTopClause(sql, maxRows)); return new SqlRowSetWrapper(rs); } catch (Exception e) { throw new PersistenceException(e); } } - @SuppressWarnings("rawtypes") @Override - public List queryForList(String sql, Class elementType) throws PersistenceException { - return queryForList(sql, null, elementType, null); + public SqlRowSet queryForRowSet(String sql, Map parameters, Integer maxRows) + throws PersistenceException { + if (MapUtils.isEmpty(parameters)) + return queryForRowSet(sql, maxRows); + + try { + SqlRowSet rs = null; + DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); + NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + rs = jdbcTemplate.queryForRowSet(insertTopClause(sql, maxRows), parameters); + return new SqlRowSetWrapper(rs); + } catch (Exception e) { + throw new PersistenceException(e); + } } @Override @@ -651,11 +644,14 @@ public long queryForLong(String sql) throws PersistenceException { } @Override - public long queryForLong(String sql, Object... args) throws PersistenceException { + public long queryForLong(String sql, Map parameters) throws PersistenceException { + if (MapUtils.isEmpty(parameters)) + return queryForLong(sql); + try { DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); - JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); - return jdbcTemplate.queryForObject(sql, Long.class, args); + NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + return jdbcTemplate.queryForObject(sql, parameters, Long.class); } catch (NullPointerException | EmptyResultDataAccessException e) { return 0L; } catch (Exception e) { @@ -748,14 +744,17 @@ public int bulkUpdate(String expression, Map parameters) throws } @Override - public int jdbcUpdate(String statement, Object... args) throws PersistenceException { + public int jdbcUpdate(String statement, Map parameters) throws PersistenceException { if (!checkStoringAspect()) return 0; + if (MapUtils.isEmpty(parameters)) + return jdbcUpdate(statement); + DataSource dataSource = (DataSource) Context.get().getBean(DATA_SOURCE); try { - JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); - return jdbcTemplate.update(statement, args); + NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + return jdbcTemplate.update(statement, parameters); } catch (Exception e) { throw new PersistenceException(e); } @@ -822,8 +821,12 @@ protected int cleanOldRecords(int ttl, String tableName, String dateColumn) thro cal.add(Calendar.DAY_OF_MONTH, -ttl); Date ldDate = cal.getTime(); - updates = jdbcUpdate("UPDATE " + tableName + " SET ld_deleted = 1, ld_lastmodified = ?" - + " WHERE ld_deleted = 0 AND " + dateColumn + " < ?", today, ldDate); + Map params = new HashMap<>(); + params.put("today", today); + params.put("ldDate", ldDate); + + updates = jdbcUpdate("UPDATE " + tableName + " SET ld_deleted = 1, ld_lastmodified = :today" + + " WHERE ld_deleted = 0 AND " + dateColumn + " < :ldDate", params); log.info("Removed {} old rows from table {}: ", updates, tableName); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/PersistentObjectDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/PersistentObjectDAO.java index f94272e29..95a8a0df9 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/PersistentObjectDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/PersistentObjectDAO.java @@ -99,24 +99,6 @@ public interface PersistentObjectDAO { */ public List findByWhere(String where, String order, Integer max) throws PersistenceException; - /** - * Finds all entities by the given expression. Use {@value #ENTITY} alias to - * reference attributes in the where expression. - * - * @param where The where clause expression - * @param values Parameters used in the where expression - * @param order The order clause expression - * @param max Maximum results number (optional) - * - * @return The list of marching entities - * - * @throws PersistenceException raised in case of errors in the database - * - * @deprecated - */ - @Deprecated(since = "8.8") - public List findByWhere(String where, Object[] values, String order, Integer max) throws PersistenceException; - /** * Finds all entities by the given expression. Use {@value #ENTITY} alias to * reference attributes in the where expression. @@ -133,21 +115,6 @@ public interface PersistentObjectDAO { public List findByWhere(String where, Map parameters, String order, Integer max) throws PersistenceException; - /** - * Finds all entities by the given object query. - * - * @param query The query expression (for positional parameters, please use - * JPA-style: ?1, ?2 ...) - * @param values Parameters used in the where expression - * @param max Maximum results number (optional) - * - * @return The list of matching entities - * - * @throws PersistenceException raised in case of errors in the database - */ - @Deprecated(since = "8.8") - public List findByObjectQuery(String query, Object[] values, Integer max) throws PersistenceException; - /** * Finds all entities by the given object query. * @@ -162,23 +129,6 @@ public List findByWhere(String where, Map parameters, String public List findByObjectQuery(String query, Map parameters, Integer max) throws PersistenceException; - /** - * Find everything you want from the DB using the ORM query language - * - * @param query The query to execute (for positional parameters, please use - * JPA-style: ?1, ?2 ...) - * @param values Array of paramaters - * @param max Maximum results number (optional) - * - * @return Query result - * - * @throws PersistenceException raised in case of errors in the database - * - * @deprecated - */ - @Deprecated(since = "8.8") - public List findByQuery(String query, Object[] values, Integer max) throws PersistenceException; - /** * Find everything you want from the DB using the ORM query language * @@ -211,8 +161,8 @@ public List findByQuery(String query, Map parameters, In * Finds all entities ids by the given expression. Use {@value #ENTITY} * alias to reference attributes in the where expression. * - * @param where The where clause expression (for positional parameters, - * please use JPA-style: ?1, ?2 ...) + * @param where The where clause expression (for parameters, please use + * JPA-style: :paramA, :paramB ...) * @param values Parameters used in the where expression * @param parameters The map of the parameters * @param order The order clause expression @@ -238,10 +188,6 @@ public List findIdsByWhere(String where, Map parameters, S * RowMapper. * * @param sql SQL query to execute - * @param args arguments to bind to the query (leaving it to the - * PreparedStatement to guess the corresponding SQL type); may also - * contain SqlParameterValue objects which indicate not only the - * argument value but also the SQL type and optionally the scale * @param maxRows the new max rows limit; null means there is no limit * @param rowMapper object that will map one object per row * @@ -250,24 +196,57 @@ public List findIdsByWhere(String where, Map parameters, S * @throws PersistenceException raised in case of errors in the database */ @SuppressWarnings("rawtypes") - public List query(String sql, Object[] args, RowMapper rowMapper, Integer maxRows) throws PersistenceException; + public List query(String sql, RowMapper rowMapper, Integer maxRows) throws PersistenceException; + + /** + * Query given SQL to create a prepared statement from SQL and a list of + * arguments to bind to the query, mapping each row to a Java object via a + * RowMapper. + * + * @param sql SQL query to execute (for parameters please use JPA-style: + * :paramA, :paramB ...) + * @param parameters Parameters used in the where expression (map + * name-value) + * @param maxRows the new max rows limit; null means there is no limit + * @param rowMapper object that will map one object per row + * + * @return the result List, containing mapped objects + * + * @throws PersistenceException raised in case of errors in the database + */ + @SuppressWarnings("rawtypes") + public List query(String sql, Map parameters, RowMapper rowMapper, Integer maxRows) + throws PersistenceException; + + /** + * Query given SQL to create a prepared statement from SQL and a list of + * arguments to bind to the query, returns a navigable RowSet + * + * @param sql SQL query to execute (for parameters please use JPA-style: + * :paramA, :paramB ...) + * @param parameters Parameters used in the where expression (map + * name-value) + * @param maxRows the new max rows limit; null means there is no limit + * + * @return the result row set + * + * @throws PersistenceException raised in case of errors in the database + */ + public SqlRowSet queryForRowSet(String sql, Map parameters, Integer maxRows) + throws PersistenceException; /** * Query given SQL to create a prepared statement from SQL and a list of * arguments to bind to the query, returns a navigable RowSet * * @param sql SQL query to execute - * @param args arguments to bind to the query (leaving it to the - * PreparedStatement to guess the corresponding SQL type); may also - * contain SqlParameterValue objects which indicate not only the - * argument value but also the SQL type and optionally the scale * @param maxRows the new max rows limit; null means there is no limit * * @return the result row set * * @throws PersistenceException raised in case of errors in the database */ - public SqlRowSet queryForRowSet(String sql, Object[] args, Integer maxRows) throws PersistenceException; + public SqlRowSet queryForRowSet(String sql, Integer maxRows) throws PersistenceException; /** * Query given SQL to create a prepared statement from SQL and a list of @@ -275,13 +254,12 @@ public List findIdsByWhere(String where, Map parameters, S * be mapped to a List (one entry for each row) of result objects, each of * them matching the specified element type. * - * @param sql SQL query to execute + * @param sql SQL query to execute (for parameters please use JPA-style: + * :paramA, :paramB ...) + * @param parameters Parameters used in the where expression (map + * name-value) * @param elementType the required type of element in the result list (for * example, Integer.class) - * @param args arguments to bind to the query (leaving it to the - * PreparedStatement to guess the corresponding SQL type); may also - * contain SqlParameterValue objects which indicate not only the - * argument value but also the SQL type and optionally the scale * @param maxRows maximum number of returned records * * @return a List of objects that match the specified element type @@ -289,7 +267,8 @@ public List findIdsByWhere(String where, Map parameters, S * @throws PersistenceException raised in case of errors in the database */ @SuppressWarnings("rawtypes") - public List queryForList(String sql, Object[] args, Class elementType, Integer maxRows) throws PersistenceException; + public List queryForList(String sql, Map parameters, Class elementType, Integer maxRows) + throws PersistenceException; /** * Execute a query for a result list, given static SQL. Uses a JDBC @@ -302,6 +281,24 @@ public List findIdsByWhere(String where, Map parameters, S * @param sql SQL query to execute * @param elementType the required type of element in the result list (for * example, Integer.class) + * @param maxRows maximum number of returned records + * + * @return a List of objects that match the specified element type + * + * @throws PersistenceException raised in case of errors in the database + */ + @SuppressWarnings("rawtypes") + public List queryForList(String sql, Class elementType, Integer maxRows) throws PersistenceException; + + /** + * Query given SQL to create a prepared statement from SQL and a list of + * arguments to bind to the query, expecting a result list. The results will + * be mapped to a List (one entry for each row) of result objects, each of + * them matching the specified element type. + * + * @param sql SQL query to execute + * @param elementType the required type of element in the result list (for + * example, Integer.class) * * @return a List of objects that match the specified element type * @@ -350,17 +347,16 @@ public List findIdsByWhere(String where, Map parameters, S * with a known outcome. The query is expected to be a single row/single * column query that results in a long value. * - * @param statement SQL query to execute - * @param args arguments to bind to the query (leaving it to the - * PreparedStatement to guess the corresponding SQL type); may also - * contain SqlParameterValue objects which indicate not only the - * argument value but also the SQL type and optionally the scale + * @param sql SQL query to execute (for parameters please use JPA-style: + * :paramA, :paramB ...) + * @param parameters Parameters used in the where expression (map + * name-value) * * @return the long value, or 0 in case of SQL NULL * * @throws PersistenceException raised in case of errors in the database */ - public long queryForLong(String statement, Object... args) throws PersistenceException; + public long queryForLong(String sql, Map parameters) throws PersistenceException; /** * Execute a query that results in an string value, given static SQL. Uses a @@ -460,17 +456,16 @@ public Object queryForObject(String sql, @SuppressWarnings("rawtypes") * Issue a single SQL update operation (such as an insert, update or delete * statement) via a prepared statement, binding the given arguments * - * @param statement SQL containing bind parameters - * @param args arguments to bind to the query (leaving it to the - * PreparedStatement to guess the corresponding SQL type); may also - * contain SqlParameterValue objects which indicate not only the - * argument value but also the SQL type and optionally the scale + * @param statement SQL statement to execute (for parameters please use + * JPA-style: :paramA, :paramB ...) + * @param parameters Parameters used in the where expression (map + * name-value) * * @return the number of rows affected * * @throws PersistenceException raised in case of errors in the database */ - public int jdbcUpdate(String statement, Object... args) throws PersistenceException; + public int jdbcUpdate(String statement, Map parameters) throws PersistenceException; /** * Get the DBMS name currently connected(possible values are: mysql, diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/SearchTool.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/SearchTool.java index b5c1a0d38..37641cf07 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/SearchTool.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/SearchTool.java @@ -149,7 +149,7 @@ public List search(long tenantId, String expression, List filters, DocumentDAO dao = (DocumentDAO) Context.get().getBean(DocumentDAO.class); try { - dao.query(richQuery.toString(), null, new HitMapper(hitsMap), null); + dao.query(richQuery.toString(), new HitMapper(hitsMap), null); } catch (Exception e) { log.error("Cannot enrich the hits", e); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/HibernateSystemMessageDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/HibernateSystemMessageDAO.java index 7e1248b4e..7841fa0dd 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/HibernateSystemMessageDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/HibernateSystemMessageDAO.java @@ -74,7 +74,7 @@ public List findByRecipient(String recipient, int type, Integer r sql = sql + " order by ld_sentdate desc"; try { - return query(sql, null, new SystemMessageMapper(), null); + return query(sql, new SystemMessageMapper(), null); } catch (PersistenceException e) { log.error(e.getMessage(), e); return new ArrayList<>(); @@ -150,7 +150,7 @@ public List findByMode(String mode) { + SqlUtil.doubleQuotes(mode) + "') order by ld_sentdate desc"; try { - return query(sql, null, new SystemMessageMapper(), null); + return query(sql, new SystemMessageMapper(), null); } catch (PersistenceException e) { log.error(e.getMessage(), e); return new ArrayList<>(); @@ -164,7 +164,7 @@ public List findByType(int type) { + type + ") order by ld_sentdate desc"; try { - return query(sql, null, new SystemMessageMapper(), null); + return query(sql, new SystemMessageMapper(), null); } catch (PersistenceException e) { log.error(e.getMessage(), e); return new ArrayList<>(); @@ -190,7 +190,7 @@ public List findMessagesToBeSent(int type, int maxTrial) { sql = sql + " order by ld_sentdate desc"; try { - return query(sql, null, new SystemMessageMapper(), null); + return query(sql, new SystemMessageMapper(), null); } catch (PersistenceException e) { log.error(e.getMessage(), e); return new ArrayList<>(); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/dashlet/DashletContent.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/dashlet/DashletContent.java index ff1d93588..d4e855aea 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/dashlet/DashletContent.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/dashlet/DashletContent.java @@ -284,7 +284,7 @@ private void retrieveExtendedAttributes(Locale locale, List rec qry.append(")"); DocumentDAO dao = (DocumentDAO) Context.get().getBean(DocumentDAO.class); - dao.query(qry.toString(), null, new EntendedAttributesRowMapper(locale, extValues), null); + dao.query(qry.toString(), new EntendedAttributesRowMapper(locale, extValues), null); } private List filterUniqueDocumentEvents(Dashlet dashlet, List records) { @@ -386,7 +386,7 @@ private void handleDocument(Locale locale, Dashlet dashlet, Map qry.append(") and ld_name in "); qry.append(attrs.toString().replace("[", "('").replace("]", "')").replace(",", "','").replace(" ", "")); - dao.query(qry.toString(), null, new EntendedAttributesRowMapper(locale, extValues), null); + dao.query(qry.toString(), new EntendedAttributesRowMapper(locale, extValues), null); } writer.write(LIST_TAG); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateDocumentDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateDocumentDAO.java index 5e98aac2e..57d4f5f04 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateDocumentDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateDocumentDAO.java @@ -239,17 +239,17 @@ public List findByLockUserAndStatus(Long userId, Integer status) { sb.append(" and ld_status=" + status); try { - return query(sb.toString(), null, (resultSet, col) -> { - Document doc = new Document(); - doc.setId(resultSet.getLong(1)); - Folder folder = new Folder(); - folder.setId(resultSet.getLong(2)); - doc.setFolder(folder); - doc.setVersion(resultSet.getString(3)); - doc.setFileVersion(resultSet.getString(4)); - doc.setLastModified(resultSet.getTimestamp(5)); - doc.setFileName(resultSet.getString(6)); - return doc; + return query(sb.toString(), (resultSet, col) -> { + Document doc = new Document(); + doc.setId(resultSet.getLong(1)); + Folder folder = new Folder(); + folder.setId(resultSet.getLong(2)); + doc.setFolder(folder); + doc.setVersion(resultSet.getString(3)); + doc.setFileVersion(resultSet.getString(4)); + doc.setLastModified(resultSet.getTimestamp(5)); + doc.setFileName(resultSet.getString(6)); + return doc; }, null); } catch (PersistenceException e) { log.error(e.getMessage(), e); @@ -525,7 +525,7 @@ private void setUniqueFilename(Document doc) { // Execute the query to populate the sets try { - SqlRowSet rs = queryForRowSet(query.toString(), null, null); + SqlRowSet rs = queryForRowSet(query.toString(), null); if (rs != null) while (rs.next()) { String file = rs.getString(1); @@ -556,8 +556,13 @@ public void updateDigest(Document doc) throws PersistenceException { evict(doc); // Update the versions also - jdbcUpdate("update ld_version set ld_digest=? where ld_documentid=? and ld_fileversion=?", doc.getDigest(), - doc.getId(), doc.getFileVersion()); + Map params = new HashMap<>(); + params.put("fileVersion", doc.getFileVersion()); + params.put("digest", doc.getDigest()); + params.put("docId", doc.getId()); + jdbcUpdate( + "update ld_version set ld_digest = :digest where ld_documentid = :docId and ld_fileversion = :fileVersion", + params); } } @@ -603,7 +608,7 @@ public Map findTags(String firstLetter, Long tenantId) throws Pers if (tenantId != null) query.append(AND_LD_TENANTID + tenantId); - query(query.toString(), null, new RowMapper() { + query(query.toString(), new RowMapper() { @Override public Object mapRow(ResultSet rs, int rowNumber) throws SQLException { @@ -626,12 +631,13 @@ public List findAllTags(String firstLetter, Long tenantId) throws Persis sb.append(AND_LD_TENANTID + tenantId); } - List parameters = new ArrayList<>(); + Map params = new HashMap(); if (firstLetter != null) { - sb.append(" and lower(ld_tag) like ? "); - parameters.add(firstLetter.toLowerCase() + "%"); + sb.append(" and lower(ld_tag) like :tagLike "); + params.put("tagLike", firstLetter.toLowerCase() + "%"); } - return queryForList(sb.toString(), parameters.toArray(new Object[0]), String.class, null); + + return queryForList(sb.toString(), params, String.class, null); } @SuppressWarnings("unchecked") @@ -769,14 +775,17 @@ public List findLinkedDocuments(long docId, String linkType, Integer d StringBuilder query = new StringBuilder(""); if (direction == null) query.append( - "select distinct(ld_docid2) from ld_link where ld_deleted=0 and (ld_docid1=?) UNION select distinct(ld_docid1) from ld_link where ld_deleted=0 and (ld_docid2=?)"); + "select distinct(ld_docid2) from ld_link where ld_deleted=0 and (ld_docid1 = :docId) UNION select distinct(ld_docid1) from ld_link where ld_deleted=0 and (ld_docid2 = :docId)"); else if (direction.intValue() == 1) - query.append("select distinct(ld_docid2) from ld_link where ld_deleted=0 and (ld_docid1=?)"); + query.append("select distinct(ld_docid2) from ld_link where ld_deleted=0 and (ld_docid1 = :docId)"); else if (direction.intValue() == 2) - query.append("select distinct(ld_docid1) from ld_link where ld_deleted=0 and (ld_docid2=?)"); + query.append("select distinct(ld_docid1) from ld_link where ld_deleted=0 and (ld_docid2 = :docId)"); + + Map params = new HashMap(); + params.put("docId", docId); + @SuppressWarnings("unchecked") - List ids = queryForList(query.toString(), - linkType != null ? new Object[] { docId } : new Object[] { docId, docId }, Long.class, null); + List ids = queryForList(query.toString(), params, Long.class, null); List coll = findByWhere( ENTITY + ".id in (" + ids.stream().map(id -> id.toString()).collect(Collectors.joining(",")) + ") and not " + ENTITY + STATUS + AbstractDocument.DOC_ARCHIVED, @@ -841,7 +850,7 @@ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { } }; - return query(query, new Object[] {}, docMapper, null); + return query(query, docMapper, null); } @Override @@ -849,14 +858,14 @@ public long computeTotalSize(Long tenantId, Long userId, boolean computeDeleted) // we do not count the aliases long sizeDocs = queryForLong("SELECT SUM(ld_filesize) from ld_document where ld_docref is null " + (computeDeleted ? "" : " and ld_deleted=0 ") + (userId != null ? " and ld_publisherid=" + userId : "") - + (tenantId !=null ? AND_LD_TENANTID + tenantId : "")); + + (tenantId != null ? AND_LD_TENANTID + tenantId : "")); long sizeVersions = 0; sizeVersions = queryForLong("select SUM(V.ld_filesize) from ld_version V where V.ld_version = V.ld_fileversion" + (computeDeleted ? "" : " and V.ld_deleted=0 ") + (userId != null ? " and V.ld_publisherid=" + userId : "") - + (tenantId !=null ? " and V.ld_tenantid=" + tenantId : "") + + (tenantId != null ? " and V.ld_tenantid=" + tenantId : "") + " and not exists (select D.ld_id from ld_document D" + " where D.ld_id=V.ld_documentid " + " and D.ld_fileversion=V.ld_fileversion)"); @@ -1028,7 +1037,7 @@ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { } }; - return query(query, null, docMapper, maxHits); + return query(query, docMapper, maxHits); } public void setConfig(ContextProperties config) { @@ -1083,13 +1092,14 @@ public Collection findPublishedIds(Collection folderIds) throws Pers query.append(" ) "); } query.append(" and ld_published = 1 "); - query.append(" and ld_startpublishing <= ? "); - query.append(" and ( ld_stoppublishing is null or ld_stoppublishing > ? )"); + query.append(" and ld_startpublishing <= :now "); + query.append(" and ( ld_stoppublishing is null or ld_stoppublishing > :now )"); - Date now = new Date(); + Map params = new HashMap(); + params.put("now", new Date()); @SuppressWarnings("unchecked") - Collection buf = queryForList(query.toString(), new Object[] { now, now }, Long.class, null); + Collection buf = queryForList(query.toString(), params, Long.class, null); Set ids = new HashSet<>(); for (Long id : buf) { if (!ids.contains(id)) @@ -1205,10 +1215,14 @@ public void updateCountUniqueTags() throws PersistenceException { // deleted documents for (String tag : uniqueTags) { try { + Map params = new HashMap<>(); + params.put("tag", tag); + params.put("tenantId", tenantId); + jdbcUpdate( - "update ld_uniquetag set ld_count = (select count(T.ld_tag) from ld_tag T, ld_document D where T.ld_tag = ? and T.ld_tenantid = ? " - + " and T.ld_docid = D.ld_id and D.ld_deleted=0 ) where ld_tag = ? and ld_tenantid = ?", - tag, tenantId, tag, tenantId); + "update ld_uniquetag set ld_count = (select count(T.ld_tag) from ld_tag T, ld_document D where T.ld_tag = :tag and T.ld_tenantid = :tenantId " + + " and T.ld_docid = D.ld_id and D.ld_deleted=0 ) where ld_tag = :tag and ld_tenantid = :tenantId", + params); } catch (PersistenceException e) { log.warn(e.getMessage(), e); } @@ -1223,7 +1237,7 @@ public List getTagCloud(long tenantId, int maxTags) throws Persistence List list = gendao.query( "select ld_tag, ld_count from ld_uniquetag where ld_tenantid=" + tenantId + " order by ld_count desc", - null, new RowMapper() { + new RowMapper() { @Override public TagCloud mapRow(ResultSet rs, int arg1) throws SQLException { @@ -1367,7 +1381,7 @@ public List findDuplicatedDigests(Long tenantId, Long folderId) throws P } digestQuery.append(" and ld_docref is null and ld_digest is not null group by ld_digest having count(*) > 1"); - return query(digestQuery.toString(), null, (rs, rowNum) -> { + return query(digestQuery.toString(), (rs, rowNum) -> { return rs.getString(1); }, null); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateRatingDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateRatingDAO.java index 96806bb0b..f05135b99 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateRatingDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/dao/HibernateRatingDAO.java @@ -100,7 +100,7 @@ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { } }; - coll = query(query, new Object[] {}, ratingMapper, null); + coll = query(query, ratingMapper, null); if (!coll.isEmpty() && coll.get(0).getCount() != 0) return coll.get(0); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/folder/HibernateFolderDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/folder/HibernateFolderDAO.java index 0fc377a7d..6c976a27f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/folder/HibernateFolderDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/folder/HibernateFolderDAO.java @@ -1270,15 +1270,23 @@ public void applyRightToTree(long rootId, FolderHistory transaction) throws Pers /* * Apply the securityRef */ - records = jdbcUpdate("update ld_folder set ld_securityref = ?, ld_lastmodified = ? where not ld_id = ? " - + " and ld_id in " + treeIdsString, securityRef, new Date(), rootId); + Map params = new HashMap<>(); + params.put("securityRef", securityRef); + params.put("lastModified", new Date()); + params.put("rootId", rootId); + + records = jdbcUpdate( + "update ld_folder set ld_securityref = :securityRef, ld_lastmodified = :lastModified where not ld_id = :rootId " + + " and ld_id in " + treeIdsString, + params); log.warn("Applied rights to {} folders in tree {}", records, rootId); /* * Delete all the specific rights associated to the folders in the tree */ - jdbcUpdate("delete from ld_foldergroup where not ld_folderid = ? and ld_folderid in " + treeIdsString, rootId); + jdbcUpdate("delete from ld_foldergroup where not ld_folderid = :rootId and ld_folderid in " + treeIdsString, + params); log.warn("Removed {} specific rights in tree {}", records, rootId); if (getSessionFactory().getCache() != null) { @@ -1452,9 +1460,14 @@ public Folder createPath(Folder parent, String path, boolean inheritSecurity, Fo String name = st.nextToken(); + Map params = new HashMap<>(); + params.put("folderId", folder.getId()); + params.put("name", name); + params.put("tenantId", folder.getTenantId()); + long child = queryForLong( - "SELECT ld_id FROM ld_folder WHERE ld_deleted=0 AND ld_parentid=? AND ld_name=? AND ld_tenantid=?", - folder.getId(), name, folder.getTenantId()); + "SELECT ld_id FROM ld_folder WHERE ld_deleted=0 AND ld_parentid = :folderId AND ld_name = :name AND ld_tenantid = :tenantId", + params); if (child == 0L) { Folder folderVO = new Folder(); @@ -1954,7 +1967,7 @@ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { } }; - results = query(query, null, mapper, maxHits); + results = query(query, mapper, maxHits); } catch (Exception e) { log.error(e.getMessage()); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/metadata/HibernateTemplateDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/metadata/HibernateTemplateDAO.java index 18584b7a5..e749ff1d6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/metadata/HibernateTemplateDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/metadata/HibernateTemplateDAO.java @@ -156,7 +156,7 @@ public void initialize(Template template) { // Manually initialize the collegtion of templateGroups template.getTemplateGroups().clear(); SqlRowSet groupSet = queryForRowSet( - "select ld_groupid,ld_write from ld_templategroup where ld_templateid=" + template.getId(), null, + "select ld_groupid,ld_write from ld_templategroup where ld_templateid=" + template.getId(), null); while (groupSet.next()) { TemplateGroup tg = new TemplateGroup(groupSet.getLong(1)); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/FulltextSearch.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/FulltextSearch.java index f6474fb0e..ce2a21757 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/FulltextSearch.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/FulltextSearch.java @@ -251,7 +251,7 @@ public void internalSearch() throws SearchException { DocumentDAO dao = (DocumentDAO) Context.get().getBean(DocumentDAO.class); try { - dao.query(richQuery.toString(), null, new HitMapper(hitsMap), null); + dao.query(richQuery.toString(), new HitMapper(hitsMap), null); } catch (PersistenceException e) { throw new SearchException(e); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/Search.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/Search.java index 4e3fbe1da..a7baaf23b 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/Search.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/Search.java @@ -172,7 +172,7 @@ public final List search() throws SearchException { query.append(attrs.toString().replace("[", "('").replace("]", "')").replace(",", "','").replace(" ", "")); try { - ddao.query(query.toString(), null, new RowMapper() { + ddao.query(query.toString(), new RowMapper() { @Override public Long mapRow(ResultSet rs, int row) throws SQLException { Long docId = rs.getLong(1); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/SearchOptions.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/SearchOptions.java index 7c7afaf8b..28c35609b 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/SearchOptions.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/SearchOptions.java @@ -11,6 +11,7 @@ import java.io.ObjectInputStream; import java.io.Serializable; import java.util.HashSet; +import java.util.Map; import java.util.Set; /** @@ -20,7 +21,7 @@ */ public class SearchOptions implements Serializable, Comparable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 2L; public static final int TYPE_FULLTEXT = 0; @@ -31,7 +32,7 @@ public class SearchOptions implements Serializable, Comparable { public static final int TYPE_FOLDERS = 3; private int page = 1; - + private int maxHits = 40; private int type = TYPE_FULLTEXT; @@ -42,7 +43,7 @@ public class SearchOptions implements Serializable, Comparable { private String description = ""; - private Serializable[] parameters = null; + private Map parameters = null; private long userId = -1; @@ -74,14 +75,6 @@ public void setTemplate(Long template) { this.template = template; } - public Serializable[] getParameters() { - return parameters; - } - - public void setParameters(Serializable[] parameters) { - this.parameters = parameters; - } - /** * Creates a new instance of SearchOptions * @@ -110,7 +103,7 @@ public void setType(int type) { public static SearchOptions read(File file) throws FileNotFoundException, IOException, ClassNotFoundException { SearchOptions searchOptions = null; - // Deserialize from a file (binay format) + // Deserialize from a file (binary format) try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(file))) { // Deserialize the object searchOptions = (SearchOptions) in.readObject(); @@ -239,4 +232,12 @@ public int getPage() { public void setPage(int page) { this.page = page; } + + public Map getParameters() { + return parameters; + } + + public void setParameters(Map parameters) { + this.parameters = parameters; + } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/TagSearch.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/TagSearch.java index eaf7c6ba1..be97b4463 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/TagSearch.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/TagSearch.java @@ -38,7 +38,7 @@ public void internalSearch() throws SearchException { DocumentDAO dao = (DocumentDAO) Context.get().getBean(DocumentDAO.class); try { - hits.addAll(dao.query(options.getExpression(), null, new HitMapper(), options.getMaxHits())); + hits.addAll(dao.query(options.getExpression(), new HitMapper(), options.getMaxHits())); } catch (PersistenceException e) { throw new SearchException(e); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/folder/FolderSearch.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/folder/FolderSearch.java index 2746635f1..5aba56922 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/folder/FolderSearch.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/folder/FolderSearch.java @@ -1,12 +1,12 @@ package com.logicaldoc.core.searchengine.folder; -import java.io.Serializable; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; import org.apache.commons.lang.StringUtils; @@ -61,7 +61,7 @@ public void internalSearch() throws SearchException { throw new SearchException(e1); } - Serializable[] params = null; + Map params = null; try { params = prepareExpression(); } catch (PersistenceException e1) { @@ -77,6 +77,7 @@ public void internalSearch() throws SearchException { } catch (PersistenceException e) { throw new SearchException(e); } + estimatedHitsNumber = folders.size(); // Traverse the results checking visibility and count @@ -102,11 +103,11 @@ public void internalSearch() throws SearchException { * * PersistenceException error at data layer */ - private Serializable[] prepareExpression() throws PersistenceException { + private Map prepareExpression() throws PersistenceException { if (StringUtils.isNotEmpty(options.getExpression())) return options.getParameters(); - ArrayList params = new ArrayList<>(); + Map params = new HashMap<>(); StringBuilder query = new StringBuilder(); @@ -136,7 +137,7 @@ private Serializable[] prepareExpression() throws PersistenceException { log.info("executing query {}", query); log.info("with parameters {}", params); - return params.toArray(new Serializable[0]); + return params; } /** @@ -145,12 +146,12 @@ private Serializable[] prepareExpression() throws PersistenceException { * * @param searchAliases If true, also the aliases must be considered in the * search - * @param params - * @param query + * @param params the query parameters map + * @param query the query * - * PersistenceException error at data layer + * @throws PersistenceException error at data layer */ - private void appendWhereClause(boolean searchAliases, ArrayList params, StringBuilder query) + private void appendWhereClause(boolean searchAliases, Map params, StringBuilder query) throws PersistenceException { FolderSearchOptions fOptions = (FolderSearchOptions) options; @@ -192,7 +193,7 @@ private void appendWhereClause(boolean searchAliases, ArrayList pa } private String prepareCriteriaConditions(String tableAlias, FolderSearchOptions fOptions, - ArrayList params) throws PersistenceException { + Map params) throws PersistenceException { StringBuilder criteriaQueryPart = new StringBuilder(); int joinsCounter = 0; @@ -301,7 +302,7 @@ private void appendMainFolderCondition(StringBuilder query, String tableAlias, F } private void appendAttributeCriterionColumnCondition(StringBuilder query, String tableAlias, String columnName, - FolderCriterion criterion, ArrayList params) throws PersistenceException { + FolderCriterion criterion, Map params) throws PersistenceException { switch (criterion.getType()) { case Attribute.TYPE_INT: appendIntegerCriterion(query, columnName, criterion, params); @@ -402,44 +403,50 @@ else if (FolderCriterion.OPERATOR_NOTEQUAL.equals(criterion.getOperator())) } private void appendDateCriterion(StringBuilder query, String columnName, FolderCriterion criterion, - ArrayList params) { + Map params) { if (FolderCriterion.OPERATOR_NULL.equals(criterion.getOperator())) { query.append(columnName + IS_NULL); } else if (FolderCriterion.OPERATOR_NOTNULL.equals(criterion.getOperator())) { query.append(columnName + IS_NOT_NULL); } else { - params.add(criterion.getSqlDateValue()); + String paramName = addParameter(params, criterion.getSqlDateValue()); if (FolderCriterion.OPERATOR_GREATER.equals(criterion.getOperator())) - query.append(columnName + " > ?"); + query.append(columnName + " > :" + paramName); else if (FolderCriterion.OPERATOR_LESSER.equals(criterion.getOperator())) - query.append(columnName + " < ?"); + query.append(columnName + " < :" + paramName); } } + private String addParameter(Map params, Object value) { + String paramName = "param" + params.size(); + params.put(paramName, value); + return paramName; + } + private void appendDoubleCriterion(StringBuilder query, String columnName, FolderCriterion criterion, - ArrayList params) { + Map params) { if (FolderCriterion.OPERATOR_NULL.equals(criterion.getOperator())) { query.append(columnName + IS_NULL); } else if (FolderCriterion.OPERATOR_NOTNULL.equals(criterion.getOperator())) { query.append(columnName + IS_NOT_NULL); } else { - params.add(criterion.getDoubleValue()); + String paramName = addParameter(params, criterion.getDoubleValue()); if (FolderCriterion.OPERATOR_EQUALS.equals(criterion.getOperator())) - query.append(columnName + " = ?"); + query.append(columnName + " = :" + paramName); else if (FolderCriterion.OPERATOR_NOTEQUAL.equals(criterion.getOperator())) query.append(NOT + columnName + EQUAL_PARAMETER); else if (FolderCriterion.OPERATOR_GREATER.equals(criterion.getOperator())) - query.append(columnName + " > ?"); + query.append(columnName + " > :" + paramName); else if (FolderCriterion.OPERATOR_LESSER.equals(criterion.getOperator())) - query.append(columnName + " < ?"); + query.append(columnName + " < :" + paramName); } } private void appendBooleanCriterion(StringBuilder query, String columnName, FolderCriterion criterion, - ArrayList params) { + Map params) { if (FolderCriterion.OPERATOR_EQUALS.equals(criterion.getOperator())) { - params.add(criterion.getLongValue()); - query.append(columnName + " = ?"); + String paramName = addParameter(params, criterion.getLongValue()); + query.append(columnName + " = :" + paramName); } else if (FolderCriterion.OPERATOR_NULL.equals(criterion.getOperator())) { query.append(columnName + IS_NULL); } else if (FolderCriterion.OPERATOR_NOTNULL.equals(criterion.getOperator())) { @@ -448,36 +455,36 @@ private void appendBooleanCriterion(StringBuilder query, String columnName, Fold } private void appendFolderOrUserOrTemplateCriterion(StringBuilder query, String columnName, - FolderCriterion criterion, ArrayList params) { + FolderCriterion criterion, Map params) { if (FolderCriterion.OPERATOR_NULL.equals(criterion.getOperator())) { query.append(columnName + IS_NULL); } else if (FolderCriterion.OPERATOR_NOTNULL.equals(criterion.getOperator())) { query.append(columnName + IS_NOT_NULL); } else { - params.add(criterion.getLongValue()); - if (FolderCriterion.OPERATOR_EQUALS.equals(criterion.getOperator())) - query.append(columnName + " = ?"); - else if (FolderCriterion.OPERATOR_NOTEQUAL.equals(criterion.getOperator())) + if (FolderCriterion.OPERATOR_EQUALS.equals(criterion.getOperator())) { + String paramName = addParameter(params, criterion.getLongValue()); + query.append(columnName + " = :" + paramName); + } else if (FolderCriterion.OPERATOR_NOTEQUAL.equals(criterion.getOperator())) query.append(NOT + columnName + EQUAL_PARAMETER); } } private void appendIntegerCriterion(StringBuilder query, String columnName, FolderCriterion criterion, - ArrayList params) { + Map params) { if (FolderCriterion.OPERATOR_NULL.equals(criterion.getOperator())) { query.append(columnName + IS_NULL); } else if (FolderCriterion.OPERATOR_NOTNULL.equals(criterion.getOperator())) { query.append(columnName + IS_NOT_NULL); } else { - params.add(criterion.getLongValue()); + String paramName = addParameter(params, criterion.getLongValue()); if (FolderCriterion.OPERATOR_EQUALS.equals(criterion.getOperator())) - query.append(columnName + " = ?"); + query.append(columnName + " = :" + paramName); else if (FolderCriterion.OPERATOR_NOTEQUAL.equals(criterion.getOperator())) query.append(NOT + columnName + EQUAL_PARAMETER); else if (FolderCriterion.OPERATOR_GREATER.equals(criterion.getOperator())) - query.append(columnName + " > ?"); + query.append(columnName + " > :" + paramName); else if (FolderCriterion.OPERATOR_LESSER.equals(criterion.getOperator())) - query.append(columnName + " < ?"); + query.append(columnName + " < :" + paramName); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/HibernateSearchDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/HibernateSearchDAO.java index 56d5b2e3f..6ac2c9202 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/HibernateSearchDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/HibernateSearchDAO.java @@ -87,7 +87,7 @@ private void setUniqueName(SavedSearch search) { // Execute the query to populate the sets try { - SqlRowSet rs = queryForRowSet(query.toString(), null, null); + SqlRowSet rs = queryForRowSet(query.toString(), null); if (rs != null) while (rs.next()) { String file = rs.getString(1); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/dao/HibernateUserDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/dao/HibernateUserDAO.java index 8133b6f90..4058f5622 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/dao/HibernateUserDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/dao/HibernateUserDAO.java @@ -303,10 +303,19 @@ private void saveWorkingTimes(User user) throws PersistenceException { jdbcUpdate("delete from ld_workingtime where ld_userid=" + user.getId()); if (user.getWorkingTimes() != null) for (WorkingTime wt : user.getWorkingTimes()) { + Map params = new HashMap<>(); + params.put("userId", user.getId()); + params.put("dayOfWeek", wt.getDayOfWeek()); + params.put("hourStart", wt.getHourStart()); + params.put("minuteStart", wt.getMinuteStart()); + params.put("hourEnd", wt.getHourEnd()); + params.put("minuteEnd", wt.getMinuteEnd()); + params.put("label", wt.getLabel()); + params.put("description", wt.getDescription()); + jdbcUpdate( - "insert into ld_workingtime(ld_userid,ld_dayofweek,ld_hourstart,ld_minutestart,ld_hourend,ld_minuteend,ld_label,ld_description) values (?,?,?,?,?,?,?,?)", - user.getId(), wt.getDayOfWeek(), wt.getHourStart(), wt.getMinuteStart(), wt.getHourEnd(), - wt.getMinuteEnd(), wt.getLabel(), wt.getDescription()); + "insert into ld_workingtime(ld_userid,ld_dayofweek,ld_hourstart,ld_minutestart,ld_hourend,ld_minuteend,ld_label,ld_description) values (:userId, :dayOfWeek, :hourStart, :minuteStart, :hourEnd, :minuteEnd, :label, :description)", + params); } } @@ -444,7 +453,9 @@ private void saveHistory(User user, UserHistory transaction, boolean newUser) th * @throws PersistenceException Error in the database */ private void updateUserGroupAssignments(User user) throws PersistenceException { - jdbcUpdate("delete from ld_usergroup where ld_userid = ?", user.getId()); + Map params = new HashMap<>(); + params.put("userId", user.getId()); + jdbcUpdate("delete from ld_usergroup where ld_userid = :userId", params); for (UserGroup ug : user.getUserGroups()) { int exists = queryForInt("select count(*) from ld_group where ld_id=" + ug.getGroupId()); if (exists > 0) { @@ -821,7 +832,7 @@ public void initialize(User user) { SqlRowSet timeSet = queryForRowSet( "select ld_dayofweek,ld_hourstart,ld_minutestart,ld_hourend,ld_minuteend,ld_label,ld_description from ld_workingtime where ld_userid=" + user.getId(), - null, null); + null); while (timeSet.next()) { WorkingTime wt = new WorkingTime(timeSet.getInt(1), timeSet.getInt(2), timeSet.getInt(3)); wt.setHourEnd(timeSet.getInt(4)); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/task/AbstractDocumentProcessor.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/task/AbstractDocumentProcessor.java index 536e96d8f..a657779a8 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/task/AbstractDocumentProcessor.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/task/AbstractDocumentProcessor.java @@ -82,7 +82,7 @@ private void processDocuments(List docIds, int max) throws PersistenceExce @SuppressWarnings("unchecked") List records = documentDao.query( - "select ld_id, ld_filename from ld_document where ld_id in " + idsStr, null, new RowMapper() { + "select ld_id, ld_filename from ld_document where ld_id in " + idsStr, new RowMapper() { @Override public Object[] mapRow(ResultSet rs, int row) throws SQLException { Object[] rec = new Object[2]; diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java index 7b3280331..6ba2a6ec4 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java @@ -4,6 +4,8 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import javax.imageio.ImageIO; @@ -160,11 +162,14 @@ public static void generateDefaultAvatar(User user) { ImageIO.write(avatar, "png", tmpAvatarImage); user.setAvatar(ImageUtil.encodeImage(tmpAvatarImage)); - if (user.getType() != User.TYPE_SYSTEM) + if (user.getType() != User.TYPE_SYSTEM) { userDao.store(user); - else - userDao.jdbcUpdate("update ld_user set ld_avatar = ? where ld_username = ?", user.getAvatar(), - user.getUsername()); + } else { + Map params = new HashMap<>(); + params.put("avatar", user.getAvatar()); + params.put("username", user.getUsername()); + userDao.jdbcUpdate("update ld_user set ld_avatar = :avatar where ld_username = :username", params); + } } catch (Exception t) { if (user.getType() == User.TYPE_DEFAULT) log.warn(ERROR_GENERATING_DEFAULT_THE_AVATAR_FOR_USER, user, t); diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/searchengine/folder/FolderSearchTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/searchengine/folder/FolderSearchTest.java index d4846c2d7..973b6e050 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/searchengine/folder/FolderSearchTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/searchengine/folder/FolderSearchTest.java @@ -80,7 +80,6 @@ public void testSearch() { try { search.search(); } catch (Exception e) { - e.printStackTrace(); log.error(e.getMessage(), e); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedDocsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedDocsDataServlet.java index b9967a656..ebb72b6d8 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedDocsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedDocsDataServlet.java @@ -86,7 +86,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, log.error(query.toString()); @SuppressWarnings("unchecked") - List records = (List) docDao.query(query.toString(), null, new RowMapper() { + List records = (List) docDao.query(query.toString(), new RowMapper() { public Document mapRow(ResultSet rs, int rowNum) throws SQLException { Document doc = new Document(); doc.setTenantId(session.getTenantId()); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedFoldersDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedFoldersDataServlet.java index 91a95fd85..5eaa6bc17 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedFoldersDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DeletedFoldersDataServlet.java @@ -69,7 +69,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, query.append(" order by ld_creation desc "); @SuppressWarnings("unchecked") - List records = (List) fldDao.query(query.toString(), null, new RowMapper() { + List records = (List) fldDao.query(query.toString(), new RowMapper() { public Folder mapRow(ResultSet rs, int rowNum) throws SQLException { Folder folder = new Folder(); folder.setTenantId(session.getTenantId()); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DocumentsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DocumentsDataServlet.java index 148076001..4159b3aa3 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DocumentsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/DocumentsDataServlet.java @@ -604,7 +604,7 @@ private void retrieveExtendedAttributesValues(Locale locale, List extend query.append(extendedAttributes.toString().replace("[", "('").replace("]", "')").replace(",", "','") .replace(" ", "")); - dao.query(query.toString(), null, new ExtendedAttributeRowMapper(extAttributesValues, locale), null); + dao.query(query.toString(), new ExtendedAttributeRowMapper(extAttributesValues, locale), null); } private String getFilename(HttpServletRequest request) { diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/FoldersDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/FoldersDataServlet.java index 027a437ec..d30ccfe29 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/FoldersDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/FoldersDataServlet.java @@ -5,8 +5,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -96,7 +98,10 @@ private void printFolders(PrintWriter writer, Session session, long tenantId, St Folder parentFolder, User user, Long startRecord, Long endRecord) throws PersistenceException { StringBuilder query = prepareQuery(session, tenantName, parentFolder, user); FolderDAO folderDao = (FolderDAO) Context.get().getBean(FolderDAO.class); - SqlRowSet rs = folderDao.queryForRowSet(query.toString(), new Long[] { parentFolder.getId(), tenantId }, null); + Map params = new HashMap<>(); + params.put("parentId", parentFolder.getId()); + params.put("tenantId", tenantId); + SqlRowSet rs = folderDao.queryForRowSet(query.toString(), params, null); if (rs != null) { long i = 0; @@ -147,7 +152,7 @@ private void printFoldRef(PrintWriter writer, SqlRowSet rs) { private void printFoldersWithDocs(PrintWriter writer, String parent, Folder parentFolder, User user) throws PersistenceException { StringBuilder query = new StringBuilder( - "select ld_id, ld_filename, ld_filesize, ld_published, ld_startpublishing, ld_stoppublishing, ld_status, ld_color from ld_document where ld_deleted=0 and ld_folderid=? "); + "select ld_id, ld_filename, ld_filesize, ld_published, ld_startpublishing, ld_stoppublishing, ld_status, ld_color from ld_document where ld_deleted=0 and ld_folderid=:parentId "); if (!user.isMemberOf(Group.GROUP_ADMIN) && !user.isMemberOf("publisher")) { query.append(" and ld_published=1"); query.append(" and (ld_startpublishing is null or CURRENT_TIMESTAMP > ld_startpublishing) "); @@ -157,7 +162,9 @@ private void printFoldersWithDocs(PrintWriter writer, String parent, Folder pare if (parentFolder != null) { FolderDAO folderDao = (FolderDAO) Context.get().getBean(FolderDAO.class); - SqlRowSet rs = folderDao.queryForRowSet(query.toString(), new Long[] { parentFolder.getId() }, null); + Map params = new HashMap<>(); + params.put("parentId", parentFolder.getId()); + SqlRowSet rs = folderDao.queryForRowSet(query.toString(), params, null); if (rs != null) printFoldersWithDocs(writer, rs, parent); } @@ -190,7 +197,7 @@ private void printFoldersWithDocs(PrintWriter writer, SqlRowSet rs, String paren private StringBuilder prepareQuery(Session session, String tenantName, Folder parentFolder, User user) throws PersistenceException { StringBuilder query = new StringBuilder( - "select ld_id, ld_parentid, ld_name, ld_type, ld_foldref, ld_color, ld_position from ld_folder where ld_deleted=0 and ld_hidden=0 and not ld_id=ld_parentid and ld_parentid = ? and ld_tenantid = ? "); + "select ld_id, ld_parentid, ld_name, ld_type, ld_foldref, ld_color, ld_position from ld_folder where ld_deleted=0 and ld_hidden=0 and not ld_id=ld_parentid and ld_parentid = :parentId and ld_tenantid = :tenantId "); if (!user.isMemberOf(Group.GROUP_ADMIN) && parentFolder != null) { addReadConditions(query, session, parentFolder); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/IndexingQueueDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/IndexingQueueDataServlet.java index d0b17c4ca..6d4de0b17 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/IndexingQueueDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/IndexingQueueDataServlet.java @@ -54,7 +54,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, * Execute the Query */ @SuppressWarnings("unchecked") - List records = (List) dao.query(query.toString(), null, new RowMapper() { + List records = (List) dao.query(query.toString(), new RowMapper() { @Override public Object[] mapRow(ResultSet rs, int row) throws SQLException { diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/LockedDocsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/LockedDocsDataServlet.java index a9cecda08..605cd6339 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/LockedDocsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/LockedDocsDataServlet.java @@ -65,7 +65,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, } @SuppressWarnings("unchecked") - List records = (List) docDao.query(query.toString(), null, new RowMapper() { + List records = (List) docDao.query(query.toString(), new RowMapper() { public Document mapRow(ResultSet rs, int rowNum) throws SQLException { Document doc = new Document(); doc.setTenantId(session.getTenantId()); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/NotesDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/NotesDataServlet.java index 03d13f0da..775d73aba 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/NotesDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/NotesDataServlet.java @@ -5,7 +5,9 @@ import java.sql.SQLException; import java.text.DateFormat; import java.util.Date; +import java.util.HashMap; import java.util.Locale; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -52,7 +54,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, PrintWriter writer = response.getWriter(); writer.write(""); - + while (set.next()) { printPost(writer, set); } @@ -79,18 +81,20 @@ private SqlRowSet executeQuery(Long userId, Long docId, String fileVersion, Long DocumentNoteDAO dao = (DocumentNoteDAO) Context.get().getBean(DocumentNoteDAO.class); SqlRowSet set = null; if (docId != null && StringUtils.isNotEmpty(fileVersion)) { - query.append(" and A.ld_fileversion = ? order by A.ld_date desc, A.ld_page asc "); - set = dao.queryForRowSet(query.toString(), new Object[] { fileVersion }, 200); + query.append(" and A.ld_fileversion = :fileVersion order by A.ld_date desc, A.ld_page asc "); + Map params = new HashMap<>(); + params.put("fileVersion", fileVersion); + set = dao.queryForRowSet(query.toString(), params, 200); } else { query.append(" order by A.ld_date desc, A.ld_page asc "); - set = dao.queryForRowSet(query.toString(), null, 200); + set = dao.queryForRowSet(query.toString(), 200); } return set; } private void printPost(PrintWriter writer, SqlRowSet set) { DateFormat df = getDateFormat(); - + writer.print(""); writer.print("" + set.getLong(1) + ""); writer.print("<![CDATA[" + StringUtils.abbreviate(set.getString(2), 100) + "]]>"); @@ -115,8 +119,7 @@ private void printPost(PrintWriter writer, SqlRowSet set) { writer.print(""); writer.print("" + set.getLong(5) + ""); writer.print(""); - writer.print("" - + FileUtil.getBaseName(IconSelector.selectIcon(FileUtil.getExtension(set.getString(6)))) + writer.print("" + FileUtil.getBaseName(IconSelector.selectIcon(FileUtil.getExtension(set.getString(6)))) + ""); writer.print("" + set.getString(7) + ""); writer.print(""); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/RightsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/RightsDataServlet.java index ab0a618a2..45053044b 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/RightsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/RightsDataServlet.java @@ -62,7 +62,7 @@ private Map getUsers(long tenantId) throws PersistenceException { SqlRowSet set = dao.queryForRowSet( "select ld_id, ld_username, ld_firstname, ld_name from ld_user where ld_deleted=0 and ld_tenantid=" + tenantId, - null, null); + null); Map users = new HashMap<>(); while (set.next()) users.put(set.getLong(1), set.getString(3) + " " + set.getString(4) + " (" + set.getString(2) + ")"); @@ -95,7 +95,7 @@ private void folderRights(HttpServletResponse response, Long folderId) throws IO query.append(" and B.ld_tenantid = " + ref.getTenantId()); query.append(" and B.ld_deleted=0 and A.ld_groupid = B.ld_id order by B.ld_type asc, B.ld_name asc"); - SqlRowSet set = folderDao.queryForRowSet(query.toString(), null, null); + SqlRowSet set = folderDao.queryForRowSet(query.toString(), null); /* * Iterate over records composing the response XML document @@ -174,7 +174,7 @@ private void menuRights(HttpServletResponse response, Long menuId, long tenantId query.append(" and B.ld_deleted=0 and A.ld_groupid = B.ld_id and B.ld_tenantid = " + tenantId); query.append(" order by B.ld_type asc, B.ld_name asc"); - SqlRowSet set = menuDao.queryForRowSet(query.toString(), null, null); + SqlRowSet set = menuDao.queryForRowSet(query.toString(), null); /* * Iterate over records composing the response XML document diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TemplateRightsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TemplateRightsDataServlet.java index ce4d9f737..441bac3aa 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TemplateRightsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TemplateRightsDataServlet.java @@ -54,7 +54,7 @@ private Map getUsers(long tenantId) throws PersistenceException { SqlRowSet set = dao.queryForRowSet( "select ld_id, ld_username, ld_firstname, ld_name from ld_user where ld_deleted=0 and ld_tenantid=" + tenantId, - null, null); + null); Map users = new HashMap<>(); while (set.next()) users.put(set.getLong(1), set.getString(4) + " " + set.getString(3) + " (" + set.getString(2) + ")"); @@ -80,7 +80,7 @@ private void templateRights(HttpServletResponse response, Long workflowId) query.append(" and B.ld_tenantid = " + template.getTenantId()); query.append(" and B.ld_deleted=0 and A.ld_groupid = B.ld_id order by B.ld_name asc"); - SqlRowSet set = tDao.queryForRowSet(query.toString(), null, null); + SqlRowSet set = tDao.queryForRowSet(query.toString(), null); /* * Iterate over records composing the response XML document diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TicketsDataServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TicketsDataServlet.java index dee29be44..0b6f23401 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TicketsDataServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/data/TicketsDataServlet.java @@ -44,7 +44,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response, DateFormat df = getDateFormat(); - SqlRowSet set = dao.queryForRowSet(query.toString(), null, max != null ? max : 100); + SqlRowSet set = dao.queryForRowSet(query.toString(), max != null ? max : 100); /* * Iterate over records composing the response XML document diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/AttributeSetServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/AttributeSetServiceImpl.java index 6eff35d0a..acc5d022d 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/AttributeSetServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/AttributeSetServiceImpl.java @@ -366,9 +366,13 @@ public void applyValidationToTemplates(long setId, String attribute) throws Serv if (setAttribute == null) return; + Map params = new HashMap<>(); + params.put("validation", setAttribute.getValidation()); + params.put("name", attribute); + params.put("setId", setId); int count = dao.jdbcUpdate( - "update ld_template_ext set ld_validation = ? where ld_setid=" + setId + " and ld_name = ?", - setAttribute.getValidation(), attribute); + "update ld_template_ext set ld_validation = :validation where ld_setid = :setId and ld_name = :name", + params); log.info("Updated the validation of {} template attributes named {}", count, attribute); } catch (Exception t) { throwServerException(session, log, t); @@ -386,9 +390,13 @@ public void applyInitializationToTemplates(long setId, String attribute) throws if (setAttribute == null) return; + Map params = new HashMap<>(); + params.put("initialization", setAttribute.getInitialization()); + params.put("name", attribute); + params.put("setId", setId); int count = dao.jdbcUpdate( - "update ld_template_ext set ld_initialization = ? where ld_setid=" + setId + " and ld_name = ?", - setAttribute.getInitialization(), attribute); + "update ld_template_ext set ld_initialization = :initialization where ld_setid = :setId and ld_name = :name", + params); log.info("Updated the initialization of {} template attributes named {}", count, attribute); } catch (Exception t) { throwServerException(session, log, t); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java index 19f26077c..675a2abd5 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java @@ -2821,7 +2821,7 @@ public void deDuplicate(Long folderId, boolean retainNewest) throws ServerExcept FolderDAO folderDao = (FolderDAO) Context.get().getBean(FolderDAO.class); @SuppressWarnings("unchecked") - List duplications = (List) docDao.query(duplicationsQuery.toString(), null, + List duplications = (List) docDao.query(duplicationsQuery.toString(), new RowMapper() { public Document mapRow(ResultSet rs, int rowNum) throws SQLException { Document doc = new Document(); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/FolderServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/FolderServiceImpl.java index c17134b99..627b2bcad 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/FolderServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/FolderServiceImpl.java @@ -247,7 +247,7 @@ private static long[] countDocsInTree(long folderId) throws PersistenceException "select count(D.ld_id), sum(D.ld_filesize) from ld_document D, ld_folder F where D.ld_deleted=0 and F.ld_deleted=0 and D.ld_folderid=F.ld_id and (F.ld_id=" + folderId + " or F.ld_path like '" + pathPrefix + "/%') " + " and not ld_status=" + AbstractDocument.DOC_ARCHIVED, - null, null); + null); long[] stats = new long[] { 0L, 0L }; if (resultSet.next()) { stats[0] = resultSet.getLong(1); diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SearchEngineServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SearchEngineServiceImpl.java index 62faf0ca6..d04b1d296 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SearchEngineServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SearchEngineServiceImpl.java @@ -488,7 +488,7 @@ private void executeEnrichingQuery(Map hitsMap) throws SearchExceptio log.debug("Execute query {}", richQuery); try { - dao.query(richQuery.toString(), null, new HitMapper(hitsMap), null); + dao.query(richQuery.toString(), new HitMapper(hitsMap), null); } catch (PersistenceException e) { throw new SearchException(e); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SecurityServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SecurityServiceImpl.java index ed066d046..7c1557a2b 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SecurityServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SecurityServiceImpl.java @@ -1347,7 +1347,7 @@ public GUIUser[] searchUsers(String username, String groupId) throws ServerExcep try { @SuppressWarnings("unchecked") - List users = userDao.query(query.toString(), null, new RowMapper<>() { + List users = userDao.query(query.toString(), new RowMapper<>() { @Override public GUIUser mapRow(ResultSet rs, int row) throws SQLException { diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java index c637e3fc0..d87452b96 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java @@ -709,7 +709,7 @@ private void appendUserCondition(String tableAlias, Long userId, StringBuilder q @SuppressWarnings("unchecked") private List executeQuery(String query, int maxResult, Session session) throws PersistenceException { DocumentHistoryDAO dao = (DocumentHistoryDAO) Context.get().getBean(DocumentHistoryDAO.class); - return dao.query(query, null, new RowMapper<>() { + return dao.query(query, new RowMapper<>() { @Override public GUIHistory mapRow(ResultSet rs, int arg1) throws SQLException { @@ -806,7 +806,7 @@ public GUIHistory[] searchApiCalls(Long userId, Date from, Date till, String cal query.append(" order by ld_date desc "); try { - List calls = dao.query(query.toString(), null, new RowMapper() { + List calls = dao.query(query.toString(), new RowMapper() { @Override public GUIHistory mapRow(ResultSet rs, int arg1) throws SQLException {