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 May 14, 2024
1 parent 3f753ec commit c100a37
Show file tree
Hide file tree
Showing 10 changed files with 127 additions and 43 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.jatkuva.dao.dto.SijoitteluDto;
import fi.vm.sade.sijoittelu.jatkuva.external.resource.viestintapalvelu.RestCasClient;
import fi.vm.sade.sijoittelu.laskenta.util.UrlProperties;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.SingleConnectionDataSource;

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

public class V20240419000001__LueJatkuvatSijoittelutSeurannasta extends BaseJavaMigration {

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(Context context) {
JdbcTemplate template = new JdbcTemplate();
template.setDataSource(new SingleConnectionDataSource(context.getConnection(), 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,22 @@
package fi.vm.sade.sijoittelu.jatkuva.sijoittelu.route.impl;

import fi.vm.sade.sijoittelu.jatkuva.dao.JatkuvaSijoitteluDAO;
import fi.vm.sade.sijoittelu.laskenta.configuration.FlywayConfiguration;
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,45 @@
package fi.vm.sade.sijoittelu.laskenta.configuration;

import fi.vm.sade.sijoittelu.flyway.V20240419000001__LueJatkuvatSijoittelutSeurannasta;
import fi.vm.sade.sijoittelu.jatkuva.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.context.annotation.Profile;
import org.springframework.jdbc.core.JdbcTemplate;

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

@Autowired
@Qualifier("sijoitteluJdbcTemplate")
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 = Flyway.configure()
.schemas("public")
.dataSource(jdbcTemplate.getDataSource())
.table("schema_version")
.locations("/db/migration")
.load();
flyway.migrate();

return new FlywayMigrationDone();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,7 @@
import fi.vm.sade.valintalaskenta.tulos.logging.LaskentaAuditLogImpl;
import fi.vm.sade.valintalaskenta.tulos.mapping.ValintalaskentaModelMapper;
import fi.vm.sade.valintalaskenta.tulos.service.impl.JarjestyskriteerihistoriaServiceImpl;
import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
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,14 +22,10 @@
}, excludeFilters = {
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=JarjestyskriteerihistoriaServiceImpl.class)})
@Profile("!test")
public class SijoitteluServiceConfiguration implements InitializingBean {
public class SijoitteluServiceConfiguration {

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

@Autowired
@Qualifier("sijoitteluJdbcTemplate")
JdbcTemplate jdbcTemplate;

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

Expand Down Expand Up @@ -62,15 +53,4 @@ public void addCorsMappings(CorsRegistry registry) {
}
};
}

@Override
public void afterPropertiesSet() throws Exception {
Flyway flyway = Flyway.configure()
.schemas("public")
.dataSource(jdbcTemplate.getDataSource())
.table("schema_version")
.locations("/db/migration")
.load();
flyway.migrate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import fi.vm.sade.testing.AbstractIntegrationTest;
import fi.vm.sade.valintalaskenta.domain.dto.valintatieto.HakuDTO;
import fi.vm.sade.valintalaskenta.domain.valinta.Hakijaryhma;
import fi.vm.sade.valintalaskenta.domain.valinta.Jonosija;
import fi.vm.sade.valintalaskenta.tulos.service.impl.ValintatietoService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
Expand All @@ -28,21 +27,22 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import fi.vm.sade.valintalaskenta.domain.testdata.TestEntityDataUtil;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.context.ActiveProfiles;

import java.time.*;
import java.time.temporal.TemporalAccessor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

@ActiveProfiles("test")
public class HakijaryhmaTest extends AbstractIntegrationTest {
private static final Logger LOG = LoggerFactory.getLogger(HakijaryhmaTest.class);

@Autowired
private ValintatietoService valintatietoService;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit.jupiter.SpringExtension;
Expand All @@ -28,6 +29,7 @@
import java.util.List;
import java.util.stream.Collectors;

@ActiveProfiles("test")
public class KaikkiEhdonTayttavatHyvaksytaanTest extends AbstractIntegrationTest {

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.util.ReflectionTestUtils;

import java.time.Instant;
Expand All @@ -45,6 +46,7 @@
import java.util.Set;
import java.util.stream.Collectors;

@ActiveProfiles("test")
public class SijoitteluBusinessTest extends AbstractIntegrationTest {

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.google.common.collect.Lists;

import fi.vm.sade.testing.AbstractIntegrationTest;
import fi.vm.sade.testing.TestConfigurationWithMocks;
import fi.vm.sade.sijoittelu.batch.logic.impl.DomainConverter;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.PrintHelper;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.SijoitteluConfiguration;
Expand All @@ -24,16 +23,12 @@
import fi.vm.sade.valintalaskenta.domain.dto.valintatieto.HakuDTO;
import fi.vm.sade.valintalaskenta.tulos.service.impl.ValintatietoService;
import org.apache.commons.lang3.time.DateUtils;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import java.time.*;
import java.util.ArrayList;
Expand All @@ -43,14 +38,12 @@
import java.util.List;
import java.util.stream.Collectors;

@ActiveProfiles("test")
public class SijoitteluMontaJonoaTest extends AbstractIntegrationTest {

@Autowired
private ValintatietoService valintatietoService;

@Autowired
private ApplicationContext applicationContext;

@Test
@Sql("monta_jonoa.sql")
public void testSijoitteluMontaJonoa() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.google.common.collect.ImmutableList;

import fi.vm.sade.testing.AbstractIntegrationTest;
import fi.vm.sade.testing.TestConfigurationWithMocks;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.TestHelper;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.util.SijoitteluAlgorithmUtil;
import fi.vm.sade.sijoittelu.domain.HakemuksenTila;
Expand All @@ -12,18 +11,17 @@
import fi.vm.sade.sijoittelu.domain.Valintatapajono;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.ActiveProfiles;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@ActiveProfiles("test")
public class SijoitteluTest extends AbstractIntegrationTest {

private static final Logger LOG = LoggerFactory.getLogger(SijoitteluTest.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fi.vm.sade.sijoittelu;

import fi.vm.sade.testing.AbstractIntegrationTest;
import fi.vm.sade.testing.TestConfigurationWithMocks;
import fi.vm.sade.sijoittelu.batch.logic.impl.DomainConverter;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.PrintHelper;
import fi.vm.sade.sijoittelu.batch.logic.impl.algorithm.SijoitteluConfiguration;
Expand All @@ -21,19 +20,17 @@
import fi.vm.sade.valintalaskenta.tulos.service.impl.ValintatietoService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;


@ActiveProfiles("test")
public class VastaanottoTest extends AbstractIntegrationTest {

@Autowired
Expand Down

0 comments on commit c100a37

Please sign in to comment.