Migliorie Sincronizzazioni

This commit is contained in:
2024-02-26 13:39:11 +01:00
parent 64bfafbcf1
commit d2cfd915a4
5 changed files with 109 additions and 29 deletions

View File

@@ -37,7 +37,6 @@ public class RemoteSynchronizationSetupController {
InsertPublicationItemResponseDTO response = new InsertPublicationItemResponseDTO() InsertPublicationItemResponseDTO response = new InsertPublicationItemResponseDTO()
.setId(remoteSynchronizationSetupService.addPublicationItem(groupId, publicationToInsert)); .setId(remoteSynchronizationSetupService.addPublicationItem(groupId, publicationToInsert));
return ServiceRestResponse.createPositiveResponse(response); return ServiceRestResponse.createPositiveResponse(response);
} }
@@ -56,4 +55,11 @@ public class RemoteSynchronizationSetupController {
} }
@RequestMapping(value = "publications/{publicationId}/edit", method = RequestMethod.POST)
public ServiceRestResponse editPublication(@PathVariable long publicationId, @RequestBody PublicationDTO publicationToEdit) throws Exception {
remoteSynchronizationSetupService.editPublication(publicationId, publicationToEdit);
return ServiceRestResponse.createPositiveResponse();
}
} }

View File

@@ -8,14 +8,17 @@ public class PublicationDTO {
private String entityName; private String entityName;
private String whereCondSql; private String whereCondSql;
private String recalcColumns; private String recalcColumns;
private boolean active; private Boolean active;
private boolean exportHistory; private Boolean exportHistory;
private Boolean readyToTransmit;
private String whereCond; private String whereCond;
public static PublicationDTO fromStbPublicationDetail(StbPublicationsDetail stbPublicationsDetail) { public static PublicationDTO fromStbPublicationDetail(StbPublicationsDetail stbPublicationsDetail) {
return new PublicationDTO() return new PublicationDTO()
.setActive(stbPublicationsDetail.isActive()) .setActive(stbPublicationsDetail.isActive())
.setExportHistory(stbPublicationsDetail.isExportHistory())
.setReadyToTransmit(stbPublicationsDetail.isReadyToTransmit())
.setId(stbPublicationsDetail.getId()) .setId(stbPublicationsDetail.getId())
.setRecalcColumns(stbPublicationsDetail.getRecalcColumnsField()) .setRecalcColumns(stbPublicationsDetail.getRecalcColumnsField())
.setEntityName(stbPublicationsDetail.getEntityName()) .setEntityName(stbPublicationsDetail.getEntityName())
@@ -59,24 +62,33 @@ public class PublicationDTO {
return this; return this;
} }
public boolean isActive() { public Boolean getActive() {
return active; return active;
} }
public PublicationDTO setActive(boolean active) { public PublicationDTO setActive(Boolean active) {
this.active = active; this.active = active;
return this; return this;
} }
public boolean isExportHistory() { public Boolean getExportHistory() {
return exportHistory; return exportHistory;
} }
public PublicationDTO setExportHistory(boolean exportHistory) { public PublicationDTO setExportHistory(Boolean exportHistory) {
this.exportHistory = exportHistory; this.exportHistory = exportHistory;
return this; return this;
} }
public Boolean getReadyToTransmit() {
return readyToTransmit;
}
public PublicationDTO setReadyToTransmit(Boolean readyToTransmit) {
this.readyToTransmit = readyToTransmit;
return this;
}
public String getWhereCond() { public String getWhereCond() {
return whereCond; return whereCond;
} }

View File

@@ -8,6 +8,9 @@ public class PublicationGroupDTO {
private long id; private long id;
private String description; private String description;
private boolean canStartExport;
private boolean canBeDeleted;
private List<PublicationDTO> publications = new ArrayList<>(); private List<PublicationDTO> publications = new ArrayList<>();
public long getId() { public long getId() {
@@ -28,6 +31,24 @@ public class PublicationGroupDTO {
return this; return this;
} }
public boolean isCanStartExport() {
return canStartExport;
}
public PublicationGroupDTO setCanStartExport(boolean canStartExport) {
this.canStartExport = canStartExport;
return this;
}
public boolean isCanBeDeleted() {
return canBeDeleted;
}
public PublicationGroupDTO setCanBeDeleted(boolean canBeDeleted) {
this.canBeDeleted = canBeDeleted;
return this;
}
public List<PublicationDTO> getPublications() { public List<PublicationDTO> getPublications() {
return publications; return publications;
} }
@@ -36,4 +57,5 @@ public class PublicationGroupDTO {
this.publications = publications; this.publications = publications;
return this; return this;
} }
} }

View File

@@ -10,16 +10,13 @@ import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityPropertyHolder; import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.entity.StbPublicationsDetail; import it.integry.ems_model.entity.StbPublicationsDetail;
import it.integry.ems_model.utility.Query; import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Random;
@Service @Service
@Scope(value = "request") @Scope(value = "request")
@@ -54,17 +51,17 @@ public class RemoteSynchronizationService {
} }
public List<ExportHistoryStatusDTO> getPublicationStatus() { public List<ExportHistoryStatusDTO> getPublicationStatus() {
int totalCount = new Random().nextInt(1000000); // int totalCount = new Random().nextInt(1000000);
int currentCount = new Random().nextInt(totalCount); // int currentCount = new Random().nextInt(totalCount);
//
// return Collections.singletonList(new ExportHistoryStatusDTO()
// .setPublicationGroupId(1)
// .setProcessedCount(currentCount)
// .setTotalCount(totalCount)
// .setStartedAt(UtilityLocalDate.getNowTime().minusMinutes(10))
// .setEstimatedEnd(UtilityLocalDate.getNowTime().plusMinutes(15))
// .setSpeedPerMinute(500));
return Collections.singletonList(new ExportHistoryStatusDTO() return asyncHistoryManager.getStatus();
.setPublicationGroupId(1)
.setProcessedCount(currentCount)
.setTotalCount(totalCount)
.setStartedAt(UtilityLocalDate.getNowTime().minusMinutes(10))
.setEstimatedEnd(UtilityLocalDate.getNowTime().plusMinutes(15))
.setSpeedPerMinute(500));
// return asyncHistoryManager.getStatus();
} }
} }

View File

@@ -2,12 +2,13 @@ package it.integry.ems.sync.service;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.AsyncHistoryManager;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.sync.dto.ExportHistoryStatusDTO;
import it.integry.ems.sync.dto.PublicationDTO; import it.integry.ems.sync.dto.PublicationDTO;
import it.integry.ems.sync.dto.PublicationGroupDTO; import it.integry.ems.sync.dto.PublicationGroupDTO;
import it.integry.ems.utility.UtilityEntity; import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.entity.StbPublications; import it.integry.ems_model.entity.StbPublications;
import it.integry.ems_model.entity.StbPublicationsDetail; import it.integry.ems_model.entity.StbPublicationsDetail;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
@@ -44,7 +45,7 @@ public class RemoteSynchronizationSetupService {
private EntityProcessor entityProcessor; private EntityProcessor entityProcessor;
@Autowired @Autowired
private EntityPropertyHolder entityPropertyHolder; private AsyncHistoryManager asyncHistoryManager;
public List<PublicationGroupDTO> retrievePublications() throws Exception { public List<PublicationGroupDTO> retrievePublications() throws Exception {
@@ -63,6 +64,7 @@ public class RemoteSynchronizationSetupService {
List<PublicationGroupDTO> publicationGroups = new ArrayList<>(); List<PublicationGroupDTO> publicationGroups = new ArrayList<>();
final List<ExportHistoryStatusDTO> currentExportStatus = asyncHistoryManager.getStatus();
for (StbPublications stbPublication : stbPublicationsToRetrieve) { for (StbPublications stbPublication : stbPublicationsToRetrieve) {
@@ -76,6 +78,12 @@ public class RemoteSynchronizationSetupService {
.map(PublicationDTO::fromStbPublicationDetail) .map(PublicationDTO::fromStbPublicationDetail)
.collect(toList()); .collect(toList());
publicationGroupDTO.setPublications(publications); publicationGroupDTO.setPublications(publications);
boolean atLeastOneActiveToExport = publications.stream().anyMatch(publicationDTO -> publicationDTO.getExportHistory() && publicationDTO.getActive());
boolean alreadyExporting = currentExportStatus.stream().anyMatch(x -> x.getPublicationGroupId() == publicationGroupDTO.getId());
publicationGroupDTO.setCanStartExport(atLeastOneActiveToExport && !alreadyExporting);
publicationGroupDTO.setCanBeDeleted(!alreadyExporting);
} }
return publicationGroups; return publicationGroups;
@@ -99,13 +107,13 @@ public class RemoteSynchronizationSetupService {
final StbPublicationsDetail stbPublicationsDetail = new StbPublicationsDetail() final StbPublicationsDetail stbPublicationsDetail = new StbPublicationsDetail()
.setStbPublicationId(groupId) .setStbPublicationId(groupId)
.setEntityName(publicationToInsert.getEntityName()) .setEntityName(publicationToInsert.getEntityName().toUpperCase())
.setWhereCondSql(publicationToInsert.getWhereCondSql()) .setWhereCondSql(publicationToInsert.getWhereCondSql())
.setRecalcColumns(publicationToInsert.getRecalcColumns()) .setRecalcColumns(publicationToInsert.getRecalcColumns())
.setActive(publicationToInsert.isActive()) .setActive(publicationToInsert.getActive())
.setWhereCondField(publicationToInsert.getWhereCond()) .setWhereCondField(publicationToInsert.getWhereCond())
.setExportHistory(publicationToInsert.isExportHistory()) .setExportHistory(publicationToInsert.getExportHistory())
.setReadyToTransmit(!publicationToInsert.isExportHistory()); .setReadyToTransmit(!publicationToInsert.getReadyToTransmit());
stbPublicationsDetail.setOperation(OperationType.INSERT); stbPublicationsDetail.setOperation(OperationType.INSERT);
StbPublications stbPublications = new StbPublications() StbPublications stbPublications = new StbPublications()
@@ -126,7 +134,7 @@ public class RemoteSynchronizationSetupService {
.setEntityName(x.getEntityName()) .setEntityName(x.getEntityName())
.setWhereCondSql(x.getWhereCondSql()) .setWhereCondSql(x.getWhereCondSql())
.setRecalcColumns(x.getRecalcColumns()) .setRecalcColumns(x.getRecalcColumns())
.setActive(x.isActive()) .setActive(x.getActive())
.setWhereCondField(x.getWhereCond()); .setWhereCondField(x.getWhereCond());
stbPublicationsDetail.setOperation(OperationType.INSERT); stbPublicationsDetail.setOperation(OperationType.INSERT);
return stbPublicationsDetail; return stbPublicationsDetail;
@@ -175,6 +183,41 @@ public class RemoteSynchronizationSetupService {
UtilityEntity.throwEntitiesException(savedEntities); UtilityEntity.throwEntitiesException(savedEntities);
} }
public void editPublication(long publicationId, PublicationDTO publicationDTO) throws Exception {
StbPublicationsDetail stbPublicationsDetail = new StbPublicationsDetail()
.setId(publicationId);
stbPublicationsDetail.setOperation(OperationType.SELECT_OBJECT);
stbPublicationsDetail = entityProcessor.processEntity(stbPublicationsDetail, multiDBTransactionManager);
if(publicationDTO.getExportHistory() != null)
stbPublicationsDetail.setExportHistory(publicationDTO.getExportHistory());
if(publicationDTO.getActive() != null)
stbPublicationsDetail.setActive(publicationDTO.getActive());
if(publicationDTO.getEntityName() != null)
stbPublicationsDetail.setEntityName(publicationDTO.getEntityName());
if(publicationDTO.getRecalcColumns() != null)
stbPublicationsDetail.setRecalcColumns(publicationDTO.getRecalcColumns());
if(publicationDTO.getWhereCond() != null)
stbPublicationsDetail.setWhereCondField(publicationDTO.getWhereCond());
if(publicationDTO.getWhereCondSql() != null)
stbPublicationsDetail.setWhereCondSql(publicationDTO.getWhereCondSql());
stbPublicationsDetail.setOperation(OperationType.UPDATE);
StbPublications stbPublication = new StbPublications()
.setId(stbPublicationsDetail.getStbPublicationId());
stbPublication.getStbPublicationsDetails().add(stbPublicationsDetail);
stbPublication.setOperation(OperationType.NO_OP);
entityProcessor.processEntity(stbPublication, multiDBTransactionManager);
}
public void deletePublicationsGroup(long publicationGroup) throws Exception { public void deletePublicationsGroup(long publicationGroup) throws Exception {
StbPublications tmpStbPublications = new StbPublications() StbPublications tmpStbPublications = new StbPublications()
.setId(publicationGroup); .setId(publicationGroup);