Skip to content

Commit

Permalink
Fix: verifyStartup kjører nå også på Oracle (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
tendestad authored Apr 22, 2020
1 parent ef94359 commit ba794b9
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.LockModeType;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
Expand All @@ -36,6 +35,7 @@
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskStatus;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTypeInfo;
import no.nav.vedtak.felles.prosesstask.api.TaskStatus;
import no.nav.vedtak.felles.prosesstask.impl.util.DatabaseUtil;

/**
* Implementasjon av repository som er tilgjengelig for å lagre og opprette nye tasks.
Expand Down Expand Up @@ -363,7 +363,7 @@ private List<ProsessTaskData> tilProsessTask(List<ProsessTaskEntitet> resultList
*/
public static String getUniktProsessTaskGruppeNavn(EntityManager entityManager) throws SQLException {
String sqlString;
if (isPostgres(entityManager)) {
if (DatabaseUtil.isPostgres(entityManager)) {
sqlString = "SELECT nextval('seq_prosess_task_gruppe')";
} else {
sqlString = "SELECT seq_prosess_task_gruppe.nextval FROM dual";
Expand All @@ -372,12 +372,7 @@ public static String getUniktProsessTaskGruppeNavn(EntityManager entityManager)
return String.valueOf(query.getSingleResult());
}

public static Boolean isPostgres(EntityManager entityManager) {
EntityManagerFactory emf = entityManager.getEntityManagerFactory();
Map<String, Object> emfProperties = emf.getProperties();
String dialect = (String) emfProperties.get("hibernate.dialect");
return dialect.contains("PostgreSQL");
}


void flushAndClear() {
entityManager.flush();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskStatus;
import no.nav.vedtak.felles.prosesstask.impl.util.DatabaseUtil;

@ApplicationScoped
public class TaskManagerRepositoryImpl {
Expand Down Expand Up @@ -309,12 +310,22 @@ List<ProsessTaskData> tilProsessTask(List<ProsessTaskEntitet> resultList) {
@ActivateRequestContext
@Transactional
void verifyStartup() {

String sql = "select current_setting('TIMEZONE') as dbtz,"
+ " to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.US+TZ') as dbtid,"
+ " to_char(cast(:inputTid as timestamp with time zone), 'YYYY-MM-DD HH24:MI:SS.US+TZ') as inputtid,"
+ " :inputTid as inputtid2,"
+ " (current_timestamp - :inputTid) as drift";
boolean isPostgres = DatabaseUtil.isPostgres(entityManager);
String sql;
if (isPostgres){
sql = "select current_setting('TIMEZONE') as dbtz,"
+ " to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.US+TZ') as dbtid,"
+ " to_char(cast(:inputTid as timestamp with time zone), 'YYYY-MM-DD HH24:MI:SS.US+TZ') as inputtid,"
+ " :inputTid as inputtid2,"
+ " (current_timestamp - :inputTid) as drift";
} else {
sql = "select DBTIMEZONE as dbtz,"
+ " to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SSxFF6+TZH:TZM') as dbtid,"
+ " to_char(cast(:inputTid as timestamp with time zone), 'YYYY-MM-DD HH24:MI:SSxFF6+TZH:TZM') as inputtid,"
+ " :inputTid as inputtid2,"
+ " (current_timestamp - :inputTid) as drift"
+ " from dual";
}

LocalDateTime now = LocalDateTime.now();
var result = (StartupData) entityManager.createNativeQuery(sql, StartupData.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package no.nav.vedtak.felles.prosesstask.impl.util;

import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

public class DatabaseUtil {
public static boolean isPostgres(EntityManager entityManager) {
EntityManagerFactory emf = entityManager.getEntityManagerFactory();
Map<String, Object> emfProperties = emf.getProperties();
String dialect = (String) emfProperties.get("hibernate.dialect");
return dialect.contains("PostgreSQL");
}
}

0 comments on commit ba794b9

Please sign in to comment.