r521 - in trunk/tutti-persistence: . src/main/java/fr/ifremer/tutti/persistence/service src/test/java/fr/ifremer/tutti/persistence src/test/java/fr/ifremer/tutti/persistence/service
Author: tchemit Date: 2013-03-03 18:42:58 +0100 (Sun, 03 Mar 2013) New Revision: 521 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/521 Log: fixes #2036: [CAMPAGNE] - Gestion des campagnes - Information saisie partielle non sauvegard?\195?\169e improve test (now really destroy test directories if tests are ok) Added: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java Modified: trunk/tutti-persistence/pom.xml trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java Modified: trunk/tutti-persistence/pom.xml =================================================================== --- trunk/tutti-persistence/pom.xml 2013-03-03 16:57:56 UTC (rev 520) +++ trunk/tutti-persistence/pom.xml 2013-03-03 17:42:58 UTC (rev 521) @@ -231,6 +231,22 @@ </plugin> </plugins> + + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <properties> + <property> + <name>listener</name> + <value>fr.ifremer.tutti.persistence.TuttiRunListener</value> + </property> + </properties> + </configuration> + </plugin> + </plugins> + </pluginManagement> </build> Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-03 16:57:56 UTC (rev 520) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-03 17:42:58 UTC (rev 521) @@ -28,6 +28,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.adagio.core.dao.administration.programStrategy.ProgramDao; +import fr.ifremer.adagio.core.dao.administration.programStrategy.ProgramImpl; import fr.ifremer.adagio.core.dao.administration.user.PersonDao; import fr.ifremer.adagio.core.dao.administration.user.PersonImpl; import fr.ifremer.adagio.core.dao.data.measure.SurveyMeasurement; @@ -335,17 +336,13 @@ } // Name - if (source.getName() == null) { - target.setName(null); - } else if (source.getName() != null) { - target.setName(source.getName()); - } + target.setName(source.getName()); // Program if (source.getProgram() == null || source.getProgram().getId() == null) { target.setProgram(null); } else if (source.getName() != null && source.getProgram().getId() != null) { - target.setProgram(programDao.load(source.getProgram().getId())); + target.setProgram(load(ProgramImpl.class, source.getProgram().getId())); } // Sort Room Managers @@ -355,7 +352,9 @@ List<Person> persons = source.getHeadOfSortRoom(); miscDataBuffer.append(CRUISE_MISC_DATA_SORT_MANAGERS_TAG); for (int i = 0; i < persons.size(); i++) { - if (i > 0) miscDataBuffer.append(','); + if (i > 0) { + miscDataBuffer.append(','); + } miscDataBuffer.append(persons.get(i).getId()); } } @@ -365,7 +364,7 @@ target.setManagerPerson(null); } else if (source.getHeadOfMission() != null && source.getHeadOfMission().size() > 0) { List<Person> persons = source.getHeadOfMission(); - target.setManagerPerson(personDao.load(Integer.valueOf(persons.get(0).getId()))); + target.setManagerPerson(load(PersonImpl.class, Integer.valueOf(persons.get(0).getId()))); if (persons.size() > 1) { //throw new UnsupportedOperationException("Cruise could not yet support more than one vessel."); @@ -478,7 +477,6 @@ fishingTrip.setReturnLocation(locationCountry); } - //FIXME Creer un psfm serie partielle (voir avec vincent + benoit) (PmfmId.SURVEY_PART) setSurveyMeasurement(fishingTrip, enumeration.PMFM_ID_SURVEY_PART, null, source.getSurveyPart(), null); // Gear @@ -528,52 +526,54 @@ } // adapt to surveyMeasurement - protected SurveyMeasurement getSurveyMeasurement(FishingTrip scientificCruise, - Integer pmfmId, - boolean createIfNotExists) { - SurveyMeasurement gearUseMeasurement = null; + protected SurveyMeasurement getOrCreateSurveyMeasurement(FishingTrip fishingTrip, + Integer pmfmId) { + SurveyMeasurement result = null; - for (SurveyMeasurement vum : scientificCruise.getSurveyMeasurements()) { + for (SurveyMeasurement vum : fishingTrip.getSurveyMeasurements()) { if (pmfmId.equals(vum.getPmfm().getId())) { - gearUseMeasurement = vum; + result = vum; break; } } - if (gearUseMeasurement == null) { - if (!createIfNotExists) { - return null; + if (result == null) { + + // create new measurement + result = SurveyMeasurement.Factory.newInstance(); + result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED)); + result.setDepartment(fishingTrip.getRecorderDepartment()); + Pmfm pmfm = load(PmfmImpl.class, pmfmId); + result.setPmfm(pmfm); + result.setFishingTrip(fishingTrip); + + // add it to fishingTrip + if (fishingTrip.getSurveyMeasurements() == null) { + + //create new set of measurements + fishingTrip.setSurveyMeasurements(Sets.<SurveyMeasurement>newHashSet()); } - gearUseMeasurement = SurveyMeasurement.Factory.newInstance(); - if (scientificCruise.getSurveyMeasurements() == null) { - scientificCruise.setSurveyMeasurements(Sets.newHashSet(gearUseMeasurement)); - } else { - scientificCruise.getSurveyMeasurements().add(gearUseMeasurement); - } - gearUseMeasurement.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED)); - gearUseMeasurement.setDepartment(scientificCruise.getRecorderDepartment()); - Pmfm pmfm = (Pmfm) getCurrentSession().load(PmfmImpl.class, pmfmId); - gearUseMeasurement.setPmfm(pmfm); + + fishingTrip.getSurveyMeasurements().add(result); } - - return gearUseMeasurement; + return result; } - protected SurveyMeasurement setSurveyMeasurement(FishingTrip scientificCruise, + protected SurveyMeasurement setSurveyMeasurement(FishingTrip fishingTrip, Integer pmfmId, Float numericalValue, String alphanumericalValue, Integer qualitativevalueId) { - SurveyMeasurement vesselUseMeasurement = getSurveyMeasurement(scientificCruise, pmfmId, true); + SurveyMeasurement result = getOrCreateSurveyMeasurement(fishingTrip, pmfmId); if (alphanumericalValue != null) { - vesselUseMeasurement.setAlphanumericalValue(alphanumericalValue); + result.setAlphanumericalValue(alphanumericalValue); } else if (numericalValue != null) { - vesselUseMeasurement.setNumericalValue(numericalValue); + result.setNumericalValue(numericalValue); } else if (qualitativevalueId != null) { - vesselUseMeasurement.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId)); + result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId)); } - return vesselUseMeasurement; + return result; } } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-03 16:57:56 UTC (rev 520) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-03 17:42:58 UTC (rev 521) @@ -285,8 +285,8 @@ @Override public Vessel getVessel(String vesselCode) { - if (log.isInfoEnabled()) { - log.info("get vessel: " + vesselCode); + if (log.isDebugEnabled()) { + log.debug("get vessel: " + vesselCode); } // Warning : return a list because more than one line could be found, // but 'order by' assume that the first one in the good row Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-03-03 16:57:56 UTC (rev 520) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-03-03 17:42:58 UTC (rev 521) @@ -40,6 +40,7 @@ import org.junit.Assume; import org.junit.rules.TestRule; import org.junit.runner.Description; +import org.junit.runner.notification.Failure; import org.junit.runners.model.Statement; import org.nuiton.util.config.ApplicationConfig; @@ -130,8 +131,6 @@ return new File(resourceDirectory, name); } - boolean witherror = false; - @Override public Statement apply(final Statement base, final Description description) { @@ -141,8 +140,6 @@ before(description); try { base.evaluate(); - } catch (Throwable e) { - witherror = true; } finally { after(description); } @@ -154,6 +151,8 @@ protected void before(Description description) throws Throwable { + TuttiRunListener.beforeClass(description); + testClass = description.getTestClass(); File db = new File("src/test/db"); @@ -295,23 +294,32 @@ log.info("After test " + testClass); } - if (!witherror) { + Set<Failure> failures = TuttiRunListener.getFailuresForClass( + description.getClassName()); + + if (failures.isEmpty()) { + + // can destroy directories for (File file : toDetroy) { if (file.exists()) { if (log.isInfoEnabled()) { log.info("Destroy directory: " + file); } -// try { -// FileUtils.deleteDirectory(file); -// } catch (IOException e) { -// if (log.isErrorEnabled()) { -// log.error("Could not delete directory: " + file, e); -// } -// } + try { + FileUtils.deleteDirectory(file); + } catch (IOException e) { + if (log.isErrorEnabled()) { + log.error("Could not delete directory: " + file, e); + } + } } } + } else { + if (log.isWarnEnabled()) { + log.warn("Won't destroy directories caus of failures in test."); + } + } - } // push back old classLoader if (oldClassLoader != null) { Thread.currentThread().setContextClassLoader(oldClassLoader); Added: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java (rev 0) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java 2013-03-03 17:42:58 UTC (rev 521) @@ -0,0 +1,95 @@ +package fr.ifremer.tutti.persistence; + +/* + * #%L + * Tutti :: Persistence + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.Sets; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.runner.Description; +import org.junit.runner.notification.Failure; +import org.junit.runner.notification.RunListener; + +import java.util.Iterator; +import java.util.Set; + +/** + * Listen JUnit test and keep failures (in order to remove or not directories + * in {@link DatabaseResource}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.2 + */ +public final class TuttiRunListener extends RunListener { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TuttiRunListener.class); + + protected static final Set<Failure> failures = Sets.newHashSet(); + + public static synchronized void beforeClass(Description description) { + + if (log.isDebugEnabled()) { + log.debug("Start to listen test " + description); + } + + Iterator<Failure> iterator = failures.iterator(); + String className = description.getClassName(); + while (iterator.hasNext()) { + Failure failure = iterator.next(); + if (className.equals(failure.getDescription().getClassName())) { + iterator.remove(); + } + } + } + + public static synchronized Set<Failure> getFailuresForClass(String className) { + Set<Failure> result = Sets.newHashSet(); + for (Failure failure : failures) { + if (className.equals(failure.getDescription().getClassName())) { + result.add(failure); + } + } + return result; + } + + @Override + public void testFailure(Failure failure) throws Exception { + if (log.isDebugEnabled()) { + log.debug("Adding failure: " + failure + ", for description: " + failure.getDescription()); + } + failures.add(failure); + super.testFailure(failure); + + } + + @Override + public void testAssumptionFailure(Failure failure) { + if (log.isDebugEnabled()) { + log.debug("Adding assumptionFailure: " + failure + ", for description: " + failure.getDescription()); + } + failures.add(failure); + super.testAssumptionFailure(failure); + } +} Property changes on: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-03 16:57:56 UTC (rev 520) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-03 17:42:58 UTC (rev 521) @@ -35,7 +35,6 @@ import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Test; import java.util.Calendar; @@ -52,8 +51,6 @@ * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -//FIXME-TC solve the surveyPart stuff (http://forge.codelutin.com/issues/2036) -@Ignore public class CruisePersistenceServiceWriteTest { /** Logger. */
participants (1)
-
tchemit@users.forge.codelutin.com