From 75bec5e8cb890ede24231ed5666b000beb05009a Mon Sep 17 00:00:00 2001 From: okauppinen Date: Tue, 26 Sep 2023 09:09:31 +0300 Subject: [PATCH 1/2] migrate geometry srid to native --- .../V1_0_20__convert_geometry_srid.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content-resources/src/main/java/flyway/userlayer/V1_0_20__convert_geometry_srid.java diff --git a/content-resources/src/main/java/flyway/userlayer/V1_0_20__convert_geometry_srid.java b/content-resources/src/main/java/flyway/userlayer/V1_0_20__convert_geometry_srid.java new file mode 100644 index 0000000000..e5a268ab71 --- /dev/null +++ b/content-resources/src/main/java/flyway/userlayer/V1_0_20__convert_geometry_srid.java @@ -0,0 +1,32 @@ +package flyway.userlayer; + +import fi.nls.oskari.log.LogFactory; +import fi.nls.oskari.log.Logger; +import fi.nls.oskari.util.PropertyUtil; +import org.flywaydb.core.api.migration.BaseJavaMigration; +import org.flywaydb.core.api.migration.Context; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +public class V1_0_20__convert_geometry_srid extends BaseJavaMigration { + private static final Logger LOG = LogFactory.getLogger(V1_0_20__convert_geometry_srid.class); + + public void migrate(Context context) throws Exception { + Connection connection = context.getConnection(); + String epsg = PropertyUtil.get("oskari.native.srs", "EPSG:4326"); + String srs = epsg.substring(epsg.indexOf(':') + 1); + int srid = Integer.parseInt(srs); + convertGeometries(connection, srid); + } + + protected void convertGeometries(Connection conn, int srid) throws SQLException { + final String sql = "UPDATE user_layer_data SET geometry = ST_SetSRID(geometry,?)"; + try (PreparedStatement statement = conn.prepareStatement(sql)) { + statement.setInt(1, srid); + int updated = statement.executeUpdate(); + LOG.info("Updated:" , updated, "user_layer_data geometry srid to:", srid); + } + } +} From 4991a2149f6983baf80cfa11fd01ec761f36a5e4 Mon Sep 17 00:00:00 2001 From: okauppinen Date: Tue, 26 Sep 2023 09:11:30 +0300 Subject: [PATCH 2/2] set native srid to geometry on insert --- .../userlayer/service/UserLayerDbServiceMybatisImpl.java | 7 +++++-- .../org/oskari/map/userlayer/service/UserLayerMapper.java | 2 +- .../org/oskari/map/userlayer/service/UserLayerMapper.xml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/service-userlayer/src/main/java/org/oskari/map/userlayer/service/UserLayerDbServiceMybatisImpl.java b/service-userlayer/src/main/java/org/oskari/map/userlayer/service/UserLayerDbServiceMybatisImpl.java index f375116a9b..52a560a94d 100644 --- a/service-userlayer/src/main/java/org/oskari/map/userlayer/service/UserLayerDbServiceMybatisImpl.java +++ b/service-userlayer/src/main/java/org/oskari/map/userlayer/service/UserLayerDbServiceMybatisImpl.java @@ -26,7 +26,9 @@ public class UserLayerDbServiceMybatisImpl extends UserLayerDbService { private static final Logger log = LogFactory.getLogger(UserLayerDbServiceMybatisImpl.class); private static final String USERLAYER_MYBATIS_BATCH_SIZE = "userlayer.mybatis.batch.size"; + private static final String NATIVE_SRS = "oskari.native.srs"; final int batchSize = PropertyUtil.getOptional(USERLAYER_MYBATIS_BATCH_SIZE, 1000); + private final int srid; private final Cache cache; private SqlSessionFactory factory = null; @@ -41,6 +43,8 @@ public UserLayerDbServiceMybatisImpl() { log.error("Couldn't get datasource for userlayer"); } cache = CacheManager.getCache(getClass().getName()); + String epsg = PropertyUtil.get(NATIVE_SRS, "EPSG:4326"); + srid = Integer.parseInt(epsg.substring(epsg.indexOf(':') + 1)); } private SqlSessionFactory initializeMyBatis(final DataSource dataSource) { @@ -68,9 +72,8 @@ public int insertUserLayerAndData(final UserLayer userLayer, final List