Author: bpoussin Date: 2010-12-10 19:05:38 +0100 (Fri, 10 Dec 2010) New Revision: 595 Url: http://nuiton.org/repositories/revision/wikitty/595 Log: - add Date in WikittyToken - add Date in WikittyAccessStat - WikittyAccessStat refactore storage to support monitoring with log(file), wikitty(db) or other Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAccessStat.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java trunk/wikitty-api/src/main/xmi/wikitty.properties trunk/wikitty-api/src/main/xmi/wikitty.zargo Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-12-10 18:03:19 UTC (rev 594) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyConfig.java 2010-12-10 18:05:38 UTC (rev 595) @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.ArgumentsParserException; +import org.nuiton.wikitty.services.WikittyServiceAccessStat.AccessStatStorageWikitty; /** * Configuration de tous les modules Wikitty. La configuration par defaut doit @@ -222,6 +223,16 @@ + " or org.nuiton.wikitty.services.WikittyServiceInMemoryJdbcSolr)"), WikittyServiceInMemory.class.getName(), String.class, false, false), + WIKITTY_WIKITTYSERICEACCESSSTAT_COMPONENTS( + "wikitty.WikittyServiceAccessStat.components", + _("Indique le composant a utiliser pour le stockage des acces"), + AccessStatStorageWikitty.class.getName(), String.class, false, false), + + WIKITTY_ACCESSSTAT_EXTENSIONS( + "wikitty.service.accessstat.extensions", + _("Indique la liste d'extension dont il faut monitorer l'acces"), + "WikittyPubText,WikittyPubData", String.class, false, false), + WIKITTY_SERVER_CONFIG( "wikitty.service.server.config", _("Jetty server configuration file name"), @@ -250,11 +261,6 @@ _("Indique si le cache retourne des copies des objets ou des proxies"), "false", Boolean.class, false, false), - WIKITTY_ACCESSSTAT_EXTENSIONS( - "wikitty.service.accessstat.extensions", - _("Indique la liste d'extension dont il faut monitorer l'acces"), - "WikittyPubText,WikittyPubData", String.class, false, false), - WIKITTY_EVENT_PROPAGATE( "wikitty.service.event.propagate", _("Indique si le service d'event propage sur le reseau les evenements"), Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAccessStat.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAccessStat.java 2010-12-10 18:03:19 UTC (rev 594) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAccessStat.java 2010-12-10 18:05:38 UTC (rev 595) @@ -4,13 +4,13 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.StringTokenizer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; @@ -19,6 +19,8 @@ import org.nuiton.wikitty.WikittyTree; import org.nuiton.wikitty.entities.BusinessEntity; import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyAccessStat; +import org.nuiton.wikitty.entities.WikittyAccessStatHelper; import org.nuiton.wikitty.entities.WikittyAccessStatImpl; import org.nuiton.wikitty.entities.WikittyTokenHelper; import org.nuiton.wikitty.entities.WikittyTreeNode; @@ -37,16 +39,60 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(WikittyServiceAccessStat.class); - Set<String> extensions = new HashSet<String>(); + static public interface AccessStatStorage { + /** + * @param ws service that ask stockage + * @param securityToken + * @param stat WikittyAccessStat wikitty + */ + public void store(WikittyServiceAccessStat ws, String securityToken, + Collection<Wikitty> stats); + } - public WikittyServiceAccessStat(ApplicationConfig config, WikittyService service) { + /** store access in wikitty */ + static public class AccessStatStorageWikitty implements AccessStatStorage { + @Override + public void store(WikittyServiceAccessStat ws, String securityToken, + Collection<Wikitty> stats) { + ws.getDelegate().store(securityToken, stats, false); + } + } + /** store access via common-logging, you must configure it to store + "AccessStat" logger correctly for info level */ + static public class AccessStatStorageLog implements AccessStatStorage { + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog("AccessStat"); + @Override + public void store(WikittyServiceAccessStat ws, String securityToken, + Collection<Wikitty> stats) { + for(Wikitty w : stats) { + Date date = WikittyAccessStatHelper.getDate(w); + String token = WikittyAccessStatHelper.getToken(w); + String user = WikittyAccessStatHelper.getUser(w); + String restored = WikittyAccessStatHelper.getRestored(w); + log.info(String.format("[%1$tF %1$tT] in session '%s' user '%s' restore '%s'", date, token, user, restored)); + } + } + } + + protected AccessStatStorage statStorage; + protected Set<String> extensions = new HashSet<String>(); + + public WikittyServiceAccessStat(ApplicationConfig config, WikittyService service, + AccessStatStorage statStorage) { super(service); - List<String> exts = config.getOptionAsList(WikittyConfig.WikittyOption. - WIKITTY_ACCESSSTAT_EXTENSIONS.getKey()).getOption(); - if (log.isInfoEnabled()) { - log.info(String.format("Monitor access to extensions %s", exts)); + this.statStorage = statStorage; + if (statStorage == null) { + log.warn("No AccessStatStorage available, access stat can't work"); + } else { + // if no statStorage, make extensions to never call statStorage + List<String> exts = config.getOptionAsList(WikittyConfig.WikittyOption. + WIKITTY_ACCESSSTAT_EXTENSIONS.getKey()).getOption(); + if (log.isInfoEnabled()) { + log.info(String.format("Monitor access to extensions %s", exts)); + } + extensions.addAll(exts); } - extensions.addAll(exts); } /** @@ -123,6 +169,7 @@ } WikittyAccessStatImpl stat = new WikittyAccessStatImpl(); + stat.setDate(new Date()); stat.setToken(securityToken); stat.setUser(user); stat.setRestored(id); @@ -131,7 +178,7 @@ } } - getDelegate().store(securityToken, stats, false); + statStorage.store(this, securityToken, stats); } @Override Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-12-10 18:03:19 UTC (rev 594) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-12-10 18:05:38 UTC (rev 595) @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -109,6 +110,7 @@ // force add extension to wikitty WikittyTokenHelper.addExtension(wikittyToken); WikittyTokenHelper.setUser(wikittyToken, user.getId()); + WikittyTokenHelper.setDate(wikittyToken, new Date()); ws.store(null, Arrays.asList(wikittyToken), false); log.debug(String.format("token '%s' is for login '%s'", tokenId, login)); Modified: trunk/wikitty-api/src/main/xmi/wikitty.properties =================================================================== --- trunk/wikitty-api/src/main/xmi/wikitty.properties 2010-12-10 18:03:19 UTC (rev 594) +++ trunk/wikitty-api/src/main/xmi/wikitty.properties 2010-12-10 18:05:38 UTC (rev 595) @@ -25,7 +25,7 @@ org.nuiton.wikitty.entities.WikittyAuthorisation.class.tagvalue.version=1.0 org.nuiton.wikitty.entities.WikittyGroup.class.tagvalue.version=1.0 org.nuiton.wikitty.entities.WikittyLabel.class.tagvalue.version=1.0 -org.nuiton.wikitty.entities.WikittyToken.class.tagvalue.version=1.0 +org.nuiton.wikitty.entities.WikittyToken.class.tagvalue.version=2.0 org.nuiton.wikitty.entities.WikittyTreeNode.class.tagvalue.version=2.0 org.nuiton.wikitty.entities.WikittyUser.class.tagvalue.version=1.0 org.nuiton.wikitty.entities.WikittyI18n.class.tagvalue.version=1.0 Modified: trunk/wikitty-api/src/main/xmi/wikitty.zargo =================================================================== (Binary files differ)
participants (1)
-
bpoussin@users.nuiton.org