r436 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application sammoa-application/src/main/java/fr/ulr/sammoa/application/io sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa sammoa-ui-swing/src/main/resources/i18n
Author: tchemit Date: 2012-08-19 14:06:02 +0200 (Sun, 19 Aug 2012) New Revision: 436 Url: http://forge.codelutin.com/repositories/revision/sammoa/436 Log: refs #1201: Export format application (add callback methods for export :delete flight, delete campaign, delete all + move callback mode to ui) Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java Removed: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.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/io/CampaignStorages.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.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-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 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-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-19 12:06:02 UTC (rev 436) @@ -31,6 +31,7 @@ import com.google.common.collect.Lists; import fr.ulr.sammoa.application.io.CampaignStorage; import fr.ulr.sammoa.application.io.CampaignStorages; +import fr.ulr.sammoa.application.io.FlightStorage; import fr.ulr.sammoa.application.io.FlightStorages; import fr.ulr.sammoa.persistence.AutoSaveListener; import fr.ulr.sammoa.persistence.Campaign; @@ -96,11 +97,23 @@ Preconditions.checkNotNull(campaign); - long start = TimeLog.getTime(); - TopiaContext transaction = beginTransaction(); try { + List<Flight> result = getFlights(transaction, campaign); + return result; + } finally { + endTransaction(transaction); + } + } + + public List<Flight> getFlights(TopiaContext transaction, Campaign campaign) { + + Preconditions.checkNotNull(campaign); + + long start = TimeLog.getTime(); + try { + FlightDAO dao = SammoaDAOHelper.getFlightDAO(transaction); List<Flight> result = dao.findAllByCampaign(campaign); @@ -112,8 +125,6 @@ } catch (TopiaException e) { throw new TopiaRuntimeException(e); - } finally { - endTransaction(transaction); } } @@ -230,8 +241,6 @@ */ public Flight createFlight(Campaign campaign) { - Flight result; - TopiaContext transaction = beginTransaction(); try { FlightDAO dao = SammoaDAOHelper.getFlightDAO(transaction); @@ -241,7 +250,9 @@ int startNumber = config.getFlightNumber(); int flightNumber = dao.findLastFlightNumber(startNumber); - result = dao.createByNaturalId(systemId, flightNumber, campaign); + Flight result = dao.createByNaturalId(systemId, + flightNumber, + campaign); result.setPlatformType(PlatformType.SIMPLE); if (logger.isInfoEnabled()) { @@ -253,25 +264,84 @@ transaction.commitTransaction(); + // create flight storage + CampaignStorage campaignStorage = CampaignStorages.getStorage( + config, campaign.getTopiaId()); + + try { + FlightStorages.createStorage(campaignStorage, result.getTopiaId()); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not create flight storage", e); + } + + return result; } catch (TopiaException e) { throw new TopiaRuntimeException(e); - } finally { endTransaction(transaction); } + } - // create flight storage - CampaignStorage campaignStorage = CampaignStorages.getStorage( - config, campaign.getTopiaId()); + /** + * Remove the given flight from db and storage. + * + * @param flightId the flight id to remove + * @since 0.6 + */ + public void deleteFlight(String flightId) { + TopiaContext tx = beginTransaction(); try { - FlightStorages.createStorage(campaignStorage, result.getTopiaId()); - } catch (IOException e) { - throw new SammoaTechnicalException( - "Could not create flight storage", e); + FlightDAO dao = SammoaDAOHelper.getFlightDAO(tx); + + Flight flight = dao.findByTopiaId(flightId); + + Preconditions.checkNotNull(flight); + + // delete geoPoints + List<GeoPoint> geoPoints = getFlightGeoPoints(tx, flight); + GeoPointDAO geoPointDAO = SammoaDAOHelper.getGeoPointDAO(tx); + for (GeoPoint geoPoint : geoPoints) { + geoPointDAO.delete(geoPoint); + } + + // delete routes + List<Route> routes = getRoutes(tx, flight); + RouteDAO routeDAO = SammoaDAOHelper.getRouteDAO(tx); + for (Route route : routes) { + routeDAO.delete(route); + } + + // delete observations + List<Observation> observations = getObservations(tx, flight); + ObservationDAO observationDAO = SammoaDAOHelper.getObservationDAO(tx); + for (Observation observation : observations) { + observationDAO.delete(observation); + } + + // delete flight + dao.delete(flight); + + // delete flight storage + CampaignStorage campaignStorage = CampaignStorages.getStorage( + config, flight.getCampaign().getTopiaId()); + + FlightStorage flightStorage = + campaignStorage.getFlightStorage(flightId); + + try { + FlightStorages.deleteStorage(flightStorage); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not delete flight storage", e); + } + + } catch (TopiaException e) { + throw new SammoaTechnicalException(e); + } finally { + endTransaction(tx); } - - return result; } /** 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-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-19 12:06:02 UTC (rev 436) @@ -24,10 +24,13 @@ package fr.ulr.sammoa.application; import com.google.common.base.Preconditions; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +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.CampaignDAO; +import fr.ulr.sammoa.persistence.Flight; import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.ObserverDAO; import fr.ulr.sammoa.persistence.Observers; @@ -43,6 +46,7 @@ import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; +import org.nuiton.topia.persistence.TopiaId; import java.io.IOException; import java.util.Collection; @@ -85,7 +89,6 @@ Preconditions.checkNotNull(region); Preconditions.checkNotNull(region.getCode()); - TopiaContext transaction = beginTransaction(); try { @@ -146,15 +149,16 @@ Preconditions.checkNotNull(campaign.getCode()); Preconditions.checkNotNull(campaign.getRegion()); - boolean createCampaign = campaign.getTopiaId() == null; - String result; - TopiaContext transaction = beginTransaction(); try { CampaignDAO dao = SammoaDAOHelper.getCampaignDAO(transaction); + String result; + + boolean createCampaign = campaign.getTopiaId() == null; + if (createCampaign) { Campaign existCampaign = dao.findByNaturalId(campaign.getCode(), campaign.getRegion()); @@ -181,27 +185,27 @@ transaction.commitTransaction(); + if (createCampaign) { + + // creates the campaign storage + try { + CampaignStorages.createStorage(config, result); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not create campaign storage", e); + } + } + return result; + } catch (TopiaException e) { throw new TopiaRuntimeException(e); } finally { endTransaction(transaction); } - - if (createCampaign) { - - // creates the campaign storage - try { - CampaignStorages.createStorage(config, result); - } catch (IOException e) { - throw new SammoaTechnicalException( - "Could not create campaign storage", e); - } - } - - return result; } public Campaign getCampaign(String topiaId) { + Preconditions.checkNotNull(topiaId); TopiaContext transaction = beginTransaction(); try { @@ -216,47 +220,65 @@ } public List<Transect> getAllTransects(Campaign campaign) { + Preconditions.checkNotNull(campaign); TopiaContext transaction = beginTransaction(); try { - TransectDAO dao = SammoaDAOHelper.getTransectDAO(transaction); + List<Transect> result = getAllTransects(transaction, campaign); + return result; + } finally { + endTransaction(transaction); + } + } + public List<Transect> getAllTransects(TopiaContext tx, Campaign campaign) { + Preconditions.checkNotNull(tx); + Preconditions.checkNotNull(campaign); + + try { + TransectDAO dao = SammoaDAOHelper.getTransectDAO(tx); List<Transect> result = dao.findAllByCampaignOrderedByName(campaign); return result; } catch (TopiaException e) { throw new TopiaRuntimeException(e); - } finally { - endTransaction(transaction); } } public List<Strate> getAllStrates(Campaign campaign) { + Preconditions.checkNotNull(campaign); + TopiaContext transaction = beginTransaction(); try { + List<Strate> result = getAllStrates(transaction, campaign); + return result; - StrateDAO dao = SammoaDAOHelper.getStrateDAO(transaction); + } finally { + endTransaction(transaction); + } + } - List<Strate> result = - dao.findAllByCampaignOrderedByCode(campaign); + public List<Strate> getAllStrates(TopiaContext tx, Campaign campaign) { + Preconditions.checkNotNull(tx); + Preconditions.checkNotNull(campaign); + + try { + StrateDAO dao = SammoaDAOHelper.getStrateDAO(tx); + List<Strate> result = dao.findAllByCampaignOrderedByCode(campaign); return result; - } catch (TopiaException e) { throw new TopiaRuntimeException(e); - } finally { - endTransaction(transaction); } } public List<Species> getAllSpecies(Campaign campaign) { + Preconditions.checkNotNull(campaign); + TopiaContext transaction = beginTransaction(); try { - SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction); - - List<Species> result = - dao.findAllByRegion(campaign.getRegion()); + List<Species> result = dao.findAllByRegion(campaign.getRegion()); return result; } catch (TopiaException e) { @@ -267,14 +289,13 @@ } public Collection<Species> getAllValidSpecies() { + TopiaContext transaction = beginTransaction(); try { SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction); - Collection<Species> result = dao.findAllByLocalCreation(false); return result; - } catch (TopiaException e) { throw new TopiaRuntimeException(e); } finally { @@ -288,7 +309,6 @@ Preconditions.checkNotNull(transect.getName()); Preconditions.checkNotNull(transect.getStrate()); - TopiaContext transaction = beginTransaction(); try { @@ -314,12 +334,12 @@ } public Transect getTransect(String transectId) { + Preconditions.checkNotNull(transectId); TopiaContext transaction = beginTransaction(); try { TransectDAO dao = SammoaDAOHelper.getTransectDAO(transaction); - Transect result = dao.findByTopiaId(transectId); return result; } catch (TopiaException e) { @@ -331,15 +351,13 @@ } public List<Observer> getAllObservers(Campaign campaign) { + Preconditions.checkNotNull(campaign); TopiaContext transaction = beginTransaction(); try { - ObserverDAO observerDAO = - SammoaDAOHelper.getObserverDAO(transaction); - - List<Observer> result = observerDAO.findAllByCampaign(campaign); - + ObserverDAO dao = SammoaDAOHelper.getObserverDAO(transaction); + List<Observer> result = dao.findAllByCampaign(campaign); Collections.sort(result, Observers.onInitials()); // realy creating observers @@ -352,4 +370,100 @@ endTransaction(transaction); } } + + public void deleteCampaign(String campaignId) { + Preconditions.checkNotNull(campaignId); + + TopiaContext tx = beginTransaction(); + try { + CampaignDAO dao = SammoaDAOHelper.getCampaignDAO(tx); + + Campaign campaign = dao.findByTopiaId(campaignId); + + Preconditions.checkNotNull(campaign); + + FlightService flightService = newService(FlightService.class); + + // delete all campaign flights + List<Flight> flights = flightService.getFlights(tx, campaign); + + for (Flight flight : flights) { + flightService.deleteFlight(flight.getTopiaId()); + } + + // delete observers + List<Observer> observers = getAllObservers(campaign); + ObserverDAO observerDAO = SammoaDAOHelper.getObserverDAO(tx); + for (Observer observer : observers) { + observerDAO.delete(observer); + } + + // delete transects + List<Transect> transects = getAllTransects(tx, campaign); + + TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(tx); + for (Transect transect : transects) { + transectDAO.delete(transect); + } + + // delete strates + List<Strate> strates = getAllStrates(tx, campaign); + StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(tx); + for (Strate strate : strates) { + strateDAO.delete(strate); + } + + // delete campaign + dao.delete(campaign); + + // delete campaign storage + CampaignStorage campaignStorage = CampaignStorages.getStorage( + config, campaignId); + + try { + CampaignStorages.deleteStorage(campaignStorage); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not delete campaign storage", e); + } + + } catch (TopiaException e) { + throw new SammoaTechnicalException(e); + } finally { + endTransaction(tx); + } + } + + public void deleteAllData() { + Iterable<String> campaignIds; + + TopiaContext tx = beginTransaction(); + try { + CampaignDAO dao = SammoaDAOHelper.getCampaignDAO(tx); + + List<Campaign> campaigns = dao.findAll(); + + campaignIds = Iterables.transform(campaigns, TopiaId.GET_TOPIA_ID); + + } catch (TopiaException e) { + throw new SammoaTechnicalException(e); + } finally { + endTransaction(tx); + } + + persistence.destroyDb(); + + for (String campaignId : campaignIds) { + // delete campaign storage + CampaignStorage campaignStorage = CampaignStorages.getStorage( + config, campaignId); + + try { + CampaignStorages.deleteStorage(campaignStorage); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not delete campaign storage", e); + } + } + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java 2012-08-19 12:06:02 UTC (rev 436) @@ -90,4 +90,7 @@ FileUtils.forceMkdir(storage.getMapDirectory()); } + public static void deleteStorage(CampaignStorage storage) throws IOException { + FileUtils.deleteDirectory(storage.getDirectory()); + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java 2012-08-19 12:06:02 UTC (rev 436) @@ -55,4 +55,7 @@ FileUtils.forceMkdir(storage.getAudioDirectory()); } + public static void deleteStorage(FlightStorage storage) throws IOException { + FileUtils.deleteDirectory(storage.getDirectory()); + } } Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java 2012-08-19 12:06:02 UTC (rev 436) @@ -1,51 +0,0 @@ -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% - */ - -/** - * What to do after a application export. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.6 - */ -public enum ExportApplicationCallbackMode { - /** - * Do nothing. - * <p/> - * Says after this every thing stay in place. - */ - NOTHING, - /** - * Remove flight data. - * <p/> - * Says after this referential are still there (Region, Campaign, Strate, Observer, Species). - */ - REMOVE_FLIGHTS, - /** - * Remove campaign data. - * <p/> - * Says after this, there is no more stuff in db. - */ - REMOVE_ALL -} 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-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-19 12:06:02 UTC (rev 436) @@ -35,13 +35,11 @@ public static ExportApplicationModel newModel(File exportDirectory, String campaignId, - Iterable<String> flightIds, - ExportApplicationCallbackMode callback) { + Iterable<String> flightIds) { ExportApplicationModel result = new ExportApplicationModel(); result.exportFile = exportDirectory; result.campaignId = campaignId; result.flightIds = flightIds; - result.callback = callback; return result; } @@ -51,8 +49,6 @@ protected File exportFile; - protected ExportApplicationCallbackMode callback; - public String getCampaignId() { return campaignId; } @@ -61,10 +57,6 @@ return flightIds; } - public ExportApplicationCallbackMode getCallback() { - return callback; - } - public File getExportFile() { return exportFile; } 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-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-19 12:06:02 UTC (rev 436) @@ -24,7 +24,6 @@ */ import com.google.common.base.Preconditions; -import com.google.common.collect.Multimap; import fr.ulr.sammoa.application.FlightService; import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.application.SammoaTechnicalException; @@ -84,7 +83,6 @@ Preconditions.checkNotNull(model); Preconditions.checkNotNull(model.getExportFile()); Preconditions.checkNotNull(model.getCampaignId()); - Preconditions.checkNotNull(model.getCallback()); Preconditions.checkNotNull(model.getFlightIds()); if (logger.isInfoEnabled()) { @@ -117,7 +115,6 @@ File csvDirectory = targetStorage.getCsvDirectory(); TopiaContext tx = beginTransaction(); - try { exportReferential(tx, csvDirectory); exportData(tx, csvDirectory, flightIds); @@ -129,23 +126,8 @@ targetStorage.getDirectory(), false); - startTime = TIME_LOG.log(startTime, "exportApplication", - "after export db to csv files "); - - switch (model.getCallback()) { - - case NOTHING: - // nothing to do - break; - case REMOVE_FLIGHTS: - removeFlightData(model); - break; - case REMOVE_ALL: - removeAllData(); - break; - } - - TIME_LOG.log(startTime, "exportApplication", "after Callback execution"); + TIME_LOG.log(startTime, "exportApplication", + "after export db to csv files "); } protected void exportReferential(TopiaContext tx, File csvDirectory) { @@ -183,28 +165,24 @@ entryFile); } } - } protected void exportData(TopiaContext tx, File csvDirectory, Iterable<String> flightIds) throws IOException { - DbMeta<SammoaEntityEnum> dbMetas = persistence.getDbMetas(); - MetaFilenameAware<SammoaEntityEnum>[] dataEntries = SammoaDbMetas.getDataEntries(dbMetas); - Multimap<SammoaEntityEnum, MetaFilenameAware<SammoaEntityEnum>> associationsEntries = SammoaDbMetas.getDataAssociationsEntries(dbMetas); - Map<SammoaEntityEnum, TopiaCsvExports.EntityExportContext<SammoaEntityEnum>> exportContexts = TopiaCsvExports.createReplicateEntityVisitorContexts( defaultExportModelFactory, - dataEntries, - associationsEntries, + SammoaDbMetas.getDataEntries(dbMetas), + SammoaDbMetas.getDataAssociationsEntries(dbMetas), csvDirectory); ExportEntityVisitor<SammoaEntityEnum> exportVisitor = - new ExportEntityVisitor<SammoaEntityEnum>(dbMetas.getEntityEnumProvider(), exportContexts); + ExportEntityVisitor.newVisitor(dbMetas.getEntityEnumProvider(), + exportContexts); FlightService flightService = newService(FlightService.class); @@ -212,48 +190,25 @@ for (String flightId : flightIds) { Flight flight = flightService.getFlight(tx, flightId); - exportVisitor.export(flight); List<GeoPoint> geoPoints = flightService.getFlightGeoPoints(tx, flight); + exportVisitor.export(geoPoints); - for (GeoPoint geoPoint : geoPoints) { - exportVisitor.export(geoPoint); - } - List<Route> routes = flightService.getRoutes(tx, flight); + exportVisitor.export(routes); - for (Route route : routes) { - exportVisitor.export(route); - } - List<Observation> observations = flightService.getObservations(tx, flight); + exportVisitor.export(observations); - for (Observation observation : observations) { - exportVisitor.export(observation); - } - } } finally { exportVisitor.close(); } } - protected void removeFlightData(ExportApplicationModel model) { - if (logger.isInfoEnabled()) { - logger.info("Will remove flight data for campaign {}", - model.getCampaignId()); - } - } - - protected void removeAllData() { - if (logger.isInfoEnabled()) { - logger.info("Will remove all data from current db (create a new db...)"); - } - } - private ExportModelFactory<SammoaEntityEnum> defaultExportModelFactory = new ExportModelFactory<SammoaEntityEnum>() { @Override public <E extends TopiaEntity> ExportModel<E> buildForExport(TableMeta<SammoaEntityEnum> meta) { @@ -312,7 +267,6 @@ protected final TopiaContext tx; public SammoaEntityEnumPrepareDataForExport(DbMeta<SammoaEntityEnum> dbMetas, TopiaContext tx) { - this.dbMetas = dbMetas; this.tx = tx; } @@ -333,7 +287,6 @@ TableMeta<SammoaEntityEnum> tableMeta, String extraWhereQuery) { - List<E> result; SammoaEntityEnum entityEnum = tableMeta.getSource(); try { TopiaDAO<E> dao = SammoaDAOHelper.<E, TopiaDAO<E>>getDAO( @@ -347,7 +300,7 @@ hql += " WHERE " + extraWhereQuery; } - result = dao.getContext().findAll(hql); + List<E> result = dao.findAllByQuery(hql); return result; } catch (TopiaException eee) { throw new SammoaTechnicalException("Could not obtain data", eee); Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java (from rev 425, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java) =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java 2012-08-19 12:06:02 UTC (rev 436) @@ -0,0 +1,56 @@ +package fr.ulr.sammoa.ui.swing.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% + */ + +/** + * What to do after a application export. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public enum ExportApplicationCallbackMode { + /** + * Do nothing. + * <p/> + * Says after this every thing stay in place. + */ + NOTHING, + /** + * Remove flight data. + * <p/> + * Says after this referential are still there (Region, Campaign, Strate, Observer, Species). + */ + REMOVE_FLIGHTS, + /** + * Remove campaing data. + * <p/> + * Says after this referential are still there (Region, Species). + */ + REMOVE_CAMPAIGN, /** + * Remove campaign data. + * <p/> + * Says after this, there is no more stuff in db. + */ + REMOVE_ALL +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-19 12:06:02 UTC (rev 436) @@ -22,6 +22,9 @@ * #L% */ +#model { + callback: {(ExportApplicationCallbackMode) callbacks.getSelectedValue()}; +} #campaignLabel { text: "sammoa.label.campaign"; } @@ -78,16 +81,23 @@ value:{ExportApplicationCallbackMode.NOTHING}; } -#callbackRemoveData { - text:"sammoa.label.exportApplication.callbackRemoveData"; +#callbackRemoveFlightData { + text:"sammoa.label.exportApplication.callbackRemoveFlightData"; buttonGroup:"callbacks"; selected:{ExportApplicationCallbackMode.REMOVE_FLIGHTS == model.getCallback()}; value:{ExportApplicationCallbackMode.REMOVE_FLIGHTS}; } -#callbackRemoveAll { - text:"sammoa.label.exportApplication.callbackRemoveAll"; +#callbackRemoveCampaignData { + text:"sammoa.label.exportApplication.callbackRemoveCampaignData"; buttonGroup:"callbacks"; + selected:{ExportApplicationCallbackMode.REMOVE_CAMPAIGN == model.getCallback()}; + value:{ExportApplicationCallbackMode.REMOVE_CAMPAIGN}; +} + +#callbackRemoveAllData { + text:"sammoa.label.exportApplication.callbackRemoveAllData"; + buttonGroup:"callbacks"; selected:{ExportApplicationCallbackMode.REMOVE_ALL == model.getCallback()}; value:{ExportApplicationCallbackMode.REMOVE_ALL}; } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx 2012-08-19 12:06:02 UTC (rev 436) @@ -28,7 +28,6 @@ fr.ulr.sammoa.persistence.Campaign fr.ulr.sammoa.persistence.Flight fr.ulr.sammoa.ui.swing.SammoaUIContext - fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer @@ -59,6 +58,8 @@ <ExportApplicationUIHandler id='handler' initializer='getContextValue(ExportApplicationUIHandler.class)'/> + <JAXXButtonGroup id='callbacks' selectedVaue='{model.getCallback()}'/> + <Table fill='both' constraints='BorderLayout.CENTER'> <!-- Campaign filter --> <row> @@ -111,8 +112,9 @@ <cell weightx='1' fill="horizontal" columns='2'> <JPanel layout='{new GridLayout(0,1)}'> <JRadioButton id='callbackNothing'/> - <JRadioButton id='callbackRemoveData'/> - <JRadioButton id='callbackRemoveAll'/> + <JRadioButton id='callbackRemoveFlightData'/> + <JRadioButton id='callbackRemoveCampaignData'/> + <JRadioButton id='callbackRemoveAllData'/> </JPanel> </cell> </row> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-19 12:06:02 UTC (rev 436) @@ -26,7 +26,6 @@ import fr.ulr.sammoa.application.FlightService; import fr.ulr.sammoa.application.ReferentialService; import fr.ulr.sammoa.application.SammoaContext; -import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode; import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationModel; import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService; import fr.ulr.sammoa.persistence.Campaign; @@ -201,6 +200,39 @@ frame, _("sammoa.messageDialog.sammoa.export.success", dataModel.getExportFile())); + + boolean removeFlightId = false; + boolean removeCampaingId = false; + + switch (getModel().getCallback()) { + + case NOTHING: + // nothing to do + break; + case REMOVE_FLIGHTS: + removeFlights(dataModel); + removeFlightId = true; + break; + case REMOVE_CAMPAIGN: + removeCampaign(dataModel); + removeCampaingId = true; + break; + case REMOVE_ALL: + removeAllData(); + removeCampaingId = true; + break; + + } + + if (removeCampaingId) { + context.setCampaignId(null); + removeFlightId = true; + } + + if (removeFlightId) { + context.setFlightId(null); + } + close(); } } catch (Exception e) { @@ -210,6 +242,36 @@ } } + protected void removeFlights(ExportApplicationModel model) { + if (logger.isInfoEnabled()) { + logger.info("Will remove selected flights for campaign {}", + model.getCampaignId()); + } + + FlightService service = context.newService(FlightService.class); + for (String flightId : model.getFlightIds()) { + service.deleteFlight(flightId); + } + } + + protected void removeCampaign(ExportApplicationModel model) { + if (logger.isInfoEnabled()) { + logger.info("Will remove campaign data {}", model.getCampaignId()); + } + + ReferentialService service = context.newService(ReferentialService.class); + service.deleteCampaign(model.getCampaignId()); + } + + protected void removeAllData() { + if (logger.isInfoEnabled()) { + logger.info("Will remove all data from current db (create a new db...)"); + } + + ReferentialService service = context.newService(ReferentialService.class); + service.deleteAllData(); + } + protected void validateModel() { boolean valid = true; @@ -221,7 +283,8 @@ valid = false; } else { - if (!model.getExportDirectory().exists()) { + if (model.getExportDirectory() == null || + !model.getExportDirectory().exists()) { // export directory does not exists valid = false; Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java 2012-08-19 12:06:02 UTC (rev 436) @@ -26,7 +26,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode; import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationModel; import fr.ulr.sammoa.persistence.Campaign; import fr.ulr.sammoa.persistence.Flight; @@ -183,8 +182,7 @@ ExportApplicationModel result = ExportApplicationModel.newModel( new File(getExportDirectory(), getExportFilename()), getSelectedCampaign().getTopiaId(), - Iterables.transform(flightsToExport, TopiaId.GET_TOPIA_ID), - getCallback() + Iterables.transform(flightsToExport, TopiaId.GET_TOPIA_ID) ); return result; } Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-19 12:03:30 UTC (rev 435) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-19 12:06:02 UTC (rev 436) @@ -101,8 +101,9 @@ sammoa.label.campaign.strate=Strates\: sammoa.label.campaign.transect=Transects\: sammoa.label.exportApplication.callbackNothing=Do nothing -sammoa.label.exportApplication.callbackRemoveAll=Remove all data -sammoa.label.exportApplication.callbackRemoveData=Remove flights data +sammoa.label.exportApplication.callbackRemoveAllData=Remove all data +sammoa.label.exportApplication.callbackRemoveCampaignData=Remove selected campaign data +sammoa.label.exportApplication.callbackRemoveFlightData=Remove selected flights data sammoa.label.exportApplication.callbacks=Call back after export\: sammoa.label.exportApplicationDirectory=Export directory\: sammoa.label.exportApplicationFilename=Export filename\:
participants (1)
-
tchemit@users.forge.codelutin.com