Author: bleny Date: 2011-02-23 12:21:19 +0000 (Wed, 23 Feb 2011) New Revision: 1042 Log: switch model version to 3.0, add region import in terrestrial location management Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/xmi/wao.zargo Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-02-21 14:16:19 UTC (rev 1041) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-02-23 12:21:19 UTC (rev 1042) @@ -50,11 +50,20 @@ return districtName; } + @Override public boolean isDistrict() { - boolean isDistrict = getLocationType() == null; + boolean isDistrict = getLocationType() == null + && getDistrictCode() != null; return isDistrict; } + @Override + public boolean isRegion() { + boolean isRegion = getLocationType() == null + && getDistrictCode() == null; + return isRegion; + } + /** Get a description of the location like « Maracaibo (Port, Venezuela) » * */ 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-02-21 14:16:19 UTC (rev 1041) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-02-23 12:21:19 UTC (rev 1042) @@ -316,10 +316,6 @@ } } - if (log.isInfoEnabled()) { - log.info(locationAdded + " terrestrial locations added, " + locationUpdated + " updated"); - } - // now, all the CSV file has been read and dumped into database, // Now, we need to update database by adding any missing district // Each location has a district (identified by a district code) @@ -342,6 +338,7 @@ BinderFactory.newBinder(TerrestrialLocation.class); // counts for logging int districtAdded = 0, districtUpdated = 0; + int regionAdded = 0, regionUpdated = 0; for (String districtCode : districtCodes) { // for each district code found @@ -379,7 +376,7 @@ TerrestrialLocation existingDistrict = dao.findByProperties(TerrestrialLocation.PROPERTY_DISTRICT_CODE, district.getDistrictCode(), TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, null); if (existingDistrict == null) { - dao.create(district); + existingDistrict = dao.create(district); districtAdded += 1; } else { locationBinder.copyExcluding(district, existingDistrict, TerrestrialLocation.TOPIA_ID, @@ -387,14 +384,43 @@ dao.update(existingDistrict); districtUpdated += 1; } + + // creating a region object for this district + TerrestrialLocation region = dao.newInstance(); + locationBinder.copyExcluding(district, region, TerrestrialLocation.TOPIA_ID, + TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION, + TerrestrialLocation.PROPERTY_DEPARTMENT_CODE, TerrestrialLocation.PROPERTY_DEPARTMENT_NAME, + TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_CODE, TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_NAME); + + // prevent to deal with case "Hors France" + if (region.getRegionIfremerCode() != null) { + + // try to find it if it's already in DB + TerrestrialLocation existingRegion = dao.findByProperties( + TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE, region.getRegionIfremerCode(), + TerrestrialLocation.PROPERTY_DISTRICT_CODE, null, + TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, null); + + // create or update + if (existingRegion == null) { + dao.create(region); + regionAdded += 1; + } else { + locationBinder.copyExcluding(region, existingRegion, TerrestrialLocation.TOPIA_ID, + TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION); + dao.update(existingRegion); + regionUpdated += 1; + } + } } if (log.isInfoEnabled()) { + log.info(locationAdded + " terrestrial locations added, " + locationUpdated + " updated"); log.info(districtAdded + " terrestrial district added, " + districtUpdated + " updated"); + log.info(regionAdded + " terrestrial region added, " + regionUpdated + " updated"); } transaction.commitTransaction(); - } @Override Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ)