r1008 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb echobase-domain/src/main/resources echobase-domain/src/main/resources/META-INF/services echobase-domain/src/main/resources/migration echobase-domain/src/main/xmi echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial
Author: tchemit Date: 2014-04-17 10:11:08 +0200 (Thu, 17 Apr 2014) New Revision: 1008 Url: http://forge.codelutin.com/projects/echobase/repository/revisions/1008 Log: fixes #4947 fixes #4950 Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_6_1.java trunk/echobase-domain/src/main/resources/migration/postgis-structure-2.6.1.sql Modified: trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion trunk/echobase-domain/src/main/resources/postgis-structure.sql trunk/echobase-domain/src/main/xmi/echobase.properties trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_6_1.java =================================================================== --- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_6_1.java (rev 0) +++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_6_1.java 2014-04-17 08:11:08 UTC (rev 1008) @@ -0,0 +1,44 @@ +package fr.ifremer.echobase.persistence.migration.workingDb; + +import fr.ifremer.echobase.entities.EchoBaseUserTopiaPersistenceContext; +import fr.ifremer.echobase.io.EchoBaseIOUtil; +import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.util.Version; + +import java.util.List; + +/** + * Created on 4/16/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 2.7 + */ +public class MigrationCallBackForVersion2_6_1 extends MigrationCallBackForVersion { + + public static final String POSTGIS_STRUCTURE_SQL = "/migration/postgis-structure-2.6.1.sql"; + + @Override + public Version getVersion() { + return new Version("2.6.1"); + } + + @Override + protected void prepareMigrationScript(EchoBaseUserTopiaPersistenceContext tx, + List<String> queries, + boolean showSql, + boolean showProgression) throws TopiaException { + + boolean spatialAware = tx.isSpatialAware(); + + if (spatialAware) { + + // fix add new postigs view (see https://forge.codelutin.com/issues/4194) + updatePostgis(queries); + } + } + + protected void updatePostgis(List<String> queries) { + queries.add(EchoBaseIOUtil.loadScript(POSTGIS_STRUCTURE_SQL)); + } + +} \ No newline at end of file Property changes on: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/MigrationCallBackForVersion2_6_1.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion =================================================================== --- trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion 2014-04-05 17:08:15 UTC (rev 1007) +++ trunk/echobase-domain/src/main/resources/META-INF/services/fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion 2014-04-17 08:11:08 UTC (rev 1008) @@ -1,3 +1,4 @@ fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_2 fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_5_1 -fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_6 \ No newline at end of file +fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_6 +fr.ifremer.echobase.persistence.migration.workingDb.MigrationCallBackForVersion2_6_1 \ No newline at end of file Added: trunk/echobase-domain/src/main/resources/migration/postgis-structure-2.6.1.sql =================================================================== --- trunk/echobase-domain/src/main/resources/migration/postgis-structure-2.6.1.sql (rev 0) +++ trunk/echobase-domain/src/main/resources/migration/postgis-structure-2.6.1.sql 2014-04-17 08:11:08 UTC (rev 1008) @@ -0,0 +1,102 @@ +CREATE OR REPLACE FUNCTION echobase_delete_cell() + RETURNS TRIGGER AS $$ +BEGIN + + RAISE DEBUG 'Delete cell % , delete cascade in echobase_cell_spatial_table', OLD.topiaid; + + DELETE FROM echobase_cell_spatial_temp WHERE cellid = OLD.topiaid; + DELETE FROM echobase_cell_spatial WHERE cellid = OLD.topiaid; + + RETURN OLD; +END +$$ +LANGUAGE 'plpgsql'; + +CREATE OR REPLACE FUNCTION echobase_delete_operation() + RETURNS TRIGGER AS $$ +BEGIN + + RAISE DEBUG 'Delete operation % , delete cascade in echobase_operation_spatial_table', OLD.topiaid; + + DELETE FROM echobase_operation_spatial_temp WHERE operationid = OLD.topiaid; + DELETE FROM echobase_operation_spatial WHERE operationid = OLD.topiaid; + + RETURN OLD; +END +$$ +LANGUAGE 'plpgsql'; + +CREATE OR REPLACE FUNCTION echobase_create_echobase_operation_spatial_row( + operation_id VARCHAR, + coordinateText VARCHAR) + RETURNS VOID AS $$ +DECLARE + operationSpatialRow RECORD; + voyageId VARCHAR; + voyageName VARCHAR; + transitId VARCHAR; + transitName VARCHAR; + transectId VARCHAR; + transectName VARCHAR; + operationId VARCHAR; + operationName VARCHAR; + operationRow RECORD; + coordinateData GEOMETRY; +BEGIN + IF coordinateText IS NULL + THEN + RAISE DEBUG 'Could not find spatial data for operation %', operation_id; + RETURN; + END IF; + BEGIN + coordinateData = ST_GeomFromEWKT(coordinateText); + EXCEPTION WHEN internal_error + THEN + RAISE LOG 'Could not create coordinate operation spatial data %', coordinateText; + RETURN; + END; + + SELECT * INTO operationSpatialRow FROM echobase_operation_spatial os + WHERE os.operationid = operation_id; + IF NOT FOUND + THEN +-- create row + RAISE DEBUG 'Will create spatial operation %', operation_id; +-- get operation infos + SELECT op.id, op.topiaid + INTO operationName, operationId + FROM operation op + WHERE op.topiaid = operation_id; +-- get transect infos + SELECT + t.topiaid, + t.vessel + INTO transectId, transitName + FROM transect t, operation op + WHERE op.topiaid = operation_id AND t.topiaid = op.transect; +-- get transit infos + SELECT + t.topiaid, + (t.starttime || ' - ' || t.endtime) + INTO transitId, transitName + FROM transit t, transect tt + WHERE tt.topiaid = transectId AND t.topiaid = tt.transit; +-- get voyage infos + SELECT + v.topiaid, + v.name + INTO voyageId, voyageName + FROM voyage v, transit t + WHERE t.topiaid = transitId AND v.topiaid = t.voyage; + + INSERT INTO echobase_operation_spatial (lastUpdateDate, voyageid, voyagename, transitid, transitname, transectid, transectname, operationid, operationname, coordinate) + VALUES (now(), voyageId, voyageName, transitId, transitName, transectId, transectName, operationId, operationName, coordinateData); + ELSE +-- update row + RAISE DEBUG 'Will update spatial operation % ', operation_id; + UPDATE echobase_operation_spatial + SET coordinate = coordinateData + WHERE operationid = operation_id; + END IF; +END +$$ LANGUAGE plpgsql; \ No newline at end of file Modified: trunk/echobase-domain/src/main/resources/postgis-structure.sql =================================================================== --- trunk/echobase-domain/src/main/resources/postgis-structure.sql 2014-04-05 17:08:15 UTC (rev 1007) +++ trunk/echobase-domain/src/main/resources/postgis-structure.sql 2014-04-17 08:11:08 UTC (rev 1008) @@ -239,6 +239,7 @@ RAISE DEBUG 'Delete cell % , delete cascade in echobase_cell_spatial_table', OLD.topiaid; + DELETE FROM echobase_cell_spatial_temp WHERE cellid = OLD.topiaid; DELETE FROM echobase_cell_spatial WHERE cellid = OLD.topiaid; RETURN OLD; @@ -967,6 +968,7 @@ RAISE DEBUG 'Delete operation % , delete cascade in echobase_operation_spatial_table', OLD.topiaid; + DELETE FROM echobase_operation_spatial_temp WHERE operationid = OLD.topiaid; DELETE FROM echobase_operation_spatial WHERE operationid = OLD.topiaid; RETURN OLD; @@ -1108,9 +1110,9 @@ ELSE -- update row RAISE DEBUG 'Will update spatial operation % ', operation_id; - UPDATE echobase_operation_spatial eos - SET eos.coordinate = coordinateData - WHERE eos.operationid = operation_id; + UPDATE echobase_operation_spatial + SET coordinate = coordinateData + WHERE operationid = operation_id; END IF; END $$ LANGUAGE plpgsql; Modified: trunk/echobase-domain/src/main/xmi/echobase.properties =================================================================== --- trunk/echobase-domain/src/main/xmi/echobase.properties 2014-04-05 17:08:15 UTC (rev 1007) +++ trunk/echobase-domain/src/main/xmi/echobase.properties 2014-04-17 08:11:08 UTC (rev 1008) @@ -22,7 +22,7 @@ model.tagValue.notGenerateToString=true model.tagValue.generateOperatorForDAOHelper=true model.tagValue.constantPrefix=PROPERTY_ -model.tagValue.version=2.6 +model.tagValue.version=2.6.1 model.tagValue.noPCS=true model.tagValue.doNotGenerateBooleanGetMethods=true model.tagValue.indexForeignKeys=true @@ -271,6 +271,12 @@ fr.ifremer.echobase.entities.data.Category.attribute.echotype.tagValue.naturalId=true fr.ifremer.echobase.entities.data.Category.attribute.speciesCategory.tagValue.naturalId=true +#fr.ifremer.echobase.entities.data.Cell.class.tagValue.naturalIdMutable=true +#fr.ifremer.echobase.entities.data.Cell.attribute.name.tagValue.naturalId=true +#fr.ifremer.echobase.entities.data.Cell.attribute.parentCell.tagValue.naturalId=true +#fr.ifremer.echobase.entities.data.Cell.attribute.dataProcessing.tagValue.naturalId=true +#fr.ifremer.echobase.entities.data.Cell.attribute.voyage.tagValue.naturalId=true + fr.ifremer.echobase.entities.data.Voyage.class.tagValue.naturalIdMutable=true fr.ifremer.echobase.entities.data.Voyage.attribute.name.tagValue.naturalId=true @@ -282,6 +288,10 @@ fr.ifremer.echobase.entities.data.Category.attribute.echotype.tagValue.notNull=false fr.ifremer.echobase.entities.data.Category.attribute.speciesCategory.tagValue.notNull=false +#fr.ifremer.echobase.entities.data.Cell.attribute.parentCell.tagValue.notNull=false +#fr.ifremer.echobase.entities.data.Cell.attribute.dataProcessing.tagValue.notNull=false +#fr.ifremer.echobase.entities.data.Cell.attribute.voyage.tagValue.notNull=false + fr.ifremer.echobase.entities.data.Cell.attribute.cellType.tagValue.notNull=true fr.ifremer.echobase.entities.data.Cell.attribute.name.tagValue.notNull=true Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2014-04-05 17:08:15 UTC (rev 1007) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/SpatialService.java 2014-04-17 08:11:08 UTC (rev 1008) @@ -113,9 +113,7 @@ persistenceService.executeSQL("SELECT echobase_fill_cell_spatial_table();"); persistenceService.commit(); } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not compute spatial data", e); - } + throw new EchoBaseTechnicalException("Could not compute spatial data", e); } } } @@ -137,9 +135,7 @@ persistenceService.executeSQL("SELECT echobase_refresh_views();"); persistenceService.commit(); } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not refresh spatial views", e); - } + throw new EchoBaseTechnicalException("Could not refresh spatial views", e); } } }
participants (1)
-
tchemit@users.forge.codelutin.com