[Suiviobsmer-commits] r315 - in trunk: . suiviobsmer-business suiviobsmer-business/src/main/filters suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/test/resources suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/resources
Author: fdesbois Date: 2010-02-02 17:25:18 +0000 (Tue, 02 Feb 2010) New Revision: 315 Modified: trunk/changelog.txt trunk/pom.xml trunk/suiviobsmer-business/pom.xml trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java trunk/suiviobsmer-ui/src/main/resources/log4j.properties Log: Evo #1964 : Add log access for activity calendars (only for non admin) Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/changelog.txt 2010-02-02 17:25:18 UTC (rev 315) @@ -7,6 +7,7 @@ Evolutions ++++++++++ +- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page - [fdesbois] Evo #2081 : Log des changement sur plan : manque ancienne valeur effort si modifiée - [fdesbois] Evo #2077 : Export CSV des navires sélectionnés Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/pom.xml 2010-02-02 17:25:18 UTC (rev 315) @@ -102,6 +102,11 @@ </exclusions> </dependency> <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + </dependency> + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.10</version> @@ -127,7 +132,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.2.125</version> + <version>1.2.128</version> </dependency> <dependency> <groupId>postgresql</groupId> Modified: trunk/suiviobsmer-business/pom.xml =================================================================== --- trunk/suiviobsmer-business/pom.xml 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/pom.xml 2010-02-02 17:25:18 UTC (rev 315) @@ -43,6 +43,10 @@ <artifactId>slf4j-log4j12</artifactId> </dependency> <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> @@ -161,7 +165,7 @@ </plugin> </plugins> </build> - + <scm> <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-business/?root=suiviobsmer</url> <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</connection> @@ -169,3 +173,4 @@ </scm> </project> + Modified: trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties =================================================================== --- trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-02-02 17:25:18 UTC (rev 315) @@ -6,14 +6,15 @@ hibernate.connection.username=sa hibernate.connection.password= hibernate.connection.driver_class=org.h2.Driver -hibernate.connection.url=jdbc:h2:file:~/.suiviobsmer/h2data +hibernate.connection.url=jdbc:h2:file:~/.local/wao/h2data -suiviobsmer.log.activityCalendar=${user.home}/.suiviobsmer/log/activity.log +suiviobsmer.log.activityCalendar.access=${user.home}/.local/wao/log/activity-access.log +suiviobsmer.log.activityCalendar.import=${user.home}/.local/wao/log/activity.log ## Config for sending Email suiviobsmer.email.host=smtp.free.fr suiviobsmer.email.port=25 -suiviobsmer.email.from=admin at suiviobsmer.org +suiviobsmer.email.from=admin at wao.org ## Version suiviobsmer.version=0.4.0 \ No newline at end of file Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-02-02 17:25:18 UTC (rev 315) @@ -23,12 +23,18 @@ package fr.ifremer.suiviobsmer; +import fr.ifremer.suiviobsmer.entity.ActivityCalendar; +import java.io.File; +import java.io.IOException; import java.util.Date; import java.util.Properties; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; +import org.apache.log4j.Level; +import org.apache.log4j.PatternLayout; +import org.apache.log4j.RollingFileAppender; import org.hibernate.exception.SQLGrammarException; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; @@ -54,7 +60,10 @@ private static final Logger log = LoggerFactory.getLogger(SuiviObsmerContext.class); - public static final String PROP_FILENAME_LOG_ACTIVITY = "suiviobsmer.log.activityCalendar"; + public static final String PROP_FILENAME_LOG_ACTIVITY_IMPORT = + "suiviobsmer.log.activityCalendar.import"; + public static final String PROP_FILENAME_LOG_ACTIVITY_ACCESS = + "suiviobsmer.log.activityCalendar.access"; public static final String PROP_EMAIL_HOST = "suiviobsmer.email.host"; public static final String PROP_EMAIL_PORT = "suiviobsmer.email.port"; public static final String PROP_EMAIL_FROM = "suiviobsmer.email.from"; @@ -65,6 +74,8 @@ private static boolean activityCalendarImport; + private static org.apache.log4j.Logger activityCalendarAccessLogger; + public static void setRunner(SuiviObsmerRunner run) { if (log.isDebugEnabled()) { log.debug("set runner in context"); @@ -101,6 +112,37 @@ return activityCalendarImport; } + public static void addActivityCalendarAccessLog(String message) throws IOException { + if (activityCalendarAccessLogger == null) { + // Define appender configuration only once + String filename = getProperty(PROP_FILENAME_LOG_ACTIVITY_ACCESS); + + PatternLayout layout = new PatternLayout(); + layout.setConversionPattern("%d %m%n"); + RollingFileAppender appender = new RollingFileAppender(); + appender.setName("ActivityCalendarAccess"); + appender.setFile(filename); + appender.setImmediateFlush(true); + appender.setMaxFileSize("2MB"); + appender.setMaxBackupIndex(10); + appender.setAppend(true); + appender.setThreshold(Level.INFO); + appender.setLayout(layout); + appender.activateOptions(); + + activityCalendarAccessLogger = + org.apache.log4j.Logger.getLogger(ActivityCalendar.class); + + activityCalendarAccessLogger.addAppender(appender); + } + + if (log.isDebugEnabled()) { + log.debug("message : " + message); + } + + activityCalendarAccessLogger.info(message); + } + public static void serviceException(TopiaContext transaction, String message, Exception eee) throws SuiviObsmerException { if (log.isDebugEnabled()) { log.debug("An error occured",eee); Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-02-02 17:25:18 UTC (rev 315) @@ -121,8 +121,8 @@ public ActivityCalendarImport(InputStream input) throws IOException { super(); this.input = input; - String filename = - SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY); + String filename = SuiviObsmerContext.getProperty( + SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT); File file = new File(filename); file.getParentFile().mkdirs(); if (file.exists()) { Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-02 17:25:18 UTC (rev 315) @@ -53,6 +53,8 @@ import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DurationFormatUtils; +import org.apache.log4j.PatternLayout; +import org.apache.log4j.RollingFileAppender; import org.nuiton.topia.TopiaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -561,7 +563,7 @@ } @Override - public ActivityCalendar getLastActivityCalendar(Boat boat) throws SuiviObsmerException { + public ActivityCalendar getLastActivityCalendar(WaoUser user, Boat boat) throws SuiviObsmerException { TopiaContext transaction = null; ActivityCalendar result = null; try { @@ -592,7 +594,15 @@ } } - // TODO-EVO#1964 : Create logging, need user in argument + // Log ActivityCalendar access only for non admin user + if (!user.getAdmin()) { + Company company = user.getCompany(); + SuiviObsmerContext.addActivityCalendarAccessLog( + "Calendrier " + result.getYear() + " du navire " + + boat.getName() + " (" + boat.getImmatriculation() + ") vu " + + "par " + user.getFullName() + " de la société " + + company.getName()); + } transaction.closeContext(); } catch (Exception eee) { @@ -606,7 +616,8 @@ @Override public InputStream getActivityCalendarLogFile() throws FileNotFoundException { InputStream result = null; - String filename = SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY); + String filename = SuiviObsmerContext.getProperty( + SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT); File file = new File(filename); result = new FileInputStream(file); return result; Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-02-02 17:25:18 UTC (rev 315) @@ -103,8 +103,8 @@ t.start(); t.join(); - String filename = - SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY); + String filename = SuiviObsmerContext.getProperty( + SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT); File file = new File(filename); Assert.assertTrue(file.exists()); Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-02 17:25:18 UTC (rev 315) @@ -49,6 +49,9 @@ import fr.ifremer.suiviobsmer.services.ServiceReferential; import fr.ifremer.suiviobsmer.services.ServiceSampling; import fr.ifremer.suiviobsmer.services.ServiceUser; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; @@ -380,10 +383,29 @@ transaction.closeContext(); /** EXEC METHOD **/ + WaoUser user = new WaoUserImpl(); + user.setFirstName("Jean"); + user.setLastName("Michmuche"); + Company company = new CompanyImpl(); + company.setName("TARTANPION"); + user.setCompany(company); - ActivityCalendar result = service.getLastActivityCalendar(boat); + ActivityCalendar result = service.getLastActivityCalendar(user, boat); Assert.assertNotNull(result); Assert.assertEquals(2009, result.getYear()); + + String filename = SuiviObsmerContext.getProperty( + SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_ACCESS); + + File file = new File(filename); + Assert.assertTrue(file.exists()); + + BufferedReader reader = new BufferedReader(new FileReader(file)); + String line = reader.readLine(); + Assert.assertTrue(line.contains("Jean Michmuche")); + Assert.assertTrue(line.contains("TARTANPION")); + Assert.assertTrue(line.contains("TESTBOAT")); + Assert.assertTrue(line.contains("174592")); } } Modified: trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties =================================================================== --- trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties 2010-02-02 17:25:18 UTC (rev 315) @@ -8,4 +8,5 @@ hibernate.connection.driver_class=org.h2.Driver hibernate.connection.url=jdbc:h2:file:target/db/h2data -suiviobsmer.log.activityCalendar=target/log/activity.log +suiviobsmer.log.activityCalendar.import=target/log/activity.log +suiviobsmer.log.activityCalendar.access=target/log/activity-access.log \ No newline at end of file Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-02-02 17:25:18 UTC (rev 315) @@ -27,6 +27,7 @@ import fr.ifremer.suiviobsmer.entity.ActivityProfession; import fr.ifremer.suiviobsmer.entity.ActivityZone; import fr.ifremer.suiviobsmer.entity.Boat; +import fr.ifremer.suiviobsmer.entity.WaoUser; import fr.ifremer.suiviobsmer.services.ServiceBoat; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; import java.util.Collections; @@ -35,6 +36,7 @@ import org.apache.tapestry5.annotations.IncludeStylesheet; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.ioc.annotations.Inject; import org.nuiton.util.DateUtils; import org.slf4j.Logger; @@ -59,6 +61,9 @@ @Inject private ServiceBoat serviceBoat; + @SessionState + private WaoUser user; + private ActivityCalendar activityCalendar; // @Property @@ -102,7 +107,7 @@ if (log.isInfoEnabled()) { log.info("BUSINESS REQUEST [getLastActivityCalendar]"); } - this.activityCalendar = serviceBoat.getLastActivityCalendar(getBoat()); + this.activityCalendar = serviceBoat.getLastActivityCalendar(user, getBoat()); } return activityCalendar; } Modified: trunk/suiviobsmer-ui/src/main/resources/log4j.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-02-02 15:23:17 UTC (rev 314) +++ trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-02-02 17:25:18 UTC (rev 315) @@ -8,7 +8,7 @@ log4j.appender.console.Threshold=INFO log4j.appender.globalfile=org.apache.log4j.RollingFileAppender -log4j.appender.globalfile.File=/var/log/suiviobsmer/suiviobsmer.log +log4j.appender.globalfile.File=/var/log/wao/wao.log log4j.appender.globalfile.MaxFileSize=500KB log4j.appender.globalfile.Append=true log4j.appender.globalfile.MaxBackupIndex=10
participants (1)
-
fdesbois@users.labs.libre-entreprise.org