Merge branch 'Migrations' into develop
This commit is contained in:
@@ -900,6 +900,21 @@
|
||||
<option name="PROGRAM_PARAMETERS" value="" />
|
||||
</SHUTDOWN>
|
||||
</ConfigurationWrapper>
|
||||
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="JProfiler">
|
||||
<option name="USE_ENV_VARIABLES" value="true" />
|
||||
<STARTUP>
|
||||
<option name="USE_DEFAULT" value="true" />
|
||||
<option name="SCRIPT" value="" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="" />
|
||||
</STARTUP>
|
||||
<SHUTDOWN>
|
||||
<option name="USE_DEFAULT" value="true" />
|
||||
<option name="SCRIPT" value="" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="" />
|
||||
</SHUTDOWN>
|
||||
</ConfigurationWrapper>
|
||||
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
|
||||
<option name="USE_ENV_VARIABLES" value="true" />
|
||||
<STARTUP>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.ems.exception;
|
||||
|
||||
public class SystemNotInitializedException extends Exception {
|
||||
|
||||
private int statusCode;
|
||||
|
||||
public SystemNotInitializedException(int statusCode, String message) {
|
||||
super(message);
|
||||
this.statusCode = statusCode;
|
||||
}
|
||||
|
||||
public int getStatusCode() {
|
||||
return statusCode;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.ems.migration;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.gentlyweb.utils.GeneralUtils;
|
||||
import it.integry.annotations.PostContextAutowired;
|
||||
import it.integry.annotations.PostContextConstruct;
|
||||
import it.integry.ems.migration.model._base.MigrationModelInterface;
|
||||
@@ -10,8 +11,11 @@ import it.integry.ems.settings.SettingsController;
|
||||
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.entity.Azienda;
|
||||
import it.integry.ems_model.entity.StbMigrationStatus;
|
||||
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityServer;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
@@ -25,8 +29,10 @@ import java.lang.reflect.Modifier;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class MigrationService {
|
||||
@@ -48,11 +54,13 @@ public class MigrationService {
|
||||
@PostContextAutowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
private List<Class<? extends MigrationModelInterface>> allMigrationsList;
|
||||
|
||||
@PostContextConstruct
|
||||
public void init() {
|
||||
Reflections reflections = new Reflections("it.integry.ems.migration.model");
|
||||
|
||||
List<Class<? extends MigrationModelInterface>> clssList = new ArrayList<>(Stream.of(reflections.getSubTypesOf(MigrationModelInterface.class))
|
||||
allMigrationsList = new ArrayList<>(Stream.of(reflections.getSubTypesOf(MigrationModelInterface.class))
|
||||
.map(x -> x)
|
||||
.filter(x -> !Modifier.isAbstract(x.getModifiers()))
|
||||
.sortBy(Class::getSimpleName)
|
||||
@@ -72,70 +80,10 @@ public class MigrationService {
|
||||
logger.error("MigrationService - Init", e);
|
||||
}
|
||||
|
||||
//ArrayList<Runnable> calls = new ArrayList<>();
|
||||
|
||||
for (final AdvancedDataSource advancedDataSource : advancedDataSources) {
|
||||
|
||||
//calls.add(() -> {
|
||||
|
||||
try {
|
||||
initLastVersionField(advancedDataSource);
|
||||
|
||||
for (Class<? extends MigrationModelInterface> migrationClass : clssList) {
|
||||
try {
|
||||
|
||||
long migrationNumber = Long.parseLong(migrationClass.getSimpleName().replace("Migration_", ""));
|
||||
long lastMigration = getLastMigrationFromDB(advancedDataSource);
|
||||
|
||||
if (migrationNumber <= lastMigration) continue;
|
||||
|
||||
executeMigration(migrationClass, advancedDataSource, settingsController, settingsModel, droolsDataCompleting);
|
||||
updateLastMigrationIntoDB(advancedDataSource, migrationNumber);
|
||||
|
||||
advancedDataSource.getConnection().commit();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
logger.error("MigrationService (" + advancedDataSource.getProfileName() +")", e);
|
||||
|
||||
try {
|
||||
advancedDataSource.getConnection().rollback();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
logger.error("MigrationService - Rollback", ex);
|
||||
}
|
||||
|
||||
if(UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) break;
|
||||
|
||||
try {
|
||||
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(settingsModel.getDefaultProfile());
|
||||
Azienda azienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
|
||||
|
||||
mailService.sendSystemWarningLog("[" + azienda.getNomeDitta() + "][" + UtilityServer.getHostName() + "] Aggiornamento sistema",
|
||||
"anomalia durante l'aggiornamento",
|
||||
"La migrazione " + migrationClass.getSimpleName() + " non è andata a buon fine sul DB " + advancedDataSource.getProfileName() + ". Controllare il log per ulteriori dettagli.",
|
||||
e, new Date());
|
||||
} catch (Exception ex) {
|
||||
logger.error("MigrationService - Mail", e);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
//});
|
||||
executeMigrationGroup(advancedDataSource);
|
||||
}
|
||||
|
||||
// try {
|
||||
// UtilityThread.executeParallel(calls);
|
||||
// } catch (Exception e) {
|
||||
// logger.error("MigrationService", e);
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
}
|
||||
|
||||
private void initLastVersionField(AdvancedDataSource advancedDataSource) throws Exception {
|
||||
@@ -162,6 +110,44 @@ public class MigrationService {
|
||||
}
|
||||
}
|
||||
|
||||
public void executeMigrationGroup(AdvancedDataSource advancedDataSource) {
|
||||
try {
|
||||
initLastVersionField(advancedDataSource);
|
||||
|
||||
for (Class<? extends MigrationModelInterface> migrationClass : allMigrationsList) {
|
||||
long migrationNumber = Long.parseLong(migrationClass.getSimpleName().replace("Migration_", ""));
|
||||
|
||||
try {
|
||||
long lastMigration = getLastMigrationFromDB(advancedDataSource);
|
||||
|
||||
if (migrationNumber <= lastMigration) continue;
|
||||
|
||||
executeMigration(migrationClass, advancedDataSource, settingsController, settingsModel, droolsDataCompleting);
|
||||
updateLastMigrationIntoDB(advancedDataSource, migrationNumber);
|
||||
|
||||
advancedDataSource.getConnection().commit();
|
||||
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
advancedDataSource.getConnection().rollback();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
logger.error("MigrationService - Rollback", ex);
|
||||
}
|
||||
|
||||
trackMigrationError(advancedDataSource, migrationNumber, e);
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void executeMigration(Class<? extends MigrationModelInterface> migrationClass,
|
||||
AdvancedDataSource advancedDataSource,
|
||||
SettingsController settingsController,
|
||||
@@ -183,13 +169,75 @@ public class MigrationService {
|
||||
return Long.parseLong(lastMigration);
|
||||
}
|
||||
|
||||
private void updateLastMigrationIntoDB(AdvancedDataSource advancedDataSource, long lastMigraton) throws Exception {
|
||||
public void updateLastMigrationIntoDB(AdvancedDataSource advancedDataSource, long lastMigraton) throws Exception {
|
||||
String updateSql = "UPDATE azienda SET last_migration = " + UtilityDB.valueToString(String.valueOf(lastMigraton));
|
||||
PreparedStatement ps = advancedDataSource.getConnection().prepareStatement(updateSql);
|
||||
ps.executeUpdate();
|
||||
ps.close();
|
||||
|
||||
String sql = "SELECT * FROM " + StbMigrationStatus.ENTITY + " WHERE migration_code = " + lastMigraton;
|
||||
StbMigrationStatus stbMigrationStatus = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(advancedDataSource.getConnection(), sql, StbMigrationStatus.class);
|
||||
|
||||
if (stbMigrationStatus == null) {
|
||||
stbMigrationStatus = new StbMigrationStatus()
|
||||
.setMigrationCode(lastMigraton)
|
||||
.setCompleted(true)
|
||||
.setSkipped(false);
|
||||
stbMigrationStatus.setOperation(OperationType.INSERT);
|
||||
} else {
|
||||
stbMigrationStatus.setCompleted(true)
|
||||
.setSkipped(false)
|
||||
.setErrorMessage(EmsRestConstants.NULL);
|
||||
stbMigrationStatus.setOperation(OperationType.UPDATE);
|
||||
}
|
||||
|
||||
stbMigrationStatus.manageWithParentConnection(advancedDataSource.getConnection());
|
||||
|
||||
advancedDataSource.getConnection().commit();
|
||||
}
|
||||
|
||||
|
||||
public List<Long> getMigrationCodes() {
|
||||
return allMigrationsList.stream()
|
||||
.map(x -> Long.parseLong(x.getSimpleName().replace("Migration_", "")))
|
||||
.sorted(Collections.reverseOrder())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void trackMigrationError(AdvancedDataSource advancedDataSource, long migrationCode, Exception e) throws Exception {
|
||||
e.printStackTrace();
|
||||
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
|
||||
|
||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(advancedDataSource.getProfileName())) {
|
||||
final String exceptionTraceAsString = GeneralUtils.getExceptionTraceAsString(e);
|
||||
|
||||
String sql = "SELECT * FROM " + StbMigrationStatus.ENTITY + " WHERE migration_code = " + migrationCode;
|
||||
StbMigrationStatus stbMigrationStatus = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbMigrationStatus.class);
|
||||
|
||||
if (stbMigrationStatus == null) {
|
||||
stbMigrationStatus = new StbMigrationStatus();
|
||||
stbMigrationStatus.setOperation(OperationType.INSERT);
|
||||
} else {
|
||||
stbMigrationStatus.setOperation(OperationType.UPDATE);
|
||||
}
|
||||
|
||||
stbMigrationStatus
|
||||
.setMigrationCode(migrationCode)
|
||||
.setCompleted(false)
|
||||
.setSkipped(false)
|
||||
.setErrorMessage(e.getMessage() + "\n" + exceptionTraceAsString);
|
||||
stbMigrationStatus.manageWithParentConnection(advancedDataSource.getConnection());
|
||||
|
||||
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) return;
|
||||
|
||||
Azienda azienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
|
||||
|
||||
mailService.sendSystemWarningLog("[" + azienda.getNomeDitta() + "][" + UtilityServer.getHostName() + "] Aggiornamento sistema",
|
||||
"anomalia durante l'aggiornamento",
|
||||
"La migrazione " + migrationCode + " non è andata a buon fine sul DB " + advancedDataSource.getProfileName() + ". Controllare il log per ulteriori dettagli.",
|
||||
e, new Date());
|
||||
} catch (Exception ex) {
|
||||
logger.error("MigrationService - Mail", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package it.integry.ems.migration.controller;
|
||||
|
||||
import it.integry.ems.migration.service.MigrationSetupService;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@Scope(value = "request")
|
||||
@RequestMapping("system/migration/setup")
|
||||
public class MigrationSetupController {
|
||||
|
||||
@Autowired
|
||||
private MigrationSetupService migrationSetupService;
|
||||
|
||||
@RequestMapping(value = "", method = RequestMethod.GET)
|
||||
public @ResponseBody ServiceRestResponse retrieveList() throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(migrationSetupService.retrieveAll());
|
||||
}
|
||||
|
||||
@RequestMapping(value = "{migrationCode}/retry", method = RequestMethod.POST)
|
||||
public @ResponseBody ServiceRestResponse retryMigration(@PathVariable long migrationCode) throws Exception {
|
||||
migrationSetupService.retry(migrationCode);
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "{migrationCode}/skip", method = RequestMethod.POST)
|
||||
public @ResponseBody ServiceRestResponse skipMigration(@PathVariable long migrationCode) throws Exception {
|
||||
migrationSetupService.skip(migrationCode);
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package it.integry.ems.migration.dto;
|
||||
|
||||
public class MigrationStatusDTO {
|
||||
|
||||
private long migrationCode;
|
||||
private String profileDb;
|
||||
private MigrationStatusEnum status;
|
||||
private String errorMessage;
|
||||
|
||||
public long getMigrationCode() {
|
||||
return migrationCode;
|
||||
}
|
||||
|
||||
public MigrationStatusDTO setMigrationCode(long migrationCode) {
|
||||
this.migrationCode = migrationCode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getProfileDb() {
|
||||
return profileDb;
|
||||
}
|
||||
|
||||
public MigrationStatusDTO setProfileDb(String profileDb) {
|
||||
this.profileDb = profileDb;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MigrationStatusEnum getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public MigrationStatusDTO setStatus(MigrationStatusEnum status) {
|
||||
this.status = status;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public MigrationStatusDTO setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package it.integry.ems.migration.dto;
|
||||
|
||||
public enum MigrationStatusEnum {
|
||||
|
||||
COMPLETED(0),
|
||||
PENDING(1),
|
||||
SKIPPED(2),
|
||||
ERROR(3);
|
||||
|
||||
|
||||
private int tipo;
|
||||
|
||||
MigrationStatusEnum(int tipo) {
|
||||
this.tipo = tipo;
|
||||
}
|
||||
|
||||
public static MigrationStatusEnum fromString(String text) {
|
||||
for (MigrationStatusEnum b : MigrationStatusEnum.values()) {
|
||||
if (b.tipo == Integer.parseInt(text)) return b;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getTipo() {
|
||||
return this.tipo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration.model._base.BaseMigration;
|
||||
import it.integry.ems.migration.model._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240201160125 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
String createTable = "CREATE TABLE dbo.stb_migration_status\n" +
|
||||
"(\n" +
|
||||
" id BIGINT IDENTITY,\n" +
|
||||
" migration_code BIGINT NOT NULL,\n" +
|
||||
" error_message VARCHAR(MAX),\n" +
|
||||
" completed BIT DEFAULT 0 NOT NULL,\n" +
|
||||
" skipped BIT DEFAULT 0 NOT NULL\n" +
|
||||
")";
|
||||
|
||||
executeStatement(advancedDataSource.getConnection(), createTable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
package it.integry.ems.migration.service;
|
||||
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.migration.MigrationService;
|
||||
import it.integry.ems.migration.dto.MigrationStatusDTO;
|
||||
import it.integry.ems.migration.dto.MigrationStatusEnum;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.StbMigrationStatus;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class MigrationSetupService {
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
private SettingsModel settingsModel;
|
||||
|
||||
@Autowired
|
||||
private MigrationService migrationService;
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
@Autowired
|
||||
private RequestDataDTO requestDataDTO;
|
||||
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
public List<MigrationStatusDTO> retrieveAll() throws Exception {
|
||||
final List<Long> migrationCodes = migrationService.getMigrationCodes();
|
||||
|
||||
final List<MigrationStatusDTO> migrationStatuses = new ArrayList<>();
|
||||
|
||||
final List<AvailableConnectionsModel> databases = settingsModel.getAvailableConnections().stream()
|
||||
.filter(AvailableConnectionsModel::getInternalDb)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (AvailableConnectionsModel availableConnectionsModel : databases) {
|
||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(availableConnectionsModel.getProfileName())) {
|
||||
|
||||
List<StbMigrationStatus> stbMigrationStatuses = retrieveStatuses(multiDBTransactionManager);
|
||||
|
||||
for (long migrationCode : migrationCodes) {
|
||||
StbMigrationStatus stbMigrationStatus = stbMigrationStatuses.stream()
|
||||
.filter(x -> x.getMigrationCode() == migrationCode)
|
||||
.findFirst().orElse(null);
|
||||
|
||||
MigrationStatusEnum status = MigrationStatusEnum.PENDING;
|
||||
if (migrationCode < 20240201160125L) //Ignoro le migration che esistono da prima di questo sistema
|
||||
status = MigrationStatusEnum.COMPLETED;
|
||||
|
||||
String errorMessage = null;
|
||||
|
||||
if (stbMigrationStatus != null) {
|
||||
if (stbMigrationStatus.isCompleted()) {
|
||||
if (stbMigrationStatus.isSkipped()) status = MigrationStatusEnum.SKIPPED;
|
||||
else status = MigrationStatusEnum.COMPLETED;
|
||||
} else {
|
||||
status = MigrationStatusEnum.ERROR;
|
||||
}
|
||||
|
||||
errorMessage = stbMigrationStatus.getErrorMessage();
|
||||
}
|
||||
|
||||
|
||||
migrationStatuses.add(new MigrationStatusDTO()
|
||||
.setStatus(status)
|
||||
.setMigrationCode(migrationCode)
|
||||
.setProfileDb(availableConnectionsModel.getProfileName())
|
||||
.setErrorMessage(errorMessage));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return migrationStatuses;
|
||||
}
|
||||
|
||||
|
||||
private List<StbMigrationStatus> retrieveStatuses(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
String sql = "SELECT * FROM " + StbMigrationStatus.ENTITY;
|
||||
|
||||
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbMigrationStatus.class);
|
||||
}
|
||||
|
||||
public void retry(long migrationCode) throws Exception {
|
||||
migrationService.executeMigrationGroup(multiDBTransactionManager.getActiveConnections().get(0));
|
||||
}
|
||||
|
||||
public void skip(long migrationCode) throws Exception {
|
||||
final AdvancedDataSource advancedDataSource = multiDBTransactionManager.getActiveConnections().get(0);
|
||||
|
||||
String sql = "SELECT * FROM " + StbMigrationStatus.ENTITY + " WHERE migration_code = " + migrationCode;
|
||||
StbMigrationStatus stbMigrationStatus = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbMigrationStatus.class);
|
||||
|
||||
|
||||
if (stbMigrationStatus != null) {
|
||||
stbMigrationStatus
|
||||
.setMigrationCode(migrationCode)
|
||||
.setCompleted(true)
|
||||
.setSkipped(true);
|
||||
stbMigrationStatus.setOperation(OperationType.UPDATE);
|
||||
entityProcessor.processEntity(stbMigrationStatus, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
migrationService.updateLastMigrationIntoDB(advancedDataSource, migrationCode);
|
||||
migrationService.executeMigrationGroup(advancedDataSource);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ import java.util.List;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class MultiDBTransactionManager {
|
||||
public class MultiDBTransactionManager implements AutoCloseable{
|
||||
|
||||
private final static Logger logger = LogManager.getLogger();
|
||||
|
||||
@@ -234,6 +234,11 @@ public class MultiDBTransactionManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
closeAll();
|
||||
}
|
||||
|
||||
public void closeAll() throws Exception {
|
||||
for (AdvancedDataSource advancedDataSource : dbDatasources) {
|
||||
if (!advancedDataSource.isClosed()) {
|
||||
@@ -244,6 +249,7 @@ public class MultiDBTransactionManager {
|
||||
} else if (enableLog) {
|
||||
logger.debug("Closing manually: " + advancedDataSource.getDataSource().getProfile() + " (#" + advancedDataSource.getDataSource().getSessionID() + ")");
|
||||
}
|
||||
advancedDataSource.commit();
|
||||
advancedDataSource.close();
|
||||
}
|
||||
}
|
||||
@@ -333,4 +339,5 @@ public class MultiDBTransactionManager {
|
||||
!uri.contains("getOpenedSteps") &&
|
||||
!uri.contains("getCurrentPrintQueue");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.ems.system;
|
||||
|
||||
import it.integry.ems.exception.SystemNotInitializedException;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -28,6 +29,11 @@ public class GlobalExceptionHandler {
|
||||
@ExceptionHandler({Exception.class})
|
||||
public @ResponseBody
|
||||
ServiceRestResponse handleException(HttpServletRequest request, HttpServletResponse response, Exception ex) {
|
||||
if (ex instanceof RuntimeException) {
|
||||
if (ex.getCause() instanceof SystemNotInitializedException)
|
||||
response.setStatus(((SystemNotInitializedException) ex.getCause()).getStatusCode());
|
||||
}
|
||||
|
||||
logger.error(request.getRequestURI(), ex);
|
||||
return ServiceRestResponse.createNegativeResponse(ex);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.annimon.stream.Stream;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.common.var.EmsDBConst;
|
||||
import it.integry.ems._context.EmsCoreContext;
|
||||
import it.integry.ems.exception.SystemNotInitializedException;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems_model.utility.UtilityHashMap;
|
||||
@@ -48,8 +49,7 @@ public class SystemRequisiteCheckInterceptor extends HandlerInterceptorAdapter {
|
||||
!serviceName.contains("favicon.ico")) {
|
||||
|
||||
if (!emsCoreContext.isContextInitialized()) {
|
||||
response.sendError(551, "System not initialized yet");
|
||||
return false;
|
||||
throw new SystemNotInitializedException(551, "System not initialized yet");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,8 @@ public class SystemRequisiteCheckInterceptor extends HandlerInterceptorAdapter {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package it.integry.ems_model.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import it.integry.ems_model.annotation.*;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import org.kie.api.definition.type.PropertyReactive;
|
||||
|
||||
@Master
|
||||
@PropertyReactive
|
||||
@Table(StbMigrationStatus.ENTITY)
|
||||
@JsonTypeName(StbMigrationStatus.ENTITY)
|
||||
public class StbMigrationStatus extends EntityBase {
|
||||
|
||||
public static final String ENTITY = "stb_migration_status";
|
||||
|
||||
private static final long serialVerionUID = 1L;
|
||||
|
||||
@PK
|
||||
@Identity
|
||||
@SqlField(value = "id", nullable = false)
|
||||
private Long id;
|
||||
|
||||
@SqlField(value = "migration_code", nullable = false)
|
||||
private Long migrationCode;
|
||||
|
||||
@SqlField(value = "error_message", nullable = true)
|
||||
private String errorMessage;
|
||||
|
||||
@SqlField(value = "completed", nullable = false)
|
||||
private boolean completed;
|
||||
|
||||
@SqlField(value = "skipped", nullable = false)
|
||||
private boolean skipped;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public StbMigrationStatus setId(Long id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Long getMigrationCode() {
|
||||
return migrationCode;
|
||||
}
|
||||
|
||||
public StbMigrationStatus setMigrationCode(Long migrationCode) {
|
||||
this.migrationCode = migrationCode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public StbMigrationStatus setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isCompleted() {
|
||||
return completed;
|
||||
}
|
||||
|
||||
public StbMigrationStatus setCompleted(boolean completed) {
|
||||
this.completed = completed;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isSkipped() {
|
||||
return skipped;
|
||||
}
|
||||
|
||||
public StbMigrationStatus setSkipped(boolean skipped) {
|
||||
this.skipped = skipped;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -27,43 +27,34 @@ public class AgribookActivityController {
|
||||
@RequestMapping(value = "", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse createActivity(HttpServletRequest request,
|
||||
@RequestBody AgribookActivityPlanRequestDTO activityDTO) {
|
||||
try {
|
||||
AgribookActivityPlanResponseDTO response = null;
|
||||
@RequestBody AgribookActivityPlanRequestDTO activityDTO) throws Exception {
|
||||
AgribookActivityPlanResponseDTO response = null;
|
||||
// new AgribookActivityResponseDTO()
|
||||
// .setStbActivity(agribookActivityService.saveActivity(activityDTO.getStbActivity(), false));
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(response);
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
return ServiceRestResponse.createPositiveResponse(response);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "plan", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse planActivity(HttpServletRequest request,
|
||||
@RequestBody AgribookActivityPlanRequestDTO activityDTO) {
|
||||
try {
|
||||
AgribookActivityPlanResponseDTO response =
|
||||
new AgribookActivityPlanResponseDTO()
|
||||
.setStbActivity(
|
||||
agribookActivityService.planActivity(
|
||||
activityDTO.getCodAnag(),
|
||||
activityDTO.getCodVdes(),
|
||||
activityDTO.getCodMart(),
|
||||
activityDTO.getPartitaMag(),
|
||||
activityDTO.getUserName(),
|
||||
activityDTO.getPlanDate(),
|
||||
activityDTO.getNote()
|
||||
)
|
||||
);
|
||||
@RequestBody AgribookActivityPlanRequestDTO activityDTO) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(response);
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
AgribookActivityPlanResponseDTO response =
|
||||
new AgribookActivityPlanResponseDTO()
|
||||
.setStbActivity(
|
||||
agribookActivityService.planActivity(
|
||||
activityDTO.getCodAnag(),
|
||||
activityDTO.getCodVdes(),
|
||||
activityDTO.getCodMart(),
|
||||
activityDTO.getPartitaMag(),
|
||||
activityDTO.getUserName(),
|
||||
activityDTO.getPlanDate(),
|
||||
activityDTO.getNote()
|
||||
)
|
||||
);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(response);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "", method = RequestMethod.GET)
|
||||
@@ -74,44 +65,29 @@ public class AgribookActivityController {
|
||||
@RequestParam(required = false, name = "codVdes[]") List<String> codVdes,
|
||||
@RequestParam(required = false) String codMart,
|
||||
@RequestParam(required = false) String partitaMag,
|
||||
@RequestParam(required = false) String username) {
|
||||
try {
|
||||
return ServiceRestResponse.createPositiveResponse(agribookActivityService.retrieveActivity(activityId, codAnag, codVdes, codMart, partitaMag, username));
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
@RequestParam(required = false) String username) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(agribookActivityService.retrieveActivity(activityId, codAnag, codVdes, codMart, partitaMag, username));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "{id}", method = RequestMethod.PATCH)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse updateActivity(HttpServletRequest request,
|
||||
@PathVariable(value = "id") String activityId,
|
||||
@RequestBody AgribookActivityUpdateRequestDTO activityDTO) {
|
||||
try {
|
||||
agribookActivityService.updateActivity(activityId,
|
||||
activityDTO.getUserName(),
|
||||
activityDTO.getPlanDate(),
|
||||
activityDTO.getNote());
|
||||
@RequestBody AgribookActivityUpdateRequestDTO activityDTO) throws Exception {
|
||||
agribookActivityService.updateActivity(activityId,
|
||||
activityDTO.getUserName(),
|
||||
activityDTO.getPlanDate(),
|
||||
activityDTO.getNote());
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse deleteActivity(HttpServletRequest request,
|
||||
@PathVariable(value = "id") String activityId) {
|
||||
try {
|
||||
return ServiceRestResponse.createEntityPositiveResponse(
|
||||
agribookActivityService.deleteActivity(activityId)
|
||||
);
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
@PathVariable(value = "id") String activityId) throws Exception {
|
||||
return ServiceRestResponse.createEntityPositiveResponse(
|
||||
agribookActivityService.deleteActivity(activityId)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
import{_ as b,d as C,q as v,X as w,u as k,c as n,w as L,b as h,e as s,g as y,h as g,A as _,r as d,o as l,B as f,a as S,i as B}from"./index.e3ffa8b5.js";import{D}from"./DynamicForm.3e07ffe1.js";const N=C({name:"SchedulerCreate",components:{DynamicForm:D},setup(){const e=v(),m=w(),t=k(),o=n(()=>e.params.type);L(o,()=>r());function r(){t.dispatch("scheduler/setCurrentCategory",o.value)}r();const p=n(()=>t.getters["scheduler/getCurrentCategory"]),i=n(()=>t.getters["main/isLoading"]),a=n(()=>t.getters["scheduler/getError"]);async function c(u){await t.dispatch("scheduler/saveAutomation",{category:o.value,...u}),a.value||await m.push({name:"scheduler.show",params:{type:o.value}})}return{type:o,currentCategory:p,onSubmit:c,isLoading:i,error:a}}}),R={class:"intro-y flex items-center mt-8"},V={class:"text-lg font-medium mr-auto"},$={key:0,class:"alert alert-danger show my-2",role:"alert"},A={class:"text-right mt-5"},F=["disabled","onClick"],E=["disabled"],I=B(" Salva ");function q(e,m,t,o,r,p){const i=d("RouterLink"),a=d("LoadingIcon"),c=d("DynamicForm");return l(),h("div",null,[s("div",R,[s("h2",V," Nuova Pianificata "+y(e.type),1)]),g(c,{fields:e.currentCategory,onSubmit:e.onSubmit,class:"intro-y"},{default:_(()=>[e.error?(l(),h("div",$,y(e.error.message),1)):f("",!0),s("div",A,[g(i,{to:{name:"scheduler.show",params:{type:e.type}},custom:""},{default:_(({navigate:u})=>[s("button",{type:"button",class:"btn btn-outline-secondary w-24 mr-1",disabled:e.isLoading,onClick:u}," Annulla ",8,F)]),_:1},8,["to"]),s("button",{type:"submit",class:"btn btn-primary w-24",disabled:e.isLoading},[I,e.isLoading?(l(),S(a,{key:0,icon:"oval",color:"white",class:"w-4 h-4 ml-2"})):f("",!0)],8,E)])]),_:1},8,["fields","onSubmit"])])}const X=b(N,[["render",q]]);export{X as default};
|
||||
import{_ as b,d as C,q as v,X as w,u as k,c as n,w as L,b as h,e as s,g as y,h as g,A as _,r as d,o as l,B as f,a as S,i as B}from"./index.bdc6f486.js";import{D}from"./DynamicForm.4466a530.js";const N=C({name:"SchedulerCreate",components:{DynamicForm:D},setup(){const e=v(),m=w(),t=k(),o=n(()=>e.params.type);L(o,()=>r());function r(){t.dispatch("scheduler/setCurrentCategory",o.value)}r();const p=n(()=>t.getters["scheduler/getCurrentCategory"]),i=n(()=>t.getters["main/isLoading"]),a=n(()=>t.getters["scheduler/getError"]);async function c(u){await t.dispatch("scheduler/saveAutomation",{category:o.value,...u}),a.value||await m.push({name:"scheduler.show",params:{type:o.value}})}return{type:o,currentCategory:p,onSubmit:c,isLoading:i,error:a}}}),R={class:"intro-y flex items-center mt-8"},V={class:"text-lg font-medium mr-auto"},$={key:0,class:"alert alert-danger show my-2",role:"alert"},A={class:"text-right mt-5"},F=["disabled","onClick"],E=["disabled"],I=B(" Salva ");function q(e,m,t,o,r,p){const i=d("RouterLink"),a=d("LoadingIcon"),c=d("DynamicForm");return l(),h("div",null,[s("div",R,[s("h2",V," Nuova Pianificata "+y(e.type),1)]),g(c,{fields:e.currentCategory,onSubmit:e.onSubmit,class:"intro-y"},{default:_(()=>[e.error?(l(),h("div",$,y(e.error.message),1)):f("",!0),s("div",A,[g(i,{to:{name:"scheduler.show",params:{type:e.type}},custom:""},{default:_(({navigate:u})=>[s("button",{type:"button",class:"btn btn-outline-secondary w-24 mr-1",disabled:e.isLoading,onClick:u}," Annulla ",8,F)]),_:1},8,["to"]),s("button",{type:"submit",class:"btn btn-primary w-24",disabled:e.isLoading},[I,e.isLoading?(l(),S(a,{key:0,icon:"oval",color:"white",class:"w-4 h-4 ml-2"})):f("",!0)],8,E)])]),_:1},8,["fields","onSubmit"])])}const X=b(N,[["render",q]]);export{X as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as S,d as B,q as D,X as N,u as E,c as a,w as g,v as R,b as y,e as n,g as v,h as _,A as b,r as l,o as m,B as C,a as V,i as $}from"./index.e3ffa8b5.js";import{D as F}from"./DynamicForm.3e07ffe1.js";const I=B({name:"SchedulerEdit",components:{DynamicForm:F},setup(){const e=D(),h=N(),t=E(),o=a(()=>e.params.type);g(o,()=>i()),i();async function p(){await t.dispatch("scheduler/fetchAutomations",o.value)}p();function i(){t.dispatch("scheduler/setCurrentCategory",o.value)}const c=a(()=>t.getters["scheduler/getCurrentCategory"]),s=a(()=>e.params.id);g(s,()=>r());const u=a(()=>e.name);function r(){t.dispatch("scheduler/setCurrentAutomation",s.value)}r();const w=a(()=>t.getters["scheduler/getCurrentAutomation"]),d=R(w.value);d.value&&u.value==="scheduler.duplicate"&&(d.value.id=void 0);const A=a(()=>t.getters["main/isLoading"]),f=a(()=>t.getters["scheduler/getError"]);async function k(L){await t.dispatch("scheduler/saveAutomation",{category:o.value,...L}),f.value||await h.push({name:"scheduler.show",params:{type:o.value}})}return{type:o,id:s,currentCategory:c,currentAutomation:d,onSubmit:k,isLoading:A,error:f}}}),q={class:"intro-y flex items-center mt-8"},M={class:"text-lg font-medium mr-auto"},P={key:0,class:"alert alert-danger show my-2",role:"alert"},T={class:"text-right mt-5"},X=["disabled","onClick"],j=["disabled"],z=$(" Salva ");function G(e,h,t,o,p,i){const c=l("RouterLink"),s=l("LoadingIcon"),u=l("DynamicForm");return m(),y("div",null,[n("div",q,[n("h2",M," Modifica Pianificata "+v(e.currentAutomation.name),1)]),_(u,{fields:e.currentCategory,"initial-values":e.currentAutomation,onSubmit:e.onSubmit,class:"intro-y"},{default:b(()=>[e.error?(m(),y("div",P,v(e.error.message),1)):C("",!0),n("div",T,[_(c,{to:{name:"scheduler.show",params:{type:e.type}},custom:""},{default:b(({navigate:r})=>[n("button",{type:"button",class:"btn btn-outline-secondary w-24 mr-1",disabled:e.isLoading,onClick:r}," Annulla ",8,X)]),_:1},8,["to"]),n("button",{type:"submit",class:"btn btn-primary w-24",disabled:e.isLoading},[z,e.isLoading?(m(),V(s,{key:0,icon:"oval",color:"white",class:"w-4 h-4 ml-2"})):C("",!0)],8,j)])]),_:1},8,["fields","initial-values","onSubmit"])])}const K=S(I,[["render",G]]);export{K as default};
|
||||
import{_ as S,d as B,q as D,X as N,u as E,c as a,w as g,v as R,b as y,e as n,g as v,h as _,A as b,r as l,o as m,B as C,a as V,i as $}from"./index.bdc6f486.js";import{D as F}from"./DynamicForm.4466a530.js";const I=B({name:"SchedulerEdit",components:{DynamicForm:F},setup(){const e=D(),h=N(),t=E(),o=a(()=>e.params.type);g(o,()=>i()),i();async function p(){await t.dispatch("scheduler/fetchAutomations",o.value)}p();function i(){t.dispatch("scheduler/setCurrentCategory",o.value)}const c=a(()=>t.getters["scheduler/getCurrentCategory"]),s=a(()=>e.params.id);g(s,()=>r());const u=a(()=>e.name);function r(){t.dispatch("scheduler/setCurrentAutomation",s.value)}r();const w=a(()=>t.getters["scheduler/getCurrentAutomation"]),d=R(w.value);d.value&&u.value==="scheduler.duplicate"&&(d.value.id=void 0);const A=a(()=>t.getters["main/isLoading"]),f=a(()=>t.getters["scheduler/getError"]);async function k(L){await t.dispatch("scheduler/saveAutomation",{category:o.value,...L}),f.value||await h.push({name:"scheduler.show",params:{type:o.value}})}return{type:o,id:s,currentCategory:c,currentAutomation:d,onSubmit:k,isLoading:A,error:f}}}),q={class:"intro-y flex items-center mt-8"},M={class:"text-lg font-medium mr-auto"},P={key:0,class:"alert alert-danger show my-2",role:"alert"},T={class:"text-right mt-5"},X=["disabled","onClick"],j=["disabled"],z=$(" Salva ");function G(e,h,t,o,p,i){const c=l("RouterLink"),s=l("LoadingIcon"),u=l("DynamicForm");return m(),y("div",null,[n("div",q,[n("h2",M," Modifica Pianificata "+v(e.currentAutomation.name),1)]),_(u,{fields:e.currentCategory,"initial-values":e.currentAutomation,onSubmit:e.onSubmit,class:"intro-y"},{default:b(()=>[e.error?(m(),y("div",P,v(e.error.message),1)):C("",!0),n("div",T,[_(c,{to:{name:"scheduler.show",params:{type:e.type}},custom:""},{default:b(({navigate:r})=>[n("button",{type:"button",class:"btn btn-outline-secondary w-24 mr-1",disabled:e.isLoading,onClick:r}," Annulla ",8,X)]),_:1},8,["to"]),n("button",{type:"submit",class:"btn btn-primary w-24",disabled:e.isLoading},[z,e.isLoading?(m(),V(s,{key:0,icon:"oval",color:"white",class:"w-4 h-4 ml-2"})):C("",!0)],8,j)])]),_:1},8,["fields","initial-values","onSubmit"])])}const K=S(I,[["render",G]]);export{K as default};
|
||||
@@ -1 +1 @@
|
||||
import{_ as s,d as n,u as r,c as i,w as u,a as d,o as p,r as l}from"./index.e3ffa8b5.js";const h=n({name:"SchedulerIndex",setup(){const e=r(),o=i(()=>e.getters["scheduler/getAutomationCategories"]);e.dispatch("scheduler/initStore"),u(()=>o.value,()=>{e.dispatch("main/clearMenuButton",{button:"Pianificate",child:!0}),Object.keys(o.value).forEach(t=>{e.dispatch("main/addMenuButton",{child:"Pianificate",button:{title:t,icon:"ActivityIcon",routeName:"scheduler.show",params:{type:t},child:[{routeName:"scheduler.create",params:{type:t}}]}})})})}});function m(e,o,a,t,_,f){const c=l("router-view");return p(),d(c)}const w=s(h,[["render",m]]);export{w as default};
|
||||
import{_ as s,d as n,u as r,c as i,w as u,a as d,o as p,r as l}from"./index.bdc6f486.js";const h=n({name:"SchedulerIndex",setup(){const e=r(),o=i(()=>e.getters["scheduler/getAutomationCategories"]);e.dispatch("scheduler/initStore"),u(()=>o.value,()=>{e.dispatch("main/clearMenuButton",{button:"Pianificate",child:!0}),Object.keys(o.value).forEach(t=>{e.dispatch("main/addMenuButton",{child:"Pianificate",button:{title:t,icon:"ActivityIcon",routeName:"scheduler.show",params:{type:t},child:[{routeName:"scheduler.create",params:{type:t}}]}})})})}});function m(e,o,a,t,_,f){const c=l("router-view");return p(),d(c)}const w=s(h,[["render",m]]);export{w as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.status-badge{border-radius:2px;padding:.25em .5rem;text-transform:uppercase;font-weight:700;font-size:12px;letter-spacing:.3px}.status-badge.completed{background-color:#c8e6c9;color:#256029}.status-badge.pending{background-color:#b3e5fc;color:#23547b}.status-badge.skipped{background-color:#a6a6a6;color:#fff}.status-badge.error{background-color:#ffcdd2;color:#c63737}
|
||||
1
ems-engine/src/main/webapp/assets/Migrations.933d5766.js
Normal file
1
ems-engine/src/main/webapp/assets/Migrations.933d5766.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
ems-engine/src/main/webapp/assets/auto.8b5dcffb.js
Normal file
1
ems-engine/src/main/webapp/assets/auto.8b5dcffb.js
Normal file
@@ -0,0 +1 @@
|
||||
import{a8 as a,a9 as r}from"./index.bdc6f486.js";import{a8 as o}from"./index.bdc6f486.js";a.register(...r);export{o as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{a7 as a,a8 as r}from"./index.e3ffa8b5.js";import{a7 as o}from"./index.e3ffa8b5.js";a.register(...r);export{o as default};
|
||||
File diff suppressed because one or more lines are too long
349
ems-engine/src/main/webapp/assets/index.bdc6f486.js
Normal file
349
ems-engine/src/main/webapp/assets/index.bdc6f486.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -17,8 +17,8 @@
|
||||
/>
|
||||
<!-- <link rel="preload" href="/font/Inter-italic.var.woff2" as="font" type="font/woff2" crossorigin="anonymous"> -->
|
||||
<link rel="stylesheet" href="./font/inter.css"/>
|
||||
<script type="module" crossorigin src="./assets/index.e3ffa8b5.js"></script>
|
||||
<link rel="stylesheet" href="./assets/index.9a08ebf5.css">
|
||||
<script type="module" crossorigin src="./assets/index.bdc6f486.js"></script>
|
||||
<link rel="stylesheet" href="./assets/index.d9568127.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@@ -11,7 +11,9 @@ import org.kie.api.definition.type.PropertyReactive;
|
||||
@Table(${NAME}.ENTITY)
|
||||
@JsonTypeName(${NAME}.ENTITY)
|
||||
public class ${NAME} extends EntityBase {
|
||||
|
||||
public static final String ENTITY = "${TABLE}";
|
||||
|
||||
#[[$END$]]#
|
||||
private static final long serialVerionUID = 1L;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user