[Git][ultreiaio/ird-t3][develop] [N0] Calcul des temps de pêche (See #240)
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3 Commits: 0c634be4 by Tony CHEMIT at 2018-02-21T00:11:54+01:00 [N0] Calcul des temps de pêche (See #240) - - - - - 7 changed files: - t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java - t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_1.java - − t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_2.java - t3-domain/src/main/resources/db/migration/V2_2_07_add-Route-table.sql → t3-domain/src/main/resources/db/migration/V2_1_07_add-Route-table.sql - t3-domain/src/main/resources/db/migration/V2_2_08_remove-Trip-fields.sql → t3-domain/src/main/resources/db/migration/V2_1_08_remove-Trip-fields.sql - t3-domain/src/main/xmi/t3-persistence.properties - t3-domain/src/main/xmi/t3-persistence.zargo Changes: ===================================== t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java +++ b/t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java @@ -59,6 +59,17 @@ public class ActivityImpl extends ActivityAbstract { ); protected Integer quadrant; + private transient Date date; + + @Override + public Date getDate() { + return date != null ? date : getRoute().getDate(); + } + + @Override + public void setDate(Date date) { + this.date = date; + } @Override public Trip getTrip() { ===================================== t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_1.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_1.java +++ b/t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_1.java @@ -22,12 +22,24 @@ package fr.ird.t3.services.migration; */ import com.google.auto.service.AutoService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG; import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; +import org.nuiton.util.DateUtil; import org.nuiton.version.Versions; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * Created by tchemit on 18/02/2018. @@ -37,6 +49,8 @@ import java.util.List; @AutoService(TopiaMigrationCallbackByClassNG.MigrationCallBackForVersion.class) public class T3MigrationCallbackV2_1 extends T3MigrationCallbackSupport { + private static final Log log = LogFactory.getLog(T3MigrationCallbackV2_1.class); + public T3MigrationCallbackV2_1() { super(Versions.valueOf("2.1")); } @@ -49,6 +63,76 @@ public class T3MigrationCallbackV2_1 extends T3MigrationCallbackSupport { addScript("04", "rename-SampleWell-table", queries); addScript("05", "rename-SampleSpecies-fields", queries); addScript("06", "referential-i18n", queries); + addScript("07", "add-Route-table", queries); + + + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + List<String> tripList = sqlSupport.findMultipleResult(new TopiaSqlQuery<String>() { + @Override + public PreparedStatement prepareQuery(Connection connection) throws SQLException { + return connection.prepareStatement("SELECT DISTINCT(a.trip) FROM activity a"); + } + + @Override + public String prepareResult(ResultSet set) throws SQLException { + return set.getString(1); + } + }); + + for (String tripId : tripList) { + + int i = tripId.indexOf('#'); + String routeIdPrefix = "fr.ird.t3.entities.data.Route#" + tripId.substring(i + 1).replace(".", "").replace("#", "") + "#"; + + log.info("Route prefix: " + routeIdPrefix); + List<TripActivity> activityList = sqlSupport.findMultipleResult(new TopiaSqlQuery<TripActivity>() { + @Override + public PreparedStatement prepareQuery(Connection connection) throws SQLException { + PreparedStatement preparedStatement = connection.prepareStatement("SELECT a.topiaId, a.date FROM activity a WHERE a.trip = ? ORDER BY date"); + preparedStatement.setString(1, tripId); + return preparedStatement; + } + + @Override + public TripActivity prepareResult(ResultSet set) throws SQLException { + return new TripActivity(set.getString(1), set.getDate(2)); + } + }); + + int activityIndex = 0; + Set<Date> days = new LinkedHashSet<>(); + for (TripActivity activity : activityList) { + + String dayDateStr = df.format(activity.date); + String routeId = routeIdPrefix + dayDateStr.replaceAll("-", ""); + + if (days.add(activity.date)) { + + log.info(String.format("[%s] new Route: %s", tripId, routeId)); + activityIndex = 0; + queries.add(String.format("INSERT INTO Route(topiaId, topiaVersion, topiaCreateDate, trip, trip_idx, date) VALUES('%s', 0, CURRENT_TIMESTAMP, '%s', %d, to_date('%s', 'YYY-MM-DD'));", routeId, tripId, days.size() - 1, dayDateStr)); + } + queries.add(String.format("UPDATE Activity SET route = '%s', route_idx = %d , topiaVersion = topiaVersion + 1 WHERE topiaId = '%s';", routeId, activityIndex++, activity.activity)); + } + + if (!activityList.isEmpty()) { + queries.add(String.format("UPDATE Trip SET effortComputed = false, topiaVersion = topiaVersion + 1 WHERE topiaId = '%s';", tripId)); + } + } + + addScript("08", "remove-Trip-fields", queries); } + + private static class TripActivity { + + private final String activity; + private final Date date; + + private TripActivity(String activity, Date date) { + this.activity = activity; + this.date = DateUtil.getDay(date); + } + } } ===================================== t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_2.java deleted ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_2.java +++ /dev/null @@ -1,133 +0,0 @@ -package fr.ird.t3.services.migration; - -/* - * #%L - * T3 :: Domain - * %% - * Copyright (C) 2010 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero 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 Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ - -import com.google.auto.service.AutoService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG; -import org.nuiton.topia.persistence.TopiaException; -import org.nuiton.topia.persistence.support.TopiaSqlQuery; -import org.nuiton.topia.persistence.support.TopiaSqlSupport; -import org.nuiton.util.DateUtil; -import org.nuiton.version.Versions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -/** - * Created by tchemit on 18/02/2018. - * - * @author Tony Chemit - dev@tchemit.fr - */ -@AutoService(TopiaMigrationCallbackByClassNG.MigrationCallBackForVersion.class) -public class T3MigrationCallbackV2_2 extends T3MigrationCallbackSupport { - - private static final Log log = LogFactory.getLog(T3MigrationCallbackV2_2.class); - - public T3MigrationCallbackV2_2() { - super(Versions.valueOf("2.2")); - } - - @Override - protected void prepareMigrationScript(TopiaSqlSupport sqlSupport, List<String> queries, boolean showSql, boolean showProgression) throws TopiaException { - addScript("07", "add-Route-table", queries); - - - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - - List<String> tripList = sqlSupport.findMultipleResult(new TopiaSqlQuery<String>() { - @Override - public PreparedStatement prepareQuery(Connection connection) throws SQLException { - return connection.prepareStatement("SELECT DISTINCT(a.trip) FROM activity a"); - } - - @Override - public String prepareResult(ResultSet set) throws SQLException { - return set.getString(1); - } - }); - - for (String tripId : tripList) { - - int i = tripId.indexOf('#'); - String routeIdPrefix = "fr.ird.t3.entities.data.Route#" + tripId.substring(i + 1, tripId.lastIndexOf('#') + 1); - - log.info("Route prefix: " + routeIdPrefix); - List<TripActivity> activityList = sqlSupport.findMultipleResult(new TopiaSqlQuery<TripActivity>() { - @Override - public PreparedStatement prepareQuery(Connection connection) throws SQLException { - PreparedStatement preparedStatement = connection.prepareStatement("SELECT a.topiaId, a.date FROM activity a WHERE a.trip = ?"); - preparedStatement.setString(1, tripId); - return preparedStatement; - } - - @Override - public TripActivity prepareResult(ResultSet set) throws SQLException { - return new TripActivity(set.getString(1), set.getDate(2)); - } - }); - - - Set<Date> days = new LinkedHashSet<>(); - int activityIndex = 0; - for (TripActivity activity : activityList) { - - String dayDateStr = df.format(activity.date); - String routeId = routeIdPrefix + dayDateStr.replaceAll("-", ""); - - if (days.add(activity.date)) { - - log.info(String.format("[%s] new Route: %s", tripId, routeId)); - // create new route - queries.add(String.format("INSERT INTO Route(topiaId, topiaVersion, topiaCreateDate, trip, trip_idx, date) VALUES('%s', 0, CURRENT_TIMESTAMP, '%s', %d, to_date('%s', 'YYY-MM-DD'));", routeId, tripId, days.size() - 1, dayDateStr)); - } - queries.add(String.format("UPDATE Activity SET route = '%s', route_idx = %d , topiaVersion = topiaVersion + 1 WHERE topiaId = '%s';", routeId, (activityIndex++), activity.activity)); - } - - if (!activityList.isEmpty()) { - queries.add(String.format("UPDATE Trip SET effortComputed = false, topiaVersion = topiaVersion + 1 WHERE topiaId = '%s';", tripId)); - } - } - - addScript("08", "remove-Trip-fields", queries); - } - - private static class TripActivity { - - private final String activity; - private final Date date; - - private TripActivity(String activity, Date date) { - this.activity = activity; - this.date = DateUtil.getDay(date); - } - } - -} ===================================== t3-domain/src/main/resources/db/migration/V2_2_07_add-Route-table.sql → t3-domain/src/main/resources/db/migration/V2_1_07_add-Route-table.sql ===================================== ===================================== t3-domain/src/main/resources/db/migration/V2_2_08_remove-Trip-fields.sql → t3-domain/src/main/resources/db/migration/V2_1_08_remove-Trip-fields.sql ===================================== ===================================== t3-domain/src/main/xmi/t3-persistence.properties ===================================== --- a/t3-domain/src/main/xmi/t3-persistence.properties +++ b/t3-domain/src/main/xmi/t3-persistence.properties @@ -22,7 +22,7 @@ model.tagValue.notGenerateToString=true model.tagValue.generateOperatorForDAOHelper=true model.tagValue.constantPrefix=PROPERTY_ -model.tagValue.version=2.2 +model.tagValue.version=2.1 model.tagValue.indexForeignKeys=true fr.ird.t3.entities.data.Trip.attribute.route.stereotype=ordered ===================================== t3-domain/src/main/xmi/t3-persistence.zargo ===================================== Binary files a/t3-domain/src/main/xmi/t3-persistence.zargo and b/t3-domain/src/main/xmi/t3-persistence.zargo differ View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/0c634be4613a78a9b21ebc1b8b53e5b56... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/0c634be4613a78a9b21ebc1b8b53e5b56... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT