Skip to content

Commit

Permalink
OK-493 Migroidaan jatkuvat sijoittelut seurantapalvelusta
Browse files Browse the repository at this point in the history
  • Loading branch information
jkorri committed Apr 22, 2024
1 parent 6bcd7bd commit 86b1639
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package fi.vm.sade.sijoittelu.flyway;

import com.google.gson.reflect.TypeToken;
import fi.vm.sade.sijoittelu.kooste.external.resource.viestintapalvelu.RestCasClient;
import fi.vm.sade.sijoittelu.laskenta.util.UrlProperties;
import fi.vm.sade.valinta.seuranta.sijoittelu.dto.SijoitteluDto;
import org.flywaydb.core.api.migration.jdbc.JdbcMigration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.SingleConnectionDataSource;

import java.sql.Connection;
import java.util.Collection;
import java.util.Collections;
import java.util.regex.Pattern;

public class V20240419000001__LueJatkuvatSijoittelutSeurannasta implements JdbcMigration {

private static RestCasClient seurantaCasClient;
private static UrlProperties urlProperties;

// ainakin hahtuvalla seurantapalvelu antaa ulos osittain täyttä roskaa, joten suodatetaan sijoittelut
// joilla validi oid
private static final Pattern OID_PATTERN = Pattern.compile("^[0-9]+(\\.[0-9]+)*$");

public static void setDependencies(UrlProperties properties, RestCasClient client) {
urlProperties = properties;
seurantaCasClient = client;
}

public Collection<SijoitteluDto> hae() {
try {
return seurantaCasClient
.get(
urlProperties.url("valintalaskentakoostepalvelu.seuranta.rest.url")
+ "/sijoittelunseuranta/hae",
new TypeToken<Collection<SijoitteluDto>>() {},
Collections.emptyMap(),
10 * 60 * 1000)
.get();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

@Override
public void migrate(Connection connection) {
JdbcTemplate template = new JdbcTemplate();
template.setDataSource(new SingleConnectionDataSource(connection, true));
for(SijoitteluDto sijoitteluDto : this.hae()) {
if(OID_PATTERN.matcher(sijoitteluDto.getHakuOid()).matches()) {
template.update(
"INSERT INTO jatkuvat " +
"(haku_oid, jatkuva_paalla, viimeksi_ajettu, aloitus, ajotiheys) " +
"VALUES (?, ?, ?::timestamptz, ?::timestamptz, ?)",
sijoitteluDto.getHakuOid(),
sijoitteluDto.isAjossa(),
sijoitteluDto.getViimeksiAjettu(),
sijoitteluDto.getAloitusajankohta(),
sijoitteluDto.getAjotiheys());
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
package fi.vm.sade.sijoittelu.kooste.sijoittelu.route.impl;

import fi.vm.sade.sijoittelu.kooste.external.resource.seuranta.SijoitteluSeurantaResource;
import fi.vm.sade.sijoittelu.laskenta.configuration.FlywayConfiguration;
import fi.vm.sade.sijoittelu.laskenta.configuration.SijoitteluServiceConfiguration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

@Profile("default")
@Profile({"default", "dev"})
@Configuration
public class SijoitteluRouteConfig {

@Bean
public JatkuvaSijoitteluRouteImpl getJatkuvaSijoitteluRouteImpl(
// riippuvuus Flyway-migraatioihin jotta tätä beania ei luoda ennen kuin jatkuvien sijoitteluiden migraatio
// seurantapalvelusta ajettu. Tämän voin refaktoroida pois kun migraatio onnistuneesti suoritettu.
FlywayConfiguration.FlywayMigrationDone flywayMigrationDone,
@Value("${jatkuvasijoittelu.autostart:true}") boolean autoStartup,
@Value("${valintalaskentakoostepalvelu.jatkuvasijoittelu.intervalMinutes:5}")
long jatkuvaSijoitteluPollIntervalInMinutes,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package fi.vm.sade.sijoittelu.laskenta.configuration;

import fi.vm.sade.sijoittelu.flyway.V20240419000001__LueJatkuvatSijoittelutSeurannasta;
import fi.vm.sade.sijoittelu.kooste.external.resource.viestintapalvelu.RestCasClient;
import fi.vm.sade.sijoittelu.laskenta.util.UrlProperties;
import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

@Configuration
public class FlywayConfiguration {

@Autowired
JdbcTemplate jdbcTemplate;

@Autowired
@Qualifier("SeurantaCasClient")
RestCasClient seurantaCasClient;

@Autowired
UrlProperties urlProperties;

public static class FlywayMigrationDone {}

@Bean
public FlywayMigrationDone doFlywayMigration() {
V20240419000001__LueJatkuvatSijoittelutSeurannasta.setDependencies(this.urlProperties, this.seurantaCasClient);

Flyway flyway = new Flyway();
flyway.setSchemas("public");
flyway.setDataSource(jdbcTemplate.getDataSource());
flyway.setLocations("/db/migration", "fi.vm.sade.sijoittelu.flyway");
flyway.setTable("sijoittelu_schema_version");
flyway.migrate();

return new FlywayMigrationDone();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,10 @@
import fi.vm.sade.valinta.sharedutils.AuditLogger;
import fi.vm.sade.valintalaskenta.tulos.logging.LaskentaAuditLogImpl;
import fi.vm.sade.valintalaskenta.tulos.mapping.ValintalaskentaModelMapper;
import org.flywaydb.core.Flyway;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
Expand All @@ -27,13 +23,10 @@
"fi.vm.sade.valintalaskenta.tulos.service.impl",
"fi.vm.sade.valintalaskenta.tulos.service.impl.converters",
})
public class SijoitteluServiceConfiguration implements InitializingBean {
public class SijoitteluServiceConfiguration {

public static final String CALLER_ID = "1.2.246.562.10.00000000001.sijoittelu.sijoittelu-service";

@Autowired
JdbcTemplate jdbcTemplate;

@Bean
public Audit audit() { return new Audit(new AuditLogger(), "sijoittelu", ApplicationType.VIRKAILIJA); }

Expand Down Expand Up @@ -66,14 +59,4 @@ public void addCorsMappings(CorsRegistry registry) {
}
};
}

@Override
public void afterPropertiesSet() throws Exception {
Flyway flyway = new Flyway();
flyway.setSchemas("public");
flyway.setDataSource(jdbcTemplate.getDataSource());
flyway.setLocations("/db/migration");
flyway.setTable("sijoittelu_schema_version");
flyway.migrate();
}
}

0 comments on commit 86b1639

Please # to comment.