[Suiviobsmer-commits] r579 - in trunk: . wao-business wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi
Author: fdesbois Date: 2010-06-29 11:57:12 +0000 (Tue, 29 Jun 2010) New Revision: 579 Log: Evo #2352 : Cartography for contacts : - Use last topia snapshot (WaoQueryHelper generation) - Change model version to 1.5 - Implement migration of districtCode to new entity BoatDistrict Removed: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java Modified: trunk/pom.xml trunk/wao-business/pom.xml trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java trunk/wao-business/src/main/xmi/wao.zargo Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/pom.xml 2010-06-29 11:57:12 UTC (rev 579) @@ -241,8 +241,8 @@ <i18n.version>1.2.2</i18n.version> <nuitonutils.version>1.3.1</nuitonutils.version> <nuitonweb.version>0.1</nuitonweb.version> - <topia.version>2.3.4</topia.version> - <eugene.version>2.0.2</eugene.version> + <topia.version>2.3.5-SNAPSHOT</topia.version> + <eugene.version>2.0.3-SNAPSHOT</eugene.version> <tapestry.version>5.1.0.5</tapestry.version> </properties> Modified: trunk/wao-business/pom.xml =================================================================== --- trunk/wao-business/pom.xml 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/pom.xml 2010-06-29 11:57:12 UTC (rev 579) @@ -137,7 +137,8 @@ org.nuiton.eugene.java.JavaBeanTransformer, org.nuiton.topia.generator.ServiceTransformer, org.nuiton.eugene.java.JavaInterfaceTransformer, - org.nuiton.topia.generator.BinderHelperTransformer + org.nuiton.topia.generator.BinderHelperTransformer, + org.nuiton.topia.generator.QueryHelperTransformer </templates> </configuration> <goals> Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-29 11:57:12 UTC (rev 579) @@ -26,9 +26,22 @@ package fr.ifremer.wao; import fr.ifremer.wao.bean.ContactState; +import fr.ifremer.wao.entity.BoatDistrict; +import org.hibernate.SQLQuery; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.TopiaId; import org.nuiton.util.Version; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; /** * PgMigrationCallback @@ -152,4 +165,86 @@ queries.add("ALTER TABLE Contact ADD commentAdmin TEXT;"); queries.add("ALTER TABLE Contact ADD commentCoordinator TEXT;"); } + + @Override + protected Map<String, List<String>> retrieveBoatDistrictCodes_1_5a(TopiaContextImplementor tx) throws TopiaException { + + Map<String, List<String>> boatDistrictCodes = new HashMap<String, List<String>>(); + + SQLQuery query = tx.getHibernate(). + createSQLQuery("SELECT topiaId, districtCode FROM Boat"); + + List<Object[]> results = query.list(); + + for (Object[] result : results) { + String topiaId = (String)result[0]; + String districtCode = (String)result[1]; + + List<String> boatIds = boatDistrictCodes.get(districtCode); + if (boatIds == null) { + boatIds = new ArrayList<String>(); + boatDistrictCodes.put(districtCode, boatIds); + } + boatIds.add(topiaId); + } + + return boatDistrictCodes; + } + + @Override + protected void createBoatDistrictTable_1_5b(List<String> queries) { + queries.add("CREATE TABLE BoatDistrict (" + + "topiaId CHARACTER VARYING(255) PRIMARY KEY," + + "topiaVersion BIGINT NOT NULL," + + "topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," + + "code CHARACTER VARYING(10) NOT NULL," + + "name TEXT," + + "latitude DOUBLE PRECISION," + + "longitude DOUBLE PRECISION," + + "CONSTRAINT boatDistrict_code_key UNIQUE(code)" + + ");"); + } + + @Override + protected Map<String, String> insertBoatDistricts_1_5c(List<String> queries, Map<String, List<String>> boatDistrictCodes) { + + Map<String, String> boats = new HashMap<String, String>(); + + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + + Set<String> codes = boatDistrictCodes.keySet(); + for (String code : codes) { + // FIXME-fdesbois-2010-06-29 : Seems dangerous to use class, maybe it's better to use full qualified name 'fr.ifremer.wao.entity.BoatDistrict' + String districtId = TopiaId.create(BoatDistrict.class); + String createDate = dateFormat.format(new Date()); + queries.add(String.format( + "INSERT INTO BoatDistrict VALUES ('%s', %d, '%s', '%s', null, null, null);", + districtId, 0, createDate, code) + ); + + for (String boatId : boatDistrictCodes.get(code)) { + boats.put(boatId, districtId); + } + } + + return boats; + } + + @Override + protected void updateBoatWithBoatDistrict_1_5d(List<String> queries, Map<String, String> boats) { + queries.add("ALTER TABLE Boat ADD boatDistrict CHARACTER VARYING(255)" + + " REFERENCES BoatDistrict (topiaId);"); + + for (Map.Entry<String, String> entry : boats.entrySet()) { + String districtId = entry.getValue(); + String boatId = entry.getKey(); + + queries.add(String.format( + "UPDATE Boat SET boatDistrict = '%s' WHERE topiaId = '%s';", + districtId, boatId) + ); + } + + queries.add("ALTER TABLE Boat DROP COLUMN districtCode;"); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-06-29 11:57:12 UTC (rev 579) @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.hibernate.SQLQuery; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.migration.TopiaMigrationCallback; @@ -35,6 +36,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @@ -68,12 +70,21 @@ protected abstract void createContactCommentColumns_1_4b(List<String> queries); + protected abstract Map<String, List<String>> retrieveBoatDistrictCodes_1_5a(TopiaContextImplementor tx) throws TopiaException; + + protected abstract void createBoatDistrictTable_1_5b(List<String> queries); + + protected abstract Map<String, String> insertBoatDistricts_1_5c(List<String> queries, Map<String, List<String>> boatDistrictCodes); + + protected abstract void updateBoatWithBoatDistrict_1_5d(List<String> queries, Map<String, String> boats); + protected static final Version[] VERSIONS = new Version[] { VersionUtil.valueOf("1.0"), VersionUtil.valueOf("1.1"), VersionUtil.valueOf("1.2"), VersionUtil.valueOf("1.3"), - VersionUtil.valueOf("1.4") + VersionUtil.valueOf("1.4"), + VersionUtil.valueOf("1.5") }; @Override @@ -169,4 +180,38 @@ String[] strings = queries.toArray(new String[queries.size()]); executeSQL(tx, showSql, showProgression, strings); } + + public void migrateTo_1_5(TopiaContextImplementor tx, + boolean showSql, + boolean showProgression) throws TopiaException { + if (log.isInfoEnabled()) { + log.info("Migrate to version 1.5"); + } + + // Retrieve existing code (key) and its list of boat ids (value) + Map<String, List<String>> boatDistrictCodes = retrieveBoatDistrictCodes_1_5a(tx); + + if (log.isDebugEnabled()) { + for (Map.Entry<String, List<String>> entry : boatDistrictCodes.entrySet()) { + log.debug("-- District Code = " + entry.getKey() + + " _ nbBoats = " + entry.getValue().size()); + } + } + +// List<String> queries = new ArrayList <String>(); +// +// // Create the boatDistrict table +// createBoatDistrictTable_1_5b(queries); +// +// // Insert boatDistrict using the previous map. +// // This will return boats with boatDisctrict id in value +// Map<String, String> boats = insertBoatDistricts_1_5c(queries, boatDistrictCodes); +// +// // Update the Boat table with id of district (create column as foreign key) +// updateBoatWithBoatDistrict_1_5d(queries, boats); +// +// String[] strings = queries.toArray(new String[queries.size()]); +// executeSQL(tx, showSql, showProgression, strings); + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-06-29 11:57:12 UTC (rev 579) @@ -25,18 +25,12 @@ import fr.ifremer.wao.entity.*; import org.apache.commons.lang.StringUtils; import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.*; -import static fr.ifremer.wao.WaoQueryHelper.$; - -//import static fr.ifremer.wao.TopiaQueryExtra.$; -//import static fr.ifremer.wao.TopiaQueryExtra.$P; - /** * Created: 7 juin 2010 * @@ -250,7 +244,8 @@ // Apply filter for fishingZone on subQuery applySimpleFishingZoneFilter(filter, subquery); - query.addSubQuery($("$1 IN (?)", sampleRowProperty.$alias()), subquery); + query.addSubQuery(WaoQueryHelper.format( + "$1 IN (?)", sampleRowProperty.$alias()), subquery); } } @@ -305,7 +300,7 @@ } if (StringUtils.isNotEmpty(boatDistrictCode)) { - query.addEquals(boatProperty.districtCode(), boatDistrictCode.trim()); + query.addEquals(boatProperty.boatDistrictProperty().code(), boatDistrictCode.trim()); } if (boatImmatriculation != null) { @@ -321,7 +316,7 @@ String input = '%' + StringUtils.upperCase(shipOwnerName) + '%'; query.addWhere( - $("CONCAT(CONCAT($1, ' '), $2) LIKE :input", + WaoQueryHelper.format("CONCAT(CONCAT($1, ' '), $2) LIKE :input", shipOwnerProperty.firstName(), shipOwnerProperty.lastName()) ).addParam("input", input); @@ -365,7 +360,8 @@ // Company if (company != null) { // Test only valid ElligibleBoat for that company - query.addWhere($("$1 = :booleanTrue OR ($1 IS NULL AND $2 = :booleanTrue)", + query.addWhere(WaoQueryHelper.format( + "$1 = :booleanTrue OR ($1 IS NULL AND $2 = :booleanTrue)", elligibleBoatProperty.companyActive(), elligibleBoatProperty.globalActive()) ).addParam("booleanTrue", Boolean.TRUE); @@ -427,7 +423,8 @@ // MAMMALS_OBSERVATION and MAMMALS_CAPTURE if (mammalsObservation && mammalsCapture) { - query.addWhere($("$1 = :mammals OR $2 = :mammals", + query.addWhere(WaoQueryHelper.format( + "$1 = :mammals OR $2 = :mammals", contactProperty.mammalsObservation(), contactProperty.mammalsCapture()) ).addParam("mammals", Boolean.TRUE); Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java 2010-06-29 11:57:12 UTC (rev 579) @@ -1,541 +0,0 @@ -/* - * #%L - * Wao :: Business - * %% - * Copyright (C) 2009 - 2010 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ifremer.wao; - -import fr.ifremer.wao.entity.Boat; -import fr.ifremer.wao.entity.Contact; -import fr.ifremer.wao.entity.ElligibleBoat; -import fr.ifremer.wao.entity.FishingZone; -import fr.ifremer.wao.entity.Profession; -import fr.ifremer.wao.entity.SampleMonth; -import fr.ifremer.wao.entity.SampleRow; -import fr.ifremer.wao.entity.ShipOwner; -import fr.ifremer.wao.entity.WaoUser; -import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaEntity; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Created: 18 juin 2010 - * - * @author fdesbois <fdesbois at codelutin.com> - * @version $Id$ - */ -public class WaoQueryHelper { - - public static String ALIAS_SHIP_OWNER = "SO"; - - public static String ALIAS_BOAT = "B"; - - public static String ALIAS_ELLIGIBLE_BOAT = "EB"; - - public static String ALIAS_SAMPLE_ROW = "SR"; - - public static String ALIAS_SAMPLE_MONTH = "SM"; - - public static String ALIAS_PROFESSION = "P"; - - public static String ALIAS_FISHING_ZONE = "FZ"; - - public static String ALIAS_CONTACT = "C"; - - public static String ALIAS_WAO_USER = "WU"; - - public static String ALIAS_ACTIVITY_CALENDAR = "AC"; - - public static TopiaQuery createQuery(EntityProperty property) { - return new TopiaQuery((Class<? extends TopiaEntity>)property.getEntityClass(), property.$alias()); - } - - public static String $(String statement, String... properties) { - for (int i = 1; i <= properties.length; i++) { - statement = statement.replace("$" + i, properties[i-1]); - } - return statement; - } - - private static <P extends EntityProperty> P newEntityProperty(Class<P> propertyClass) throws WaoException { - return newEntityProperty(propertyClass, null); - } - - private static <P extends EntityProperty> P newEntityProperty(Class<P> propertyClass, String alias) throws WaoException { - try { - P property = propertyClass.newInstance(); - if (alias == null) { - alias = property.defaultAlias(); - } - property.setAlias(alias); - return property; - } catch (Exception eee) { - throw new WaoException("Error instantiate " + propertyClass.getName(), eee); - } - } - - public static SampleRowProperty newSampleRowProperty() throws WaoException { - return newSampleRowProperty(null); - } - - public static SampleRowProperty newSampleRowProperty(String alias) throws WaoException { - return newEntityProperty(SampleRowProperty.class, alias); - } - - public static SampleMonthProperty newSampleMonthProperty() throws WaoException { - return newSampleMonthProperty(null); - } - - public static SampleMonthProperty newSampleMonthProperty(String alias) throws WaoException { - return newEntityProperty(SampleMonthProperty.class, alias); - } - - public static ContactProperty newContactProperty() throws WaoException { - return newContactProperty(null); - } - - public static ContactProperty newContactProperty(String alias) throws WaoException { - return newEntityProperty(ContactProperty.class, alias); - } - - public static FishingZoneProperty newFishingZoneProperty() throws WaoException { - return newFishingZoneProperty(null); - } - - public static FishingZoneProperty newFishingZoneProperty(String alias) throws WaoException { - return newEntityProperty(FishingZoneProperty.class, alias); - } - - public static ElligibleBoatProperty newElligibleBoatProperty() throws WaoException { - return newElligibleBoatProperty(null); - } - - public static ElligibleBoatProperty newElligibleBoatProperty(String alias) throws WaoException { - return newEntityProperty(ElligibleBoatProperty.class, alias); - } - - public static BoatProperty newBoatProperty() throws WaoException { - return newBoatProperty(null); - } - - public static BoatProperty newBoatProperty(String alias) throws WaoException { - return newEntityProperty(BoatProperty.class, alias); - } - - public static ShipOwnerProperty newShipOwnerProperty() throws WaoException { - return newShipOwnerProperty(null); - } - - public static ShipOwnerProperty newShipOwnerProperty(String alias) throws WaoException { - return newEntityProperty(ShipOwnerProperty.class, alias); - } - - public static WaoUserProperty newWaoUserProperty() throws WaoException { - return newWaoUserProperty(null); - } - - public static WaoUserProperty newWaoUserProperty(String alias) throws WaoException { - return newEntityProperty(WaoUserProperty.class, alias); - } - - protected static abstract class EntityProperty<E> { - protected String alias; - - protected Map<String, String> propertiesCache; - - public EntityProperty() { - propertiesCache = new HashMap<String, String>(); - } - - protected void setAlias(String alias) { - this.alias = alias; - } - - public String $alias() { - return alias; - } - - public String $property(String propertyName) { - String result = propertiesCache.get(propertyName); - if (result == null) { - result = TopiaQuery.getProperty(alias, propertyName); - propertiesCache.put(propertyName, result); - } - return result; - } - - public String topiaCreateDate() { - return $property(TopiaEntity.TOPIA_CREATE_DATE); - } - - public String topiaId() { - return $property(TopiaEntity.TOPIA_ID); - } - - public String topiaVersion() { - return $property(TopiaEntity.TOPIA_VERSION); - } - - public abstract Class<E> getEntityClass(); - - public abstract String defaultAlias(); - } - - public static class ShipOwnerProperty extends EntityProperty<ShipOwner> { - - protected ShipOwnerProperty() { - } - - public String firstName() { - return $property(ShipOwner.FIRST_NAME); - } - - public String lastName() { - return $property(ShipOwner.LAST_NAME); - } - - @Override - public Class<ShipOwner> getEntityClass() { - return ShipOwner.class; - } - - @Override - public String defaultAlias() { - return ALIAS_SHIP_OWNER; - } - } - - public static class BoatProperty extends EntityProperty<Boat> { - - protected BoatProperty() { - } - - public String immatriculation() { - return $property(Boat.IMMATRICULATION); - } - - public String name() { - return $property(Boat.NAME); - } - - public String districtCode() { - return $property(Boat.DISTRICT_CODE); - } - - public String boatLength() { - return $property(Boat.BOAT_LENGTH); - } - - public String buildYear() { - return $property(Boat.BUILD_YEAR); - } - - public String active() { - return $property(Boat.ACTIVE); - } - - public String shipOwner() { - return $property(Boat.SHIP_OWNER); - } - - public ShipOwnerProperty shipOwnerProperty() { - return newShipOwnerProperty(shipOwner()); - } - - public String elligibleBoat() { - return $property(Boat.ELLIGIBLE_BOAT); - } - - @Override - public Class<Boat> getEntityClass() { - return Boat.class; - } - - @Override - public String defaultAlias() { - return ALIAS_BOAT; - } - } - - public static class ElligibleBoatProperty extends EntityProperty<ElligibleBoat> { - - protected ElligibleBoatProperty() { - } - - public String companyActive() { - return $property(ElligibleBoat.COMPANY_ACTIVE); - } - - public String globalActive() { - return $property(ElligibleBoat.GLOBAL_ACTIVE); - } - - public String sampleRow() { - return $property(ElligibleBoat.SAMPLE_ROW); - } - - public SampleRowProperty sampleRowProperty() { - return newEntityProperty(SampleRowProperty.class, sampleRow()); - } - - @Override - public Class<ElligibleBoat> getEntityClass() { - return ElligibleBoat.class; - } - - @Override - public String defaultAlias() { - return ALIAS_ELLIGIBLE_BOAT; - } - } - - public static class SampleRowProperty extends EntityProperty<SampleRow> { - - protected SampleRowProperty() { - } - - public String programName() { - return $property(SampleRow.PROGRAM_NAME); - } - - public String code() { - return $property(SampleRow.CODE); - } - - public String periodBegin() { - return $property(SampleRow.PERIOD_BEGIN); - } - - public String periodEnd() { - return $property(SampleRow.PERIOD_END); - } - - public String profession() { - return $property(SampleRow.PROFESSION); - } - - public ProfessionProperty professionProperty() { - return newEntityProperty(ProfessionProperty.class, profession()); - } - - public String company() { - return $property(SampleRow.COMPANY); - } - - public String fishingZone() { - return $property(SampleRow.FISHING_ZONE); - } - - public String sampleMonth() { - return $property(SampleRow.SAMPLE_MONTH); - } - - @Override - public Class<SampleRow> getEntityClass() { - return SampleRow.class; - } - - @Override - public String defaultAlias() { - return ALIAS_SAMPLE_ROW; - } - } - - public static class SampleMonthProperty extends EntityProperty<SampleMonth> { - - protected SampleMonthProperty() { - } - - public String periodDate() { - return $property(SampleMonth.PERIOD_DATE); - } - - public String realTidesValue() { - return $property(SampleMonth.REAL_TIDES_VALUE); - } - - public String expectedTidesValue() { - return $property(SampleMonth.EXPECTED_TIDES_VALUE); - } - - public String estimatedTidesValue() { - return $property(SampleMonth.ESTIMATED_TIDES_VALUE); - } - - public String sampleRow() { - return $property(SampleMonth.SAMPLE_ROW); - } - - public SampleRowProperty sampleRowProperty() { - return newEntityProperty(SampleRowProperty.class, sampleRow()); - } - - @Override - public Class<SampleMonth> getEntityClass() { - return SampleMonth.class; - } - - @Override - public String defaultAlias() { - return ALIAS_SAMPLE_MONTH; - } - } - - public static class ProfessionProperty extends EntityProperty<Profession> { - - protected ProfessionProperty() { - } - - public String codeDCF5() { - return $property(Profession.CODE_DCF5); - } - - @Override - public Class<Profession> getEntityClass() { - return Profession.class; - } - - @Override - public String defaultAlias() { - return ALIAS_PROFESSION; - } - } - - public static class FishingZoneProperty extends EntityProperty<FishingZone> { - - protected FishingZoneProperty() { - } - - public String sectorName() { - return $property(FishingZone.SECTOR_NAME); - } - - public String facadeName() { - return $property(FishingZone.FACADE_NAME); - } - - public String districtCode() { - return $property(FishingZone.DISTRICT_CODE); - } - - public String sampleRow() { - return $property(FishingZone.SAMPLE_ROW); - } - - @Override - public Class<FishingZone> getEntityClass() { - return FishingZone.class; - } - - @Override - public String defaultAlias() { - return ALIAS_FISHING_ZONE; - } - } - - public static class ContactProperty extends EntityProperty<Contact> { - - protected ContactProperty() { - } - - public String mammalsObservation() { - return $property(Contact.MAMMALS_OBSERVATION); - } - - public String mammalsCapture() { - return $property(Contact.MAMMALS_CAPTURE); - } - - public String validationProgram() { - return $property(Contact.VALIDATION_PROGRAM); - } - - public String validationCompany() { - return $property(Contact.VALIDATION_COMPANY); - } - - public String tideBeginDate() { - return $property(Contact.TIDE_BEGIN_DATE); - } - - public String state() { - return $property(Contact.STATE); - } - - public String observer() { - return $property(Contact.OBSERVER); - } - - public WaoUserProperty observerProperty() { - return newWaoUserProperty(observer()); - } - - public String sampleRow() { - return $property(Contact.SAMPLE_ROW); - } - - public SampleRowProperty sampleRowProperty() { - return newSampleRowProperty(sampleRow()); - } - - public String boat() { - return $property(Contact.BOAT); - } - - public BoatProperty boatProperty() { - return newBoatProperty(boat()); - } - - @Override - public Class<Contact> getEntityClass() { - return Contact.class; - } - - @Override - public String defaultAlias() { - return ALIAS_CONTACT; - } - } - - public static class WaoUserProperty extends EntityProperty<WaoUser> { - - protected WaoUserProperty() { - } - - public String company() { - return $property(WaoUser.COMPANY); - } - - @Override - public Class<WaoUser> getEntityClass() { - return WaoUser.class; - } - - @Override - public String defaultAlias() { - return ALIAS_WAO_USER; - } - } -} Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2010-06-29 11:57:12 UTC (rev 579) @@ -120,5 +120,8 @@ return result; } - + @Override + public String getDistrictCode() { + return getBoatDistrict().getCode(); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-06-29 11:57:12 UTC (rev 579) @@ -31,9 +31,6 @@ import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.framework.TopiaQuery.Op; -import static fr.ifremer.wao.WaoQueryHelper.$; - - /** * ContactDAOImpl * @@ -91,15 +88,18 @@ // Construct subquery TopiaQuery subquery = createQuery(subContactProperty.$alias()). - setSelect($("MAX($1)", subContactProperty.topiaCreateDate())). - addWhere($("$1 = $2", subContactProperty.boat(), mainContactProperty.boat())). + setSelect(WaoQueryHelper.format( + "MAX($1)", subContactProperty.topiaCreateDate())). + addWhere(WaoQueryHelper.format( + "$1 = $2", subContactProperty.boat(), mainContactProperty.boat())). addEquals(subContactProperty.observerProperty().company(), company); // Construct mainquery TopiaQuery query = createQuery(mainContactProperty.$alias()). addEquals(mainContactProperty.boat(), boat). addEquals(mainContactProperty.observerProperty().company(), company). - addSubQuery($("$1 = (?)", mainContactProperty.topiaCreateDate()), subquery); + addSubQuery(WaoQueryHelper.format( + "$1 = (?)", mainContactProperty.topiaCreateDate()), subquery); return query; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-29 11:57:12 UTC (rev 579) @@ -59,8 +59,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static fr.ifremer.wao.WaoQueryHelper.$; - /** * ServiceBoatImpl * @@ -329,7 +327,7 @@ TopiaQuery query = builder. applyShipOwnerFilter(shipOwnerName). addDistinct(). - setSelect($("CONCAT(CONCAT($1,' '), $2)", + setSelect(WaoQueryHelper.format("CONCAT(CONCAT($1,' '), $2)", shipOwnerProperty.firstName(), shipOwnerProperty.lastName()) ); @@ -370,10 +368,12 @@ BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction); ShipOwnerDAO shipOwnerDAO = WaoDAOHelper.getShipOwnerDAO(transaction); + BoatDistrictDAO districtDAO = WaoDAOHelper.getBoatDistrictDAO(transaction); - Map<String, ShipOwner> availableShipOwners = - new HashMap<String, ShipOwner>(); + Map<String, ShipOwner> availableShipOwners = new HashMap<String, ShipOwner>(); + Map<String, BoatDistrict> availableDistricts = new HashMap<String, BoatDistrict>(); + tic = System.currentTimeMillis(); Pattern pattern = Pattern.compile("\\d{6}"); while(reader.readRecord()) { @@ -424,11 +424,27 @@ result[1]++; } boat.setName(boatName); - boat.setDistrictCode(districtCode); boat.setBuildYear(buildYear); boat.setBoatLength(boatLength); boat.setActive(active); + BoatDistrict district = availableDistricts.get(districtCode); + + if (logger.isDebugEnabled()) { + logger.debug("District code : " + districtCode + + " _ district found : " + district); + } + + if (district == null) { + district = districtDAO.findByCode(districtCode); + if (district == null) { + district = districtDAO.create(BoatDistrict.CODE, districtCode); + } + availableDistricts.put(districtCode, district); + } + + boat.setBoatDistrict(district); + // Find existing shipOwner with code ShipOwner shipOwner = availableShipOwners.get(shipOwnerCode); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-29 11:57:12 UTC (rev 579) @@ -38,6 +38,13 @@ import java.util.Map; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; +import fr.ifremer.wao.WaoBinderHelper; +import fr.ifremer.wao.WaoBusinessException; +import fr.ifremer.wao.WaoContext; +import fr.ifremer.wao.WaoDAOHelper; +import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.WaoQueryBuilder; +import fr.ifremer.wao.WaoQueryHelper; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.UserRole; import org.slf4j.Logger; @@ -46,7 +53,6 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.framework.TopiaQuery; -import fr.ifremer.wao.*; import fr.ifremer.wao.bean.ContactStatus; import fr.ifremer.wao.bean.ContactStatus.NullSampleMonthException; import fr.ifremer.wao.bean.ContactFilter; @@ -495,7 +501,7 @@ public ImportResults executeImportContactCsv(TopiaContext transaction, ConnectedUser user, InputStream input) throws TopiaException, IOException, - WaoBusinessException, ParseException { + WaoBusinessException, ParseException { ImportResults result = new ImportResultsImpl(); int currRow = 1; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-06-29 08:31:33 UTC (rev 578) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-06-29 11:57:12 UTC (rev 579) @@ -66,8 +66,6 @@ import java.util.SortedMap; import java.util.TreeMap; -import static fr.ifremer.wao.WaoQueryHelper.$; - /** * ServiceSynthesisImpl * @@ -138,8 +136,8 @@ TopiaQuery query = builder.applySamplingFilter(filter). setSelect(sampleMonthProperty.periodDate()). - addSelect($("SUM($1)", realTidesProperty)). - addSelect($("SUM($1)", sampleMonthProperty.expectedTidesValue())). + addSelect(WaoQueryHelper.format("SUM($1)", realTidesProperty)). + addSelect(WaoQueryHelper.format("SUM($1)", sampleMonthProperty.expectedTidesValue())). addBetween(sampleMonthProperty.periodDate(), period.getFromDate(), period.getThruDate()). addGroup(sampleMonthProperty.periodDate()). addOrder(sampleMonthProperty.periodDate()); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ)
participants (1)
-
fdesbois@users.labs.libre-entreprise.org