Author: bleny Date: 2011-01-17 13:13:47 +0000 (Mon, 17 Jan 2011) New Revision: 921 Log: add terrestrial locations import Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties trunk/wao-business/src/main/xmi/wao.zargo Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2011-01-14 15:46:02 UTC (rev 920) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2011-01-17 13:13:47 UTC (rev 921) @@ -26,6 +26,7 @@ import fr.ifremer.wao.entity.ActivityCalendar; import fr.ifremer.wao.io.csv.ImportHelper; +import fr.ifremer.wao.service.ServiceReferential; import fr.ifremer.wao.service.ServiceUser; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; @@ -51,6 +52,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.InputStream; import java.nio.charset.Charset; import java.util.Date; import java.util.Locale; @@ -250,7 +252,10 @@ serviceUser.createDefaultAdmin(); // import all DCF codes - getServiceFactory().getServiceReferential().importDCFcodes(); + ServiceReferential serviceReferential = getServiceFactory().getServiceReferential(); + serviceReferential.importDCFcodes(); + InputStream terrestrialLocationsCsv = getClass().getResourceAsStream("/terrestrialLocations.csv"); + serviceReferential.importTerrestrialLocations(terrestrialLocationsCsv); if (log.isInfoEnabled()) { log.info("wao is started !"); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-01-14 15:46:02 UTC (rev 920) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-01-17 13:13:47 UTC (rev 921) @@ -40,18 +40,30 @@ import fr.ifremer.wao.entity.ProfessionDAO; import fr.ifremer.wao.entity.TargetSpeciesDCF; import fr.ifremer.wao.entity.TargetSpeciesDCFDAO; +import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.entity.TerrestrialLocationDAO; +import fr.ifremer.wao.entity.TerrestrialLocationImpl; import fr.ifremer.wao.io.csv.ImportHelper; import fr.ifremer.wao.io.csv.WaoCsvHeader.FISHING_ZONE; +import fr.ifremer.wao.io.csv2.Import; +import fr.ifremer.wao.io.csv2.ImportModel; +import fr.ifremer.wao.io.csv2.TerrestrialLocationImportModel; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; /** @@ -247,4 +259,66 @@ } } + /** + * + * @param input a CVS file with terrestrial locations + */ + @Override + protected void executeImportTerrestrialLocations(TopiaContext transaction, InputStream input) throws Exception { + + TerrestrialLocationDAO dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction); + + int count = dao.count(); + + if (count == 0) { + + ImportModel<TerrestrialLocation> model = new TerrestrialLocationImportModel(); + Import<TerrestrialLocation> terrestrialLocationImport = new Import<TerrestrialLocation>(model, input); + + Iterator<TerrestrialLocation> locationIterator = terrestrialLocationImport.startImport(); + while (locationIterator.hasNext()) { + TerrestrialLocation location = locationIterator.next(); + dao.create(location); + } + + if (log.isInfoEnabled()) { + count = dao.count(); + log.info(count + " terrestrial locations imported"); + } + + // add districts + WaoQueryHelper.TerrestrialLocationProperty terrestrialLocationProperty = + WaoQueryHelper.newTerrestrialLocationProperty(); + TopiaQuery query = dao.createQuery(terrestrialLocationProperty.$alias()); + query.addDistinct() + .setSelect(terrestrialLocationProperty.districtCode()); + List<String> districtCodes = transaction.findByQuery(query); + for (String districtCode : districtCodes) { + TerrestrialLocation location = dao.findByDistrictCode(districtCode); + TerrestrialLocation district = new TerrestrialLocationImpl(); + + Binder locationBinder = BinderFactory.newBinder(TerrestrialLocation.class); + locationBinder.copyExcluding(location, district, TerrestrialLocation.PROPERTY_NAME, + TerrestrialLocation.PROPERTY_CODE, TerrestrialLocation.PROPERTY_PORT_CODE, + TerrestrialLocation.PROPERTY_PORT_NAME, TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, + TerrestrialLocation.TOPIA_ID, TerrestrialLocation.TOPIA_CREATE_DATE, + TerrestrialLocation.TOPIA_VERSION); + + dao.create(district); + } + + if (log.isInfoEnabled()) { + count = dao.count() - count; + log.info(count + " terrestrial district imported"); + } + + transaction.commitTransaction(); + + } else { + if (log.isInfoEnabled()) { + log.info("database already contains " + count + " terrestrial locations, not importing"); + } + } + + } } Modified: trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-01-14 15:46:02 UTC (rev 920) +++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-01-17 13:13:47 UTC (rev 921) @@ -1,4 +1,6 @@ DataReliability.RELIABLE= +LocationType.AUCTION= +LocationType.PORT= SynthesisId.GRAPH_BOARDING= SynthesisId.GRAPH_SAMPLING= SynthesisId.IND_ALLEGRO_REACTIVITY= @@ -141,6 +143,7 @@ wao.error.serviceReferential.getSectors= wao.error.serviceReferential.importDCFcodes= wao.error.serviceReferential.importFishingZoneCsv= +wao.error.serviceReferential.importTerrestrialLocations= wao.error.serviceSampling.createSampleRowLog= wao.error.serviceSampling.createUpdateSampleRow= wao.error.serviceSampling.deleteSampleRow= Modified: trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-01-14 15:46:02 UTC (rev 920) +++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-01-17 13:13:47 UTC (rev 921) @@ -9,6 +9,8 @@ DataReliability.NOT_RELIABLE=Non exploitable DataReliability.RELIABLE=Exploitable DataReliability.UNKNOWN=Inconnue +LocationType.AUCTION= +LocationType.PORT= SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Toutes esp\u00E8ces commerciales SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00E9 \: esp\u00E8ces G1+G2 SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00E9 \: esp\u00E8ces G1 @@ -161,6 +163,7 @@ wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00E9er le r\u00E9f\u00E9rentiel des codes DCF wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails. +wao.error.serviceReferential.importTerrestrialLocations= wao.error.serviceSampling.createSampleRowLog= wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00E9chantillon \: %1$s Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ)