Author: tchemit Date: 2012-08-14 15:04:08 +0200 (Tue, 14 Aug 2012) New Revision: 418 Url: http://forge.codelutin.com/repositories/revision/sammoa/418 Log: use a simple but efficient service layout and much-much more... Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -53,7 +53,6 @@ import fr.ulr.sammoa.persistence.RouteDAO; import fr.ulr.sammoa.persistence.RouteType; import fr.ulr.sammoa.persistence.SammoaDAOHelper; -import fr.ulr.sammoa.persistence.SammoaPersistence; import fr.ulr.sammoa.persistence.Transect; import fr.ulr.sammoa.persistence.TransectDAO; import fr.ulr.sammoa.persistence.TransectFlight; @@ -79,25 +78,17 @@ * * @author fdesbois <desbois@codelutin.com> */ -public class FlightService { +public class FlightService extends SammoaServiceSupport { - private static final Logger logger = LoggerFactory.getLogger(FlightService.class); + private static final Logger logger = + LoggerFactory.getLogger(FlightService.class); - private static final TimeLog timeLog = new TimeLog(FlightService.class, 500, 1000); + private static final TimeLog timeLog = + new TimeLog(FlightService.class, 500, 1000); - protected SammoaContext context; - - protected SammoaConfig config; - - protected SammoaPersistence persistence; - - protected ReferentialService referential; - - public FlightService(SammoaContext context) { - this.context = context; - this.persistence = context.getPersistence(); - this.config = context.getConfig(); - this.referential = context.getReferentialService(); + @Override + public void setSammoaContext(SammoaContext context) { + super.setSammoaContext(context); } public List<Flight> getFlights(Campaign campaign) { @@ -195,8 +186,9 @@ FlightDAO dao = SammoaDAOHelper.getFlightDAO(transaction); result = dao.findByTopiaId(flightId); - Preconditions.checkArgument(result != null, - String.format("%s doesn't exist", flightId)); + Preconditions.checkArgument( + result != null, + String.format("%s doesn't exist", flightId)); if (logger.isInfoEnabled()) { logger.info("Loading flight {} [{}]", @@ -315,7 +307,8 @@ } - public List<GeoPoint> getFlightGeoPoints(TopiaContext transaction, Flight flight) { + public List<GeoPoint> getFlightGeoPoints(TopiaContext transaction, + Flight flight) { List<GeoPoint> result; @@ -379,7 +372,9 @@ * @param transects The list of transect to add * @return the resulting TransectFlight added */ - public List<TransectFlight> addTransects(Flight flight, int fromIndex, Iterable<Transect> transects) { + public List<TransectFlight> addTransects(Flight flight, + int fromIndex, + Iterable<Transect> transects) { List<TransectFlight> result = Lists.newArrayList(); @@ -546,7 +541,8 @@ } } - public List<Observation> getObservations(TopiaContext transaction, Flight flight) { + public List<Observation> getObservations(TopiaContext transaction, + Flight flight) { List<Observation> result; try { @@ -566,7 +562,8 @@ Observer observer, Position position) { - Collection<ObserverPosition> observerPositions = route.getObserverPosition(); + Collection<ObserverPosition> observerPositions = + route.getObserverPosition(); TopiaContext transaction = persistence.beginTransaction(); try { @@ -574,7 +571,8 @@ SammoaDAOHelper.getObserverPositionDAO(transaction); ObserverPosition observerPosition = - Iterables.find(observerPositions, ObserverPositions.withPosition(position)); + Iterables.find(observerPositions, + ObserverPositions.withPosition(position)); // Apply switch on the other observer position with the observer if (observer != null) { @@ -583,7 +581,9 @@ Observer oldObserver = observerPosition.getObserver(); ObserverPosition otherObserverPosition = - Iterables.find(observerPositions, ObserverPositions.withObserver(observer), null); + Iterables.find(observerPositions, + ObserverPositions.withObserver(observer), + null); if (otherObserverPosition != null) { otherObserverPosition.setObserver(oldObserver); @@ -623,7 +623,8 @@ SammoaDAOHelper.getTransectFlightDAO(transaction); TransectFlight result = - transectFlightDAO.create(TransectFlight.PROPERTY_TRANSECT, transect); + transectFlightDAO.create(TransectFlight.PROPERTY_TRANSECT, + transect); int crossingNumber = transect.getNbTimes() + 1; result.setCrossingNumber(crossingNumber); @@ -632,9 +633,11 @@ // Update transect for nbTimes TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction); transectDAO.update(transect); - logger.debug("Transect {} saved with nbTimes = {}", transect.getName(), crossingNumber); + logger.debug("Transect {} saved with nbTimes = {}", + transect.getName(), crossingNumber); - Collection<ObserverPosition> observerPositions = createObserverPositions(transaction, flight); + Collection<ObserverPosition> observerPositions = + createObserverPositions(transaction, flight); result.setObserverPosition(observerPositions); return result; @@ -666,7 +669,12 @@ Route previousRoute) throws TopiaException { - Route result = createRoute(transaction, flight, beginTime, RouteType.TRANSIT, previousRoute, null); + Route result = createRoute(transaction, + flight, + beginTime, + RouteType.TRANSIT, + previousRoute, + null); return result; } @@ -677,9 +685,16 @@ TransectFlight transectFlight) throws TopiaException { - Preconditions.checkArgument(transectFlight != null, "You can't create a leg without any transect"); + Preconditions.checkArgument( + transectFlight != null, + "You can't create a leg without any transect"); - Route result = createRoute(transaction, flight, beginTime, RouteType.LEG, previousRoute, transectFlight); + Route result = createRoute(transaction, + flight, + beginTime, + RouteType.LEG, + previousRoute, + transectFlight); RouteDAO dao = SammoaDAOHelper.getRouteDAO(transaction); @@ -698,9 +713,17 @@ Observation circleBackCause) throws TopiaException { - Preconditions.checkArgument(circleBackCause != null, "You can't create a route without any observation cause"); + Preconditions.checkArgument( + circleBackCause != null, + "You can't create a route without any observation cause"); - Route result = createRoute(transaction, flight, beginTime, RouteType.CIRCLE_BACK, previousRoute, null); + Route result = createRoute(transaction, + flight, + beginTime, + RouteType.CIRCLE_BACK, + previousRoute, + null); + result.setCircleBackCause(circleBackCause); return result; @@ -849,16 +872,17 @@ return result; } - protected void debugObserverPositions(String title, Iterable<ObserverPosition> observerPositions) { + protected void debugObserverPositions(String title, + Iterable<ObserverPosition> observerPositions) { if (logger.isTraceEnabled()) { logger.trace("ObserverPosition : " + title); for (ObserverPosition elmt : observerPositions) { - logger.trace(String.format( - "ObserverPosition : %s, %s, %s", - elmt.getTopiaId(), - (elmt.getObserver() != null ? elmt.getObserver().getInitials() : "N/A"), - elmt.getPosition()) + logger.trace( + "ObserverPosition : {}, {}, {}", + new Object[]{elmt.getTopiaId(), + (elmt.getObserver() != null ? elmt.getObserver().getInitials() : "N/A"), + elmt.getPosition()} ); } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -34,7 +34,6 @@ import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.RegionDAO; import fr.ulr.sammoa.persistence.SammoaDAOHelper; -import fr.ulr.sammoa.persistence.SammoaPersistence; import fr.ulr.sammoa.persistence.Species; import fr.ulr.sammoa.persistence.SpeciesDAO; import fr.ulr.sammoa.persistence.Strate; @@ -55,20 +54,8 @@ * * @author fdesbois <desbois@codelutin.com> */ -public class ReferentialService { +public class ReferentialService extends SammoaServiceSupport { - protected SammoaContext context; - - protected SammoaConfig config; - - protected SammoaPersistence persistence; - - public ReferentialService(SammoaContext context) { - this.context = context; - this.persistence = context.getPersistence(); - this.config = context.getConfig(); - } - public List<Region> getRegions() { List<Region> result; @@ -137,81 +124,6 @@ return result; } -// public int importSpecies(String regionId, File file) throws IOException { -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// -// try { -// int result = 0; -// -// TopiaContext transaction = persistence.beginTransaction(); -// try { -// -// Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId); -// Preconditions.checkNotNull(region); -// -// SpeciesDAO dao = -// SammoaDAOHelper.getSpeciesDAO(transaction); -// -// SpeciesImportModel model = new SpeciesImportModel(region); -// -// Import<Species> importCsv = Import.newImport(model, reader); -// -// for (Species species : importCsv) { -// -// // while importing a species, it does become valid -// species.setLocalCreation(false); -// -// Species speciesExists = -// dao.findByNaturalId(species.getCode(), -// species.getRegion()); -// -// if (speciesExists == null) { -// -// dao.create(species); -// -// result++; -// -// if (logger.isDebugEnabled()) { -// logger.debug(String.format("Create new species %1$s " + -// "for region %2$s", -// species.getCode(), -// region.getCode())); -// } -// -// } else { -// -// speciesExists.setCommonName(species.getCommonName()); -// speciesExists.setLatinName(species.getLatinName()); -// speciesExists.setGroupName(species.getGroupName()); -// speciesExists.setFamily(species.getFamily()); -// speciesExists.setType(species.getType()); -// dao.update(speciesExists); -// -// if (logger.isInfoEnabled()) { -// logger.info(String.format("The species %1$s already " + -// "exists and is updated", -// species.getCode())); -// } -// } -// } -// -// transaction.commitTransaction(); -// -// } catch (TopiaException e) { -// throw new TopiaRuntimeException(e); -// -// } finally { -// persistence.endTransaction(transaction); -// } -// reader.close(); -// -// return result; -// } finally { -// IOUtils.closeQuietly(reader); -// } -// } - public List<Campaign> getCampaigns() { List<Campaign> result; @@ -386,101 +298,6 @@ } } -// public int importTransects(String campaignId, Iterable<Transect> transects) { -// -// int result = 0; -// -// TopiaContext transaction = persistence.beginTransaction(); -// try { -// -// CampaignDAO campaignDAO = -// SammoaDAOHelper.getCampaignDAO(transaction); -// -// Campaign campaign = campaignDAO.findByTopiaId(campaignId); -// Preconditions.checkArgument(campaign != null, -// "The topiaId : " + campaignId + " doesn't match any existing campaign"); -// -// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction); -// TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction); -// -// // Retrieve directly all strates to avoid multiple select queries to find strates -// List<Strate> strates = strateDAO.findAllByCampaignOrderedByCode(campaign); -// Map<String, Strate> strateMap = -// Maps.uniqueIndex(strates, Strates.toCode()); -// -// int rowIndex = 0; -// for (Transect transect : transects) { -// -// // This is the link with the source shape file that contains graphic elements -// int graphicIndex = rowIndex; -// -// rowIndex++; -// -// String strateCode = Strates.getCode(transect.getStrate()); -// -// // We check the strate, it must exist -// // We can't do that in TransectImportModel during parsing because -// // we need two params : sectorNumber and strateType to create the -// // strateCode and check the existence. It must be done after parsing -// Strate existStrate = strateMap.get(strateCode); -// if (existStrate == null) { -// throw new ImportRuntimeException(String.format( -// "Unable to read line %1$d : The strate %2$s doesn't exist", -// rowIndex, -// strateCode) -// ); -// } -// -// Transect existTransect = transectDAO.findByNaturalId(transect.getName(), existStrate); -// -// // If the existing strate is null, create it otherwise ignore -// if (existTransect == null) { -// -// Transect newTransect = transectDAO.createByNaturalId(transect.getName(), existStrate); -// newTransect.setLength(transect.getLength()); -// newTransect.setStartX(transect.getStartX()); -// newTransect.setStartY(transect.getStartY()); -// newTransect.setEndX(transect.getEndX()); -// newTransect.setEndY(transect.getEndY()); -// newTransect.setNbTimes(transect.getNbTimes()); -// newTransect.setGraphicIndex(graphicIndex); -// -// result++; -// -// if (logger.isDebugEnabled()) { -// logger.debug(String.format("Create new transect %1$s" + -// "(graphicIndex = %2$d)", -// newTransect.getName(), -// graphicIndex) -// ); -// } -// -// } else { -// -// existTransect.setGraphicIndex(graphicIndex); -// -// if (logger.isWarnEnabled()) { -// logger.warn(String.format("The transect %1$s already " + -// "exists and will be ignored " + -// "(graphicIndex = %2$d)", -// existTransect.getName(), -// graphicIndex) -// ); -// } -// } -// } -// -// transaction.commitTransaction(); -// -// } catch (TopiaException e) { -// throw new TopiaRuntimeException(e); -// -// } finally { -// persistence.endTransaction(transaction); -// } -// return result; -// } - public String createTransect(Transect transect) { Preconditions.checkArgument(transect != null); @@ -494,10 +311,12 @@ TransectDAO dao = SammoaDAOHelper.getTransectDAO(transaction); - Transect existTransect = dao.findByNaturalId(transect.getName(), transect.getStrate()); + Transect existTransect = dao.findByNaturalId(transect.getName(), + transect.getStrate()); Preconditions.checkArgument(existTransect == null); - Transect newTransect = dao.createByNaturalId(transect.getName(), transect.getStrate()); + Transect newTransect = dao.createByNaturalId(transect.getName(), + transect.getStrate()); newTransect.setLocalCreation(true); result = newTransect.getTopiaId(); @@ -533,88 +352,6 @@ return result; } -// public int importStrates(String campaignId, Iterable<Strate> strates) { -// -// int result = 0; -// -// TopiaContext transaction = persistence.beginTransaction(); -// try { -// -// CampaignDAO campaignDAO = -// SammoaDAOHelper.getCampaignDAO(transaction); -// -// Campaign campaign = campaignDAO.findByTopiaId(campaignId); -// Preconditions.checkArgument(campaign != null, -// "The topiaId : " + campaignId + " doesn't match any existing campaign"); -// -// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction); -// SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction); -// -// // Retrieve directly all sectors to avoid multiple select queries to find sectors -// List<Sector> sectors = sectorDAO.findAllByCampaign(campaign); -// Map<Integer, Sector> sectorMap = -// Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber())); -// -// for (Strate strate : strates) { -// -// StrateType strateType = strate.getStrateType(); -// Sector sector = strate.getSector(); -// int sectorNumber = sector.getSectorNumber(); -// -// Strate existStrate; -// -// // Create sector if necessary -// Sector existSector = sectorMap.get(sectorNumber); -// if (existSector == null) { -// -// existSector = sectorDAO.createByNaturalId(sectorNumber, campaign); -// existSector.setName(sector.getName()); -// sectorMap.put(sectorNumber, existSector); -// -// existStrate = null; -// -// } else { -// -// // Find existing strate only if sector is not created -// existStrate = strateDAO.findByNaturalId(strateType, existSector); -// } -// -// // If the existing strate is null, create it otherwise ignore -// if (existStrate == null) { -// -// Strate newStrate = strateDAO.createByNaturalId(strateType, existSector); -// newStrate.setCode(Strates.getCode(newStrate)); -// newStrate.setName(strate.getName()); -// -// result++; -// -// if (logger.isDebugEnabled()) { -// logger.debug(String.format("Create new strate %1$s", -// newStrate.getCode()) -// ); -// } -// -// } else { -// -// if (logger.isWarnEnabled()) { -// logger.warn(String.format("The strate %1$s already " + -// "exists and will be ignored", -// existStrate.getCode())); -// } -// } -// } -// -// transaction.commitTransaction(); -// -// } catch (TopiaException e) { -// throw new TopiaRuntimeException(e); -// -// } finally { -// persistence.endTransaction(transaction); -// } -// return result; -// } - public List<Observer> getAllObservers(Campaign campaign) { List<Observer> result; @@ -640,76 +377,4 @@ return result; } -// public int importObservers(String campaignId, File file) throws IOException { -// -// Reader reader = Files.newReader(file, Charsets.UTF_8); -// -// try { -// int result = 0; -// TopiaContext transaction = persistence.beginTransaction(); -// try { -// -// Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId); -// Preconditions.checkNotNull(campaign); -// -// ObserverDAO observerDAO = -// SammoaDAOHelper.getObserverDAO(transaction); -// -// ObserverImportModel model = new ObserverImportModel(campaign); -// -// Import<Observer> importCsv = Import.newImport(model, reader); -// -// for (Observer anImportCsv : importCsv) { -// -// Observer observer; -// -// observer = anImportCsv; -// -// Observer observerExists = -// observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign()); -// -// if (observerExists == null) { -// -// observerDAO.create(observer); -// -// result++; -// -// if (logger.isDebugEnabled()) { -// logger.debug(String.format("Create new observer %1$s " + -// "for campaign %2$s", -// observer.getInitials(), -// campaign.getCode())); -// } -// -// } else { -// -// observerExists.setEmail(observer.getEmail()); -// observerExists.setFirstName(observer.getFirstName()); -// observerExists.setLastName(observer.getLastName()); -// observerExists.setOrganization(observer.getOrganization()); -// observerExists.setPilot(observer.isPilot()); -// observerDAO.update(observerExists); -// -// if (logger.isInfoEnabled()) { -// logger.info(String.format("The observer %1$s already " + -// "exists and is updated", -// observer.getInitials())); -// } -// } -// } -// -// transaction.commitTransaction(); -// -// } catch (TopiaException e) { -// throw new TopiaRuntimeException(e); -// -// } finally { -// persistence.endTransaction(transaction); -// } -// reader.close(); -// return result; -// } finally { -// IOUtils.closeQuietly(reader); -// } -// } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-14 13:04:08 UTC (rev 418) @@ -199,11 +199,11 @@ return result; } - /** @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value */ - public File getAudioDirectory() { - File result = getOrCreateDirectory(SammoaConfigOption.AUDIO_DIRECTORY); - return result; - } +// /** @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value */ +// public File getAudioDirectory() { +// File result = getOrCreateDirectory(SammoaConfigOption.AUDIO_DIRECTORY); +// return result; +// } /** @return {@link SammoaConfigOption#SYSTEM_ID} value */ public String getSystemId() { @@ -308,7 +308,8 @@ } public File getCampaignDirectory() { - return new File(getDataDirectory(), "campaign"); + File result = getOrCreateDirectory(SammoaConfigOption.CAMPAIGN_DIRECTORY); + return result; } /** @@ -325,6 +326,11 @@ "${user.home}/.sammoa", File.class ), + CAMPAIGN_DIRECTORY("campaign.directory", + n_("sammoa.config.campaign.directory"), + "${data.directory}/campaign", + File.class + ), LOG_FILE("log.file", n_("sammoa.config.log.file"), "${data.directory}/log/sammoa.log", @@ -357,12 +363,6 @@ "fdesbois@codelutin.com", String.class ), - /** Directory where audio files will be stored */ - AUDIO_DIRECTORY("audio.directory", - n_("sammoa.config.audio.directory"), - "${data.directory}/audio", - File.class - ), /** The id/name of the current system/computer */ SYSTEM_ID("system.id", n_("sammoa.config.system.id"), @@ -381,18 +381,6 @@ "shape/vmap_area_thin.shp", File.class ), -// /** The strates shape file */ -// STRATE_SHAPE_FILE("strate.shape.file", -// n_("sammoa.config.strate.shape.file"), -// "${data.directory}/map/strates.shp", -// File.class -// ), -// /** The transects shape file */ -// TRANSECT_SHAPE_FILE("transect.shape.file", -// n_("sammoa.config.transect.shape.file"), -// "${data.directory}/map/transects.shp", -// File.class -// ), /** The auto commit delay for {@link AutoSaveListener} */ AUTO_COMMIT_DELAY("auto.commit.delay", n_("sammoa.config.flight.number"), Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-14 13:04:08 UTC (rev 418) @@ -24,10 +24,11 @@ */ package fr.ulr.sammoa.application; -import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService; -import fr.ulr.sammoa.application.io.output.map.ExportMapService; +import com.google.common.base.Preconditions; import fr.ulr.sammoa.persistence.SammoaPersistence; +import java.lang.reflect.Constructor; + /** * Created: 08/06/12 * @@ -45,8 +46,6 @@ protected ReferentialService referentialService; - protected ExportMapService exportMapService; - public SammoaContext(SammoaConfig config) { this(config, new SammoaPersistence( config.getApplicationConfig().getFlatOptions(), @@ -67,31 +66,34 @@ return persistence; } + public <S extends SammoaService> S newService(Class<S> serviceType) { + + try { + Constructor<S> constructor = serviceType.getConstructor(); + Preconditions.checkNotNull(constructor); + S s = constructor.newInstance(); + s.setSammoaContext(this); + return s; + } catch (Exception e) { + throw new SammoaTechnicalException( + "Could not instanciate service " + serviceType, e); + } + } + public FlightService getFlightService() { if (flightService == null) { - flightService = new FlightService(this); + flightService = newService(FlightService.class); } return flightService; } public ReferentialService getReferentialService() { if (referentialService == null) { - referentialService = new ReferentialService(this); + referentialService = newService(ReferentialService.class); } return referentialService; } - public ExportMapService getExportMapService() { - if (exportMapService == null) { - exportMapService = new ExportMapService(this); - } - return exportMapService; - } - - public ExportApplicationService newExportApplicationService() { - return new ExportApplicationService(this); - } - public void open() { persistence.open( config.getApplicationConfig().getFlatOptions(), Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,43 @@ +package fr.ulr.sammoa.application; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ + +/** + * Contract for any saommoa service. + * <p/> + * This contract just allow to inject the {@link SammoaContext} in your service. + * <p/> + * A default support implement in given: {@link SammoaServiceSupport}. + * <p/> + * To use a such service, you should not instanciate it by your self but prefer + * use the servie factory method: {@link SammoaContext#newService(Class)}. + * + * @author tchemit <chemit@codelutin.com> + * @see SammoaServiceSupport + * @since 0.6 + */ +public interface SammoaService { + + void setSammoaContext(SammoaContext context); +} Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,69 @@ +package fr.ulr.sammoa.application; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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 fr.ulr.sammoa.persistence.SammoaPersistence; +import org.nuiton.topia.TopiaContext; + +/** + * Sammoa service support. + * <p/> + * This simple implementation of {@link SammoaService}, offer to keep the + * {@link #context}, {@link #config} and {@link #persistence} obejcts. + * <p/> + * <strong>Note:</strong> should be used for any service! and never + * instanciated by hand but via {@link SammoaContext#newService(Class)} method. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class SammoaServiceSupport implements SammoaService { + + protected SammoaContext context; + + protected SammoaConfig config; + + protected SammoaPersistence persistence; + + + public <S extends SammoaService> S newService(Class<S> serviceType) { + return context.newService(serviceType); + } + + protected TopiaContext beginTransaction() { + TopiaContext tx = persistence.beginTransaction(); + return tx; + } + + protected void endTransaction(TopiaContext tx) { + persistence.endTransaction(tx); + } + + @Override + public void setSammoaContext(SammoaContext context) { + this.context = context; + this.persistence = context.getPersistence(); + this.config = context.getConfig(); + } +} Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-14 13:04:08 UTC (rev 418) @@ -188,7 +188,6 @@ * <ul> * <li>add()</li> * <li>{@link #circleBack(Observation)}</li> - * <li>{@link #next()}</li> * <li>{@link #observation(Position)}</li> * <li>{@link #end()}</li> * <li>{@link #stop()}</li> Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-14 13:04:08 UTC (rev 418) @@ -116,7 +116,7 @@ this.flight = flight; this.persistence = context.getPersistence(); - this.service = context.getFlightService(); + this.service = context.newService(FlightService.class); this.currentRoute = service.getLastRoute(flight); this.lastTransect = service.getLastTransectDone(flight); @@ -278,7 +278,8 @@ } if (logger.isInfoEnabled()) { - logger.info("Initialize the FlightController for flight " + flight.getFlightNumber()); + logger.info("Initialize the FlightController for flight {}", + flight.getFlightNumber()); } initialized = true; Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-14 13:04:08 UTC (rev 418) @@ -62,7 +62,6 @@ /** Properties of the campaign. */ protected final Properties properties; - public CampaignStorage(File dataDirectory, String campaignId) { this.directory = new File(dataDirectory, campaignId); this.campaignId = campaignId; @@ -81,6 +80,10 @@ return new File(directory, "map"); } + public File getMapFile(String mapFilename) { + return new File(getMapDirectory(), mapFilename); + } + public File getFlightDirectory() { return new File(directory, "flight"); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-14 13:04:08 UTC (rev 418) @@ -70,6 +70,7 @@ public File getAudioFile(String filename) { return new File(getAudioDirectory(), filename); } + public File getPropertiesFile() { return new File(directory, "flight.properties"); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -25,13 +25,14 @@ import com.google.common.base.Preconditions; import com.google.common.io.Files; -import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.CampaignDAO; import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.ObserverDAO; import fr.ulr.sammoa.persistence.Region; +import fr.ulr.sammoa.persistence.RegionDAO; import fr.ulr.sammoa.persistence.SammoaDAOHelper; -import fr.ulr.sammoa.persistence.SammoaPersistence; import fr.ulr.sammoa.persistence.Species; import fr.ulr.sammoa.persistence.SpeciesDAO; import org.apache.commons.io.Charsets; @@ -53,17 +54,11 @@ * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class ImportCsvService { +public class ImportCsvService extends SammoaServiceSupport { private static final Logger logger = LoggerFactory.getLogger(ImportCsvService.class); - protected SammoaPersistence persistence; - - public ImportCsvService(SammoaContext context) { - this.persistence = context.getPersistence(); - } - public int importSpecies(String regionId, File file) throws IOException { Reader reader = Files.newReader(file, Charsets.UTF_8); @@ -74,11 +69,12 @@ TopiaContext transaction = persistence.beginTransaction(); try { - Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId); + RegionDAO regionDAO = SammoaDAOHelper.getRegionDAO(transaction); + Region region = regionDAO.findByTopiaId(regionId); Preconditions.checkNotNull(region); + String regionCode = region.getCode(); - SpeciesDAO dao = - SammoaDAOHelper.getSpeciesDAO(transaction); + SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction); SpeciesImportModel model = new SpeciesImportModel(region); @@ -86,40 +82,10 @@ for (Species species : importCsv) { - // while importing a species, it does become valid - species.setLocalCreation(false); + boolean isNew = importSpecies(dao, species, regionCode); - Species speciesExists = - dao.findByNaturalId(species.getCode(), - species.getRegion()); - - if (speciesExists == null) { - - dao.create(species); - + if (isNew) { result++; - - if (logger.isDebugEnabled()) { - logger.debug(String.format("Create new species %1$s " + - "for region %2$s", - species.getCode(), - region.getCode())); - } - - } else { - - speciesExists.setCommonName(species.getCommonName()); - speciesExists.setLatinName(species.getLatinName()); - speciesExists.setGroupName(species.getGroupName()); - speciesExists.setFamily(species.getFamily()); - speciesExists.setType(species.getType()); - dao.update(speciesExists); - - if (logger.isInfoEnabled()) { - logger.info(String.format("The species %1$s already " + - "exists and is updated", - species.getCode())); - } } } @@ -132,13 +98,54 @@ persistence.endTransaction(transaction); } reader.close(); - return result; } finally { IOUtils.closeQuietly(reader); } } + protected boolean importSpecies(SpeciesDAO dao, + Species species, + String regionCode) throws TopiaException { + // while importing a species, it does become valid + species.setLocalCreation(false); + + Species speciesExists = + dao.findByNaturalId(species.getCode(), + species.getRegion()); + + boolean newSpecies = false; + if (speciesExists == null) { + + dao.create(species); + + newSpecies = true; + + if (logger.isDebugEnabled()) { + logger.debug( + "Create new species {} for region {}", + species.getCode(), regionCode); + } + + } else { + + speciesExists.setCommonName(species.getCommonName()); + speciesExists.setLatinName(species.getLatinName()); + speciesExists.setGroupName(species.getGroupName()); + speciesExists.setFamily(species.getFamily()); + speciesExists.setType(species.getType()); + dao.update(speciesExists); + + if (logger.isInfoEnabled()) { + logger.info( + "The species {} already exists and is updated", + species.getCode()); + } + } + + return newSpecies; + } + public int importObservers(String campaignId, File file) throws IOException { Reader reader = Files.newReader(file, Charsets.UTF_8); @@ -148,52 +155,23 @@ TopiaContext transaction = persistence.beginTransaction(); try { - Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId); + CampaignDAO campaignDAO = SammoaDAOHelper.getCampaignDAO(transaction); + Campaign campaign = campaignDAO.findByTopiaId(campaignId); Preconditions.checkNotNull(campaign); + String campaignCode = campaign.getCode(); - ObserverDAO observerDAO = - SammoaDAOHelper.getObserverDAO(transaction); + ObserverDAO dao = SammoaDAOHelper.getObserverDAO(transaction); ObserverImportModel model = new ObserverImportModel(campaign); Import<Observer> importCsv = Import.newImport(model, reader); - for (Observer anImportCsv : importCsv) { + for (Observer observer : importCsv) { - Observer observer; + boolean isNew = importObserver(dao, observer, campaignCode); - observer = anImportCsv; - - Observer observerExists = - observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign()); - - if (observerExists == null) { - - observerDAO.create(observer); - + if (isNew) { result++; - - if (logger.isDebugEnabled()) { - logger.debug(String.format("Create new observer %1$s " + - "for campaign %2$s", - observer.getInitials(), - campaign.getCode())); - } - - } else { - - observerExists.setEmail(observer.getEmail()); - observerExists.setFirstName(observer.getFirstName()); - observerExists.setLastName(observer.getLastName()); - observerExists.setOrganization(observer.getOrganization()); - observerExists.setPilot(observer.isPilot()); - observerDAO.update(observerExists); - - if (logger.isInfoEnabled()) { - logger.info(String.format("The observer %1$s already " + - "exists and is updated", - observer.getInitials())); - } } } @@ -211,4 +189,43 @@ IOUtils.closeQuietly(reader); } } + + protected boolean importObserver(ObserverDAO dao, + Observer observer, + String campaignCode) throws TopiaException { + boolean newEntity = false; + + Observer observerExists = dao.findByNaturalId(observer.getInitials(), + observer.getCampaign()); + + if (observerExists == null) { + + dao.create(observer); + + newEntity = true; + + if (logger.isDebugEnabled()) { + + logger.debug( + "Create new observer {} for campaign {}", + observer.getInitials(), campaignCode); + } + + } else { + + observerExists.setEmail(observer.getEmail()); + observerExists.setFirstName(observer.getFirstName()); + observerExists.setLastName(observer.getLastName()); + observerExists.setOrganization(observer.getOrganization()); + observerExists.setPilot(observer.isPilot()); + dao.update(observerExists); + + if (logger.isInfoEnabled()) { + logger.info( + "The observer {} already exists and is updated", + observer.getInitials()); + } + } + return newEntity; + } } Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,28 @@ +/** + * Base package for csv imports. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io.input.csv;/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -25,11 +25,10 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; -import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.persistence.Campaign; import fr.ulr.sammoa.persistence.CampaignDAO; import fr.ulr.sammoa.persistence.SammoaDAOHelper; -import fr.ulr.sammoa.persistence.SammoaPersistence; import fr.ulr.sammoa.persistence.Sector; import fr.ulr.sammoa.persistence.SectorDAO; import fr.ulr.sammoa.persistence.Sectors; @@ -55,18 +54,12 @@ * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class ImportMapService { +public class ImportMapService extends SammoaServiceSupport { private static final Logger logger = LoggerFactory.getLogger(ImportMapService.class); - protected SammoaPersistence persistence; - - public ImportMapService(SammoaContext context) { - this.persistence = context.getPersistence(); - } - public int importTransects(String campaignId, Iterable<Transect> transects) { int result = 0; @@ -79,7 +72,8 @@ Campaign campaign = campaignDAO.findByTopiaId(campaignId); Preconditions.checkArgument(campaign != null, - "The topiaId : " + campaignId + " doesn't match any existing campaign"); + "The topiaId : " + campaignId + + " doesn't match any existing campaign"); StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction); TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction); @@ -129,10 +123,10 @@ result++; if (logger.isDebugEnabled()) { - logger.debug(String.format("Create new transect %1$s" + - "(graphicIndex = %2$d)", - newTransect.getName(), - graphicIndex) + logger.debug("Create new transect {}" + + "(graphicIndex = {})", + newTransect.getName(), + graphicIndex ); } @@ -141,11 +135,11 @@ existTransect.setGraphicIndex(graphicIndex); if (logger.isWarnEnabled()) { - logger.warn(String.format("The transect %1$s already " + - "exists and will be ignored " + - "(graphicIndex = %2$d)", - existTransect.getName(), - graphicIndex) + logger.warn("The transect {} already " + + "exists and will be ignored " + + "(graphicIndex = {})", + existTransect.getName(), + graphicIndex ); } } @@ -174,7 +168,8 @@ Campaign campaign = campaignDAO.findByTopiaId(campaignId); Preconditions.checkArgument(campaign != null, - "The topiaId : " + campaignId + " doesn't match any existing campaign"); + "The topiaId : " + campaignId + + " doesn't match any existing campaign"); StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction); SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction); @@ -182,7 +177,8 @@ // Retrieve directly all sectors to avoid multiple select queries to find sectors List<Sector> sectors = sectorDAO.findAllByCampaign(campaign); Map<Integer, Sector> sectorMap = - Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber())); + Maps.newHashMap(Maps.uniqueIndex(sectors, + Sectors.toSectorNumber())); for (Strate strate : strates) { @@ -218,17 +214,17 @@ result++; if (logger.isDebugEnabled()) { - logger.debug(String.format("Create new strate %1$s", - newStrate.getCode()) + logger.debug("Create new strate {}", + newStrate.getCode() ); } } else { if (logger.isWarnEnabled()) { - logger.warn(String.format("The strate %1$s already " + - "exists and will be ignored", - existStrate.getCode())); + logger.warn("The strate {} already " + + "exists and will be ignored", + existStrate.getCode()); } } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-14 13:04:08 UTC (rev 418) @@ -47,15 +47,21 @@ private static final Logger logger = LoggerFactory.getLogger(ShpImporter.class); + protected final ImportModel<E> model; + + protected final String copyFileName; + + public ShpImporter(ImportModel<E> model, String copyFileName) { + this.model = model; + this.copyFileName = copyFileName; + } + protected abstract String onDbfLoaded(Iterable<E> elements, CampaignStorage storage); - protected abstract ImportModel<E> getModel(); + public String importShape(File file, + CampaignStorage storage) throws IOException { - protected abstract String getCopyFileName(); - - public String importShape(File file, CampaignStorage storage) throws IOException { - File dbfFile; String fileName = file.getName(); File sourceDirectory = file.getParentFile(); @@ -65,7 +71,8 @@ final String fileNameWithoutExt = fileName.substring(0, extIndex); if (logger.isDebugEnabled()) { - logger.debug("Source directory '" + sourceDirectory.getAbsolutePath() + "' and fileName '" + fileNameWithoutExt + "'"); + logger.debug("Source directory '{}' and fileName '{}'", + sourceDirectory.getAbsolutePath(), fileNameWithoutExt); } if (!ext.equals("dbf")) { @@ -73,20 +80,21 @@ fileName = fileNameWithoutExt + "dbf"; if (logger.isDebugEnabled()) { - logger.debug(String.format("Use dbfFile %s for import", fileName)); + logger.debug("Use dbfFile {} for import", fileName); } dbfFile = new File(sourceDirectory, fileName); if (!dbfFile.exists()) { - throw new FileNotFoundException("Can't found dbf file '" + dbfFile.getAbsolutePath() + "' for import"); + throw new FileNotFoundException( + "Can't found dbf file '" + dbfFile + "' for import"); } } else { dbfFile = file; } - DbfImport<E> importer = new DbfImport<E>(getModel(), dbfFile.toURI().toURL()); + DbfImport<E> importer = new DbfImport<E>(model, dbfFile.toURI().toURL()); String result = onDbfLoaded(importer, storage); @@ -98,10 +106,9 @@ int extIndex = fullName.lastIndexOf(extension); String name = fullName.substring(0, extIndex); if (logger.isDebugEnabled()) { - logger.debug(String.format("Read file : %s [ext = %s] -> check equals for %s", - fullName, - extension, - name) + logger.debug( + "Read file : {} [ext = {}] -> check equals for {}", + new Object[]{fullName, extension, name} ); } return fileNameWithoutExt.equals(name); @@ -111,12 +118,12 @@ for (String name : files) { String extension = Files.getFileExtension(name); File sourceFile = new File(sourceDirectory, name); - File targetFile = new File(storage.getMapDirectory(), getCopyFileName() + "." + extension); + File targetFile = new File(storage.getMapDirectory(), + copyFileName + "." + extension); if (logger.isInfoEnabled()) { - logger.info(String.format("Copy file '%1$s' to '%2$s'", - sourceFile.getAbsolutePath(), - targetFile.getAbsolutePath()) - ); + logger.info("Copy file '{}' to '{}'", + sourceFile.getAbsolutePath(), + targetFile.getAbsolutePath()); } FileUtils.copyFile(sourceFile, targetFile); } Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,30 @@ +/** + * Base package for map imports. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io.input.map; + +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,61 @@ +package fr.ulr.sammoa.application.io.input.sammoa; + +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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.Lists; + +import java.io.File; +import java.util.List; + +/** + * Model of sammoa import. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ImportApplicationModel { + + public static ImportApplicationModel newModel(File importFile, + List<String> flightIds) { + ImportApplicationModel result = new ImportApplicationModel(); + result.importFile = importFile; + result.flightIds = Lists.newArrayList(flightIds); + return result; + } + + /** Import file that contains all the stuff to import. */ + protected File importFile; + + /** All flight ids to import from the import file. */ + protected List<String> flightIds; + + public File getImportFile() { + return importFile; + } + + public List<String> getFlightIds() { + return flightIds; + } +} \ No newline at end of file Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,63 @@ +package fr.ulr.sammoa.application.io.input.sammoa; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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 fr.ulr.sammoa.application.SammoaServiceSupport; +import org.nuiton.util.TimeLog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Service to import sammoa files. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class ImportApplicationService extends SammoaServiceSupport { + + /** Logger. */ + private static final Logger logger = + LoggerFactory.getLogger(ImportApplicationService.class); + + private static final TimeLog timeLog = + new TimeLog(ImportApplicationService.class); + + public void importApplication(ImportApplicationModel model) { + + if (logger.isInfoEnabled()) { + logger.info("Start Application import to {} :: {}", + model.getImportFile()); + } + + long startTime = TimeLog.getTime(); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + //BOUH! + } + + timeLog.log(startTime, "importApplication", "after Callback execution"); + } +} \ No newline at end of file Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,30 @@ +/** + * Base package for sammo import. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io.input.sammoa; + +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,28 @@ +/** + * Base package for all import/export operations. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io;/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java 2012-08-14 13:04:08 UTC (rev 418) @@ -30,7 +30,6 @@ import fr.ulr.sammoa.persistence.Strate; import java.io.File; -import java.io.Serializable; import java.util.Date; import java.util.List; @@ -40,10 +39,8 @@ * @author tchemit <chemit@codelutin.com> * @since 0.5 */ -public class ExportMapModel implements Serializable { +public class ExportMapModel { - private static final long serialVersionUID = 1L; - public static ExportMapModel newModel(File exportDirectory, String exportFilename, Campaign campaign, Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -32,8 +32,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import fr.ulr.sammoa.application.FlightService; -import fr.ulr.sammoa.application.SammoaConfig; -import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.persistence.Campaign; import fr.ulr.sammoa.persistence.Flight; import fr.ulr.sammoa.persistence.GeoPoint; @@ -46,7 +45,6 @@ import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.RouteType; import fr.ulr.sammoa.persistence.Routes; -import fr.ulr.sammoa.persistence.SammoaPersistence; import fr.ulr.sammoa.persistence.Species; import fr.ulr.sammoa.persistence.Strate; import fr.ulr.sammoa.persistence.Transect; @@ -71,28 +69,15 @@ * @author tchemit <chemit@codelutin.com> * @since 0.5 */ -public class ExportMapService { +public class ExportMapService extends SammoaServiceSupport { private static final Logger logger = LoggerFactory.getLogger(ExportMapService.class); private static final TimeLog timeLog = new TimeLog(ExportMapService.class); - protected SammoaContext context; + protected final DateFormat timeFormat = new SimpleDateFormat("HHmmss"); - protected SammoaConfig config; - - protected SammoaPersistence persistence; - - protected DateFormat timeFormat; - - public ExportMapService(SammoaContext context) { - this.context = context; - this.persistence = context.getPersistence(); - this.config = context.getConfig(); - this.timeFormat = new SimpleDateFormat("HHmmss"); - } - public void exportEffortsMap(ExportMapModel dataModel) { Preconditions.checkNotNull(dataModel.getCampaign()); Preconditions.checkNotNull(dataModel.getBeginDate()); @@ -152,7 +137,7 @@ EsriGraphicList graphicList = new EsriPointList(); - FlightService flightService = context.getFlightService(); + FlightService flightService = newService(FlightService.class); Campaign campaign = dataModel.getCampaign(); Region region = campaign.getRegion(); @@ -160,7 +145,7 @@ List<RouteType> routeTypes = dataModel.getRouteTypes(); List<Strate> strates = dataModel.getStrates(); - TopiaContext tx = context.getPersistence().beginTransaction(); + TopiaContext tx = beginTransaction(); try { // get flights for campaign (and between begin - end date) @@ -306,7 +291,7 @@ timeLog.log(startTime, "exportEffortsMap", "after EsriShapeExport execution"); } finally { - context.getPersistence().endTransaction(tx); + endTransaction(tx); } } @@ -373,10 +358,10 @@ List<RouteType> routeTypes = dataModel.getRouteTypes(); List<Strate> strates = dataModel.getStrates(); - TopiaContext tx = context.getPersistence().beginTransaction(); + TopiaContext tx = beginTransaction(); try { - FlightService flightService = context.getFlightService(); + FlightService flightService = newService(FlightService.class); // get flights for campaign (and between begin - end date) Iterable<Flight> flights = flightService.getFlights( @@ -550,7 +535,7 @@ timeLog.log(startTime, "exportObservationsMap", "after EsriShapeExport execution"); } finally { - context.getPersistence().endTransaction(tx); + endTransaction(tx); } } @@ -585,7 +570,7 @@ Campaign campaign = dataModel.getCampaign(); Region region = campaign.getRegion(); - FlightService flightService = context.getFlightService(); + FlightService flightService = newService(FlightService.class); // get flights for campaign (and between begin - end date) Iterable<Flight> flights = flightService.getFlights(campaign, Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,28 @@ +/** + * Base package for map export operations. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io.output.map;/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-14 13:04:08 UTC (rev 418) @@ -27,18 +27,15 @@ import fr.ulr.sammoa.persistence.Flight; import java.io.File; -import java.io.Serializable; /** - * Model of export application. + * Model of sammoa export. * * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class ExportApplicationModel implements Serializable { +public class ExportApplicationModel { - private static final long serialVersionUID = 1L; - public static ExportApplicationModel newModel(File exportDirectory, String exportFilename, Campaign campaign, Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-14 13:04:08 UTC (rev 418) @@ -23,12 +23,10 @@ * #L% */ -import fr.ulr.sammoa.application.SammoaConfig; -import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.application.io.CampaignStorage; import fr.ulr.sammoa.application.io.CampaignStorages; import fr.ulr.sammoa.persistence.Campaign; -import fr.ulr.sammoa.persistence.SammoaPersistence; import org.nuiton.util.TimeLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +37,7 @@ * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class ExportApplicationService { +public class ExportApplicationService extends SammoaServiceSupport { /** Logger. */ private static final Logger logger = @@ -49,18 +47,6 @@ private static final TimeLog timeLog = new TimeLog(ExportApplicationService.class); - protected final SammoaContext context; - - protected final SammoaConfig config; - - protected final SammoaPersistence persistence; - - public ExportApplicationService(SammoaContext context) { - this.context = context; - this.persistence = context.getPersistence(); - this.config = context.getConfig(); - } - public void exportApplication(ExportApplicationModel model) { if (logger.isInfoEnabled()) { Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java 2012-08-14 13:04:08 UTC (rev 418) @@ -0,0 +1,28 @@ +/** + * Base package for sammoa export operation. + * + * @since 0.6 + */ +package fr.ulr.sammoa.application.io.output.sammoa;/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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% + */ Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties =================================================================== --- trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-14 13:04:08 UTC (rev 418) @@ -9,6 +9,7 @@ sammoa.config.effort.number= sammoa.config.flight.number= sammoa.config.fly.mode= +sammoa.config.campaign.directory=Directory where are stored campaign data (maps, flight audio files,...) sammoa.config.gps.check.period=Time in seconds between each GPS capture sammoa.config.gps.device=GPS device port sammoa.config.gps.handler=GpsHandler class \: fr.ulr.sammoa.application.device.gps.GpsHandlerGpylon or fr.ulr.sammoa.application.device.gps.FakeGpsHandler Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java =================================================================== --- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-14 13:04:08 UTC (rev 418) @@ -66,7 +66,7 @@ SammoaContext context = new SammoaContext(config, database.getPersistence()); - FlightService service = new FlightService(context); + FlightService service = context.newService(FlightService.class); Campaign campaign = database.createCampaign("PACOMM", "FRANCE"); @@ -83,8 +83,7 @@ SammoaContext context = new SammoaContext(config, database.getPersistence()); - FlightService service = new FlightService(context); - ReferentialService referential = new ReferentialService(context); + FlightService service = context.newService(FlightService.class); Campaign campaign = database.createCampaign("PACOMM", "FRANCE"); Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java =================================================================== --- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-14 13:04:08 UTC (rev 418) @@ -62,7 +62,7 @@ SammoaContext context = new SammoaContext(config, database.getPersistence()); - ImportCsvService instance = new ImportCsvService(context); + ImportCsvService instance = context.newService(ImportCsvService.class); Campaign campaign = database.createCampaign("PACOMM-2012", "FRANCE"); Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java =================================================================== --- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java 2012-08-13 22:23:13 UTC (rev 417) +++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java 2012-08-14 13:04:08 UTC (rev 418) @@ -98,7 +98,7 @@ campaign.setBeginDate(DateUtil.createDate(1, 1, 2012)); campaign.setEndDate(DateUtil.createDate(31, 12, 2012)); - FlightService flightService = new FlightService(context); + FlightService flightService = context.newService(FlightService.class); Flight flight = flightService.createFlight(campaign); flight.setBeginDate(DateUtil.createDate(18, 0, 12, 18, 7, 2012)); @@ -108,7 +108,7 @@ transaction.commitTransaction(); - ExportMapService exportMapService = new ExportMapService(context); + ExportMapService exportMapService = context.newService(ExportMapService.class); File exportDirectory = database.getTestBasedir();