This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit faf434f4c5981f2ab32d352921b2426d3d361a6f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 14 10:59:16 2015 +0200 Ajout de logs sur les changements de coordonnées dans les objets métiers (refs #7431) --- .../java/fr/ird/observe/entities/Entities.java | 62 ++++++++++++++++++++-- .../entities/longline/ActivityLonglineImpl.java | 20 ++++--- .../observe/entities/longline/SetLonglineImpl.java | 47 ++++++++-------- .../observe/entities/seine/ActivitySeineImpl.java | 14 ++--- .../src/main/java/fr/ird/observe/util/Numbers.java | 17 ++++++ observe-swing/src/main/filters/log4j.properties | 4 +- .../src/main/filters/observe-log4j.properties | 4 +- 7 files changed, 115 insertions(+), 53 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java b/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java index f69517c..f31b317 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java @@ -22,10 +22,18 @@ package fr.ird.observe.entities; * #L% */ +import com.google.common.base.Joiner; +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.ObserveEntityEnum; +import fr.ird.observe.util.Numbers; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaId; @@ -43,6 +51,9 @@ import java.util.Map; */ public class Entities { + /** Logger. */ + private static final Log log = LogFactory.getLog(Entities.class); + public static final ObserveEntityEnum[] REFERENCE_COMMON_ENTITIES = new ObserveEntityEnum[]{ ObserveEntityEnum.VesselSizeCategory, @@ -289,8 +300,7 @@ public class Entities { ObserveEntityEnum.TripLongline }; - public static final ObserveEntityEnum[] ALL_ENTITIES = - ObserveEntityEnum.values(); + public static final ObserveEntityEnum[] ALL_ENTITIES = ObserveEntityEnum.values(); /** * @param klass le type d'entite a tester @@ -353,16 +363,58 @@ public class Entities { public static <E extends TopiaEntity> String getTableName(E entity) { ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entity); - return entityEnum.dbSchemaName()+"."+entityEnum.dbTableName(); + return entityEnum.dbSchemaName() + "." + entityEnum.dbTableName(); } public static boolean isSeineId(String id) { - return id.contains("Seine"); + return id.contains("Seine"); } public static boolean isLonglineId(String id) { - return id.contains("Longline"); + return id.contains("Longline"); + } + + public static void printDebugInformations(String propertyName, Object instance, Integer value) { + printDebugInformations0(propertyName, instance, Numbers.IS_INTEGER_CHANGED_TO_ZERO_OR_NULL, value); + } + + public static void printDebugInformations(String propertyName, Object instance, Float value) { + printDebugInformations0(propertyName, instance, Numbers.IS_FLOAT_CHANGED_TO_ZERO_OR_NULL, value); } + private static <O> void printDebugInformations0(String propertyName, Object instance, Predicate<O> nullPredicate, O value) { + if (log.isDebugEnabled()) { + String debugInformations = String.format("[%s] %s changed to %s", instance, propertyName, value); + if (nullPredicate.apply(value)) { + StackTraceElement[] stackTraceElements = new Throwable().getStackTrace(); + List<StackTraceElement> stackTraceElementList = Lists.newArrayList(stackTraceElements); + // on retire les deux premiers appels (printDebugInformations et printDebugInformations0) + stackTraceElementList.remove(0); + stackTraceElementList.remove(0); + String stackTrace = Joiner.on("\n\t").join(Iterables.filter(Arrays.asList(stackTraceElements), new StackTraceElementPredicate())); + debugInformations += "\n\t" + stackTrace; + } + log.debug(debugInformations); + } + + } + + private static class StackTraceElementPredicate implements Predicate<StackTraceElement> { + + static final ImmutableSet<String> matchingPatterns = ImmutableSet.of("org.nuiton.","fr.ird"); + + @Override + public boolean apply(StackTraceElement input) { + String className = input.getClassName(); + boolean keep = false; + for (String matchingPattern : matchingPatterns) { + if (className.contains(matchingPattern)) { + keep=true; + break; + } + } + return keep; + } + } } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineImpl.java index 3624037..0fcfc73 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineImpl.java @@ -23,23 +23,20 @@ package fr.ird.observe.entities.longline; */ import com.google.common.base.MoreObjects; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.referentiel.longline.VesselActivityLongline; import fr.ird.type.CoordinateHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.DateUtil; import java.util.Date; import java.util.List; +import java.util.Objects; public class ActivityLonglineImpl extends ActivityLonglineAbstract { private static final long serialVersionUID = 1L; - /** Logger. */ - private static final Log log = LogFactory.getLog(ActivityLonglineImpl.class); - private static final String VESSEL_ACTIVITY_ID_FOR_SET = "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.1"; /** @@ -114,8 +111,8 @@ public class ActivityLonglineImpl extends ActivityLonglineAbstract { @Override public synchronized void setQuadrant(Integer quadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Quadrant changed to %s", this, quadrant)); + if (!Objects.equals(this.quadrant, quadrant)){ + Entities.printDebugInformations(PROPERTY_QUADRANT, this, quadrant); } Integer old = this.quadrant; this.quadrant = quadrant; @@ -138,16 +135,17 @@ public class ActivityLonglineImpl extends ActivityLonglineAbstract { @Override public synchronized void setLatitude(Float latitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Latitude changed to %s", this, latitude)); + if (!Objects.equals(this.latitude, latitude)) { + Entities.printDebugInformations(PROPERTY_LATITUDE, this, latitude); } super.setLatitude(latitude); } + @Override public synchronized void setLongitude(Float longitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Longitude changed to %s", this, longitude)); + if (!Objects.equals(this.longitude, longitude)) { + Entities.printDebugInformations(PROPERTY_LONGITUDE, this, longitude); } super.setLongitude(longitude); } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/longline/SetLonglineImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/longline/SetLonglineImpl.java index 357f616..006448c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/longline/SetLonglineImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/longline/SetLonglineImpl.java @@ -23,20 +23,17 @@ package fr.ird.observe.entities.longline; */ import com.google.common.base.MoreObjects; +import fr.ird.observe.entities.Entities; import fr.ird.type.CoordinateHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.DateUtil; import java.util.Date; +import java.util.Objects; public class SetLonglineImpl extends SetLonglineAbstract { private static final long serialVersionUID = 1L; - /** Logger. */ - private static final Log log = LogFactory.getLog(SetLonglineImpl.class); - @Override public void initCoordinates() { @@ -53,8 +50,8 @@ public class SetLonglineImpl extends SetLonglineAbstract { } public void setSettingStartQuadrant(Integer settingStartQuadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingStartQuadrant changed to %s", this, settingStartQuadrant)); + if (!Objects.equals(getSettingStartQuadrant(), settingStartQuadrant)) { + Entities.printDebugInformations(PROPERTY_SETTING_START_QUADRANT, this, settingStartQuadrant); } fireOnPostWrite(PROPERTY_SETTING_START_QUADRANT, null, settingStartQuadrant); } @@ -64,8 +61,8 @@ public class SetLonglineImpl extends SetLonglineAbstract { } public void setSettingEndQuadrant(Integer settingEndQuadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingEndQuadrant changed to %s", this, settingEndQuadrant)); + if (!Objects.equals(getSettingEndQuadrant(), settingEndQuadrant)) { + Entities.printDebugInformations(PROPERTY_SETTING_END_QUADRANT, this, settingEndQuadrant); } fireOnPostWrite(PROPERTY_SETTING_END_QUADRANT, null, settingEndQuadrant); } @@ -75,8 +72,8 @@ public class SetLonglineImpl extends SetLonglineAbstract { } public void setHaulingStartQuadrant(Integer haulingStartQuadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] haulingStartQuadrant changed to %s", this, haulingStartQuadrant)); + if (!Objects.equals(getHaulingStartQuadrant(), haulingStartQuadrant)) { + Entities.printDebugInformations(PROPERTY_HAULING_START_QUADRANT, this, haulingStartQuadrant); } fireOnPostWrite(PROPERTY_HAULING_START_QUADRANT, null, haulingStartQuadrant); } @@ -86,56 +83,56 @@ public class SetLonglineImpl extends SetLonglineAbstract { } public void setHaulingEndQuadrant(Integer haulingEndQuadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] haulingEndQuadrant changed to %s", this, haulingEndQuadrant)); + if (!Objects.equals(getHaulingEndQuadrant(), haulingEndQuadrant)) { + Entities.printDebugInformations(PROPERTY_HAULING_END_QUADRANT, this, haulingEndQuadrant); } fireOnPostWrite(PROPERTY_HAULING_END_QUADRANT, null, haulingEndQuadrant); } @Override public void setSettingStartLongitude(Float settingStartLongitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingStartLongitude changed to %s", this, settingStartLongitude)); + if (!Objects.equals(this.settingStartLongitude, settingStartLongitude)) { + Entities.printDebugInformations(PROPERTY_SETTING_START_LONGITUDE, this, settingStartLongitude); } super.setSettingStartLongitude(settingStartLongitude); } @Override public void setSettingStartLatitude(Float settingStartLatitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingStartLatitude changed to %s", this, settingStartLatitude)); + if (!Objects.equals(this.settingStartLatitude, settingStartLatitude)) { + Entities.printDebugInformations(PROPERTY_SETTING_START_LATITUDE, this, settingStartLatitude); } super.setSettingStartLatitude(settingStartLatitude); } @Override public void setSettingEndLatitude(Float settingEndLatitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingEndLatitude changed to %s", this, settingEndLatitude)); + if (!Objects.equals(this.settingEndLatitude, settingEndLatitude)) { + Entities.printDebugInformations(PROPERTY_SETTING_END_LATITUDE, this, settingEndLatitude); } super.setSettingEndLatitude(settingEndLatitude); } @Override public void setSettingEndLongitude(Float settingEndLongitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] settingEndLongitude changed to %s", this, settingEndLongitude)); + if (!Objects.equals(this.settingEndLongitude, settingEndLongitude)) { + Entities.printDebugInformations(PROPERTY_SETTING_END_LONGITUDE, this, settingEndLongitude); } super.setSettingEndLongitude(settingEndLongitude); } @Override public void setHaulingStartLongitude(Float haulingStartLongitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] haulingStartLongitude changed to %s", this, haulingStartLongitude)); + if (!Objects.equals(this.haulingStartLongitude, haulingStartLongitude)) { + Entities.printDebugInformations(PROPERTY_HAULING_START_LONGITUDE, this, haulingStartLongitude); } super.setHaulingStartLongitude(haulingStartLongitude); } @Override public void setHaulingStartLatitude(Float haulingStartLatitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] haulingStartLatitude changed to %s", this, haulingStartLatitude)); + if (!Objects.equals(this.haulingStartLatitude, haulingStartLatitude)) { + Entities.printDebugInformations(PROPERTY_HAULING_START_LATITUDE, this, haulingStartLatitude); } super.setHaulingStartLatitude(haulingStartLatitude); } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java index 03ec623..9241a8c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java @@ -22,6 +22,7 @@ package fr.ird.observe.entities.seine; import com.google.common.base.MoreObjects; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.constants.seine.SchoolType; import fr.ird.observe.entities.referentiel.seine.VesselActivitySeine; @@ -32,6 +33,7 @@ import org.apache.commons.logging.LogFactory; import java.util.Arrays; import java.util.List; +import java.util.Objects; import static org.nuiton.i18n.I18n.n; @@ -122,8 +124,8 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { @Override public void setQuadrant(Integer quadrant) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Quadrant changed to %s", this, quadrant)); + if (!Objects.equals(this.quadrant, quadrant)) { + Entities.printDebugInformations(PROPERTY_QUADRANT, this, quadrant); } Integer old = this.quadrant; // fireOnPreWrite(PROPERTY_QUADRANT, old, quadrant); @@ -204,16 +206,16 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { @Override public synchronized void setLatitude(Float latitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Latitude changed to %s", this, latitude)); + if (!Objects.equals(this.latitude, latitude)) { + Entities.printDebugInformations(PROPERTY_LATITUDE, this, latitude); } super.setLatitude(latitude); } @Override public synchronized void setLongitude(Float longitude) { - if (log.isDebugEnabled()) { - log.debug(String.format("[%s] Longitude changed to %s", this, longitude)); + if (!Objects.equals(this.longitude, longitude)) { + Entities.printDebugInformations(PROPERTY_LONGITUDE, this, longitude); } super.setLongitude(longitude); } diff --git a/observe-entities/src/main/java/fr/ird/observe/util/Numbers.java b/observe-entities/src/main/java/fr/ird/observe/util/Numbers.java index 54a22b8..8a921ce 100644 --- a/observe-entities/src/main/java/fr/ird/observe/util/Numbers.java +++ b/observe-entities/src/main/java/fr/ird/observe/util/Numbers.java @@ -22,6 +22,7 @@ package fr.ird.observe.util; * #L% */ +import com.google.common.base.Predicate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -36,6 +37,22 @@ import java.math.MathContext; */ public class Numbers { + public static final Predicate<Float> IS_FLOAT_CHANGED_TO_ZERO_OR_NULL = new Predicate<Float>() { + + @Override + public boolean apply(Float input) { + return input == null || Math.abs(round3Digits(input)) < 0.001; + } + }; + + public static final Predicate<Integer> IS_INTEGER_CHANGED_TO_ZERO_OR_NULL = new Predicate<Integer>() { + + @Override + public boolean apply(Integer input) { + return input == null || input == 0; + } + }; + /** Logger. */ private static final Log log = LogFactory.getLog(Numbers.class); diff --git a/observe-swing/src/main/filters/log4j.properties b/observe-swing/src/main/filters/log4j.properties index 480b2f6..849c93f 100644 --- a/observe-swing/src/main/filters/log4j.properties +++ b/observe-swing/src/main/filters/log4j.properties @@ -41,9 +41,7 @@ log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %5p [%t] ( log4j.logger.fr.ird.observe=INFO log4j.logger.fr.ird.observe.db.impl.DataContext=WARN log4j.logger.fr.ird.observe.db.impl.DataService=WARN -log4j.logger.fr.ird.observe.entities.longline.ActivityLonglineImpl=DEBUG -log4j.logger.fr.ird.observe.entities.longline.SetLonglineImpl=DEBUG -log4j.logger.fr.ird.observe.entities.seine.ActivitySeineImpl=DEBUG +log4j.logger.fr.ird.observe.entities.Entities=DEBUG log4j.logger.fr.ird.observe.validation.field=WARN log4j.logger.fr.ird.observe.ui.tree=INFO diff --git a/observe-swing/src/main/filters/observe-log4j.properties b/observe-swing/src/main/filters/observe-log4j.properties index a91c8dc..88e89d2 100644 --- a/observe-swing/src/main/filters/observe-log4j.properties +++ b/observe-swing/src/main/filters/observe-log4j.properties @@ -41,9 +41,7 @@ log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %5p [%t] ( log4j.logger.fr.ird.observe=INFO log4j.logger.fr.ird.observe.db.impl.DataContext=WARN log4j.logger.fr.ird.observe.db.impl.DataService=WARN -log4j.logger.fr.ird.observe.entities.longline.ActivityLonglineImpl=DEBUG -log4j.logger.fr.ird.observe.entities.longline.SetLonglineImpl=DEBUG -log4j.logger.fr.ird.observe.entities.seine.ActivitySeineImpl=DEBUG +log4j.logger.fr.ird.observe.entities.Entities=DEBUG log4j.logger.fr.ird.observe.validation.field=WARN log4j.logger.fr.ird.observe.ui.tree=INFO -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.