Author: bpoussin Date: 2011-02-22 19:57:43 +0100 (Tue, 22 Feb 2011) New Revision: 719 Url: http://nuiton.org/repositories/revision/wikitty/719 Log: Evolution #1352: Add information in log during reindexation process add getStatistic method on WikittyStorage interface Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-02-22 18:57:43 UTC (rev 719) @@ -928,6 +928,7 @@ boolean txBeginHere = false; try { + log.info("Reindexation started"); final int numberForCommit = 1000; // TODO poussin 20110221 configurable variable final WikittySearchEngine searchEngine = getSearchEngine(); final List<Wikitty> wikitties = new ArrayList<Wikitty>(numberForCommit); @@ -944,7 +945,14 @@ tx.begin(); txBeginHere = true; } + + WikittyStorage.DataStatistic stat = getWikittyStorage().getDataStatistic(tx); + final long max = stat.getActiveWikitties(); + + log.info("Reindexation 0%"); getWikittyStorage().scanWikitties(tx, new WikittyStorage.Scanner() { + long lastPurcent = -1; + long current = 0; int count = 0; @Override @@ -952,6 +960,7 @@ Wikitty wikitty = restore(securityToken, wikittyId); Date deleteDate = wikitty.getDeleteDate(); if(deleteDate == null) { + current++; count ++; wikitties.add(wikitty); @@ -963,6 +972,16 @@ count = 0; wikitties.clear(); tx.begin(); + // si on a les statistiques a disposition on affiche + // l'etat d'avancement dans les logs + if (max > 0) { + long purcent = current * 100 / max; + // on affiche l'etat d'avancement environ tous les 10% + if (purcent / 10 > lastPurcent) { + lastPurcent = purcent / 10; + log.info(String.format("Reindexation %s%%", purcent)); + } + } } } } @@ -973,6 +992,7 @@ if (txBeginHere) { tx.commit(); } + log.info("Reindexation finished"); } catch (WikittyException ex) { if (tx != null && tx.isStarted()) { tx.rollback(); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorage.java 2011-02-22 18:57:43 UTC (rev 719) @@ -129,4 +129,58 @@ */ public WikittyEvent clear(WikittyTransaction transaction); + /** + * Return some statistique about the data + * @param transaction + * @return + * @since 3.0.5 + */ + public DataStatistic getDataStatistic(WikittyTransaction transaction); + + /** + * @see #getDataStatistic(org.nuiton.wikitty.services.WikittyTransaction) + * @since 3.0.5 + */ + static public class DataStatistic { + protected long activeWikitties = -1; + protected long deletedWikitties = -1; + + /** + * Use this constructor when your implementation don't support statistic + */ + public DataStatistic() { + } + + public DataStatistic(long activeWikitties, long deletedWikitties) { + this.activeWikitties = activeWikitties; + this.deletedWikitties = deletedWikitties; + } + /** + * Return number of non deleted wikitties, or negative value if this + * information can't be retrieved + * @return + */ + public long getActiveWikitties() { + return activeWikitties; + } + + /** + * Return number of deleted wikitties, or negative value if this + * information can't be retrieved + * @return + */ + public long getDeletedWikitties() { + return deletedWikitties; + } + + /** + * Return number of non deleted and deleted wikitties, or negative value + * if this information can't be retrieved + * @return + */ + public long getTotalWikitties() { + long result = getActiveWikitties() + getDeletedWikitties(); + return result; + } + } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyStorageInMemory.java 2011-02-22 18:57:43 UTC (rev 719) @@ -175,4 +175,21 @@ result.addType(WikittyEvent.WikittyEventType.CLEAR_WIKITTY); return result; } + + @Override + public DataStatistic getDataStatistic(WikittyTransaction transaction) { + long active = 0; + long deleted = 0; + Collection<Wikitty> all = wikitties.values(); + for (Wikitty wikitty : all) { + if (wikitty.isDeleted()) { + deleted++; + } else { + active++; + } + } + DataStatistic result = new DataStatistic(active, deleted); + return result; + } + } Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-02-22 18:57:43 UTC (rev 719) @@ -100,6 +100,10 @@ static final public String QUERY_SELECT = "jdbc.queries.select"; /** basic selection without where clause query property name */ static final public String QUERY_SELECT_NOTDELETED = "jdbc.queries.select.notdeleted"; + /** count number of active (not deleted wikitties) */ + static final public String QUERY_COUNT_ACTIVE_WIKITTY = "jdbc.queries.select.count.active.wikitties"; + /** count number of deleted */ + static final public String QUERY_COUNT_DELETED_WIKITTY = "jdbc.queries.select.count.deleted.wikitties"; /** basic selection with where clause query property name */ static final public String QUERY_SELECT_WHERE = "jdbc.queries.select.where"; /** basic selection with where clause query property name */ Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2011-02-22 18:57:43 UTC (rev 719) @@ -48,6 +48,8 @@ import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_INSERT_WIKITTY_ADMIN; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_INSERT_WIKITTY_DATA; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_NOTDELETED; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_COUNT_ACTIVE_WIKITTY; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_COUNT_DELETED_WIKITTY; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_TWO_WHERE; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE_NOTDELETED; @@ -621,4 +623,31 @@ WikittyJDBCUtil.closeQuietly(connection); } } + + @Override + public DataStatistic getDataStatistic(WikittyTransaction transaction) { + DataStatistic result;; + Connection connection = WikittyJDBCUtil.getConnection(config); + try { + Statement statement = connection.createStatement(); + + ResultSet resultSet = statement.executeQuery( + jdbcQuery.getProperty(QUERY_COUNT_ACTIVE_WIKITTY)); + long activeWikitties = resultSet.getLong(1); + + resultSet = statement.executeQuery( + jdbcQuery.getProperty(QUERY_COUNT_DELETED_WIKITTY)); + long deletedWikitties = resultSet.getLong(1); + + result = new DataStatistic(activeWikitties, deletedWikitties); + } catch (SQLException eee) { + result = new DataStatistic(); + log.warn("Can't retrieve statisticn data", eee); + } finally { + WikittyJDBCUtil.closeQuietly(connection); + } + return result; + } + + } Modified: trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties =================================================================== --- trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2011-02-21 17:49:33 UTC (rev 718) +++ trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2011-02-22 18:57:43 UTC (rev 719) @@ -77,6 +77,10 @@ jdbc.queries.select=SELECT %s FROM %s; #not deleted data selection query without where clause jdbc.queries.select.notdeleted=SELECT %s FROM %s WHERE deletionDate IS NULL; +#count number of active (not deleted wikitties) +jdbc.queries.select.count.active.wikitties=SELECT count(id) FROM wikitty_admin WHERE deletiondate IS NULL; +#count number of deleted wikitties +jdbc.queries.select.count.deleted.wikitties=SELECT count(id) FROM wikitty_admin WHERE deletiondate IS NOT NULL; #basic selection query with where clause jdbc.queries.select.where=SELECT %s FROM %s WHERE %s = ?; #basic 2 selections query with where clause
participants (1)
-
bpoussin@users.nuiton.org