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()
.setId(remoteSynchronizationSetupService.addPublicationItem(groupId, publicationToInsert));
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 whereCondSql;
private String recalcColumns;
private boolean active;
private boolean exportHistory;
private Boolean active;
private Boolean exportHistory;
private Boolean readyToTransmit;
private String whereCond;
public static PublicationDTO fromStbPublicationDetail(StbPublicationsDetail stbPublicationsDetail) {
return new PublicationDTO()
.setActive(stbPublicationsDetail.isActive())
.setExportHistory(stbPublicationsDetail.isExportHistory())
.setReadyToTransmit(stbPublicationsDetail.isReadyToTransmit())
.setId(stbPublicationsDetail.getId())
.setRecalcColumns(stbPublicationsDetail.getRecalcColumnsField())
.setEntityName(stbPublicationsDetail.getEntityName())
@@ -59,24 +62,33 @@ public class PublicationDTO {
return this;
}
public boolean isActive() {
public Boolean getActive() {
return active;
}
public PublicationDTO setActive(boolean active) {
public PublicationDTO setActive(Boolean active) {
this.active = active;
return this;
}
public boolean isExportHistory() {
public Boolean getExportHistory() {
return exportHistory;
}
public PublicationDTO setExportHistory(boolean exportHistory) {
public PublicationDTO setExportHistory(Boolean exportHistory) {
this.exportHistory = exportHistory;
return this;
}
public Boolean getReadyToTransmit() {
return readyToTransmit;
}
public PublicationDTO setReadyToTransmit(Boolean readyToTransmit) {
this.readyToTransmit = readyToTransmit;
return this;
}
public String getWhereCond() {
return whereCond;
}

View File

@@ -8,6 +8,9 @@ public class PublicationGroupDTO {
private long id;
private String description;
private boolean canStartExport;
private boolean canBeDeleted;
private List<PublicationDTO> publications = new ArrayList<>();
public long getId() {
@@ -28,6 +31,24 @@ public class PublicationGroupDTO {
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() {
return publications;
}
@@ -36,4 +57,5 @@ public class PublicationGroupDTO {
this.publications = publications;
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.entity.StbPublicationsDetail;
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.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Random;
@Service
@Scope(value = "request")
@@ -54,17 +51,17 @@ public class RemoteSynchronizationService {
}
public List<ExportHistoryStatusDTO> getPublicationStatus() {
int totalCount = new Random().nextInt(1000000);
int currentCount = new Random().nextInt(totalCount);
// int totalCount = new Random().nextInt(1000000);
// 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()
.setPublicationGroupId(1)
.setProcessedCount(currentCount)
.setTotalCount(totalCount)
.setStartedAt(UtilityLocalDate.getNowTime().minusMinutes(10))
.setEstimatedEnd(UtilityLocalDate.getNowTime().plusMinutes(15))
.setSpeedPerMinute(500));
// return asyncHistoryManager.getStatus();
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.service.EntityProcessor;
import it.integry.ems.sync.AsyncHistoryManager;
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.PublicationGroupDTO;
import it.integry.ems.utility.UtilityEntity;
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.StbPublicationsDetail;
import it.integry.ems_model.types.OperationType;
@@ -44,7 +45,7 @@ public class RemoteSynchronizationSetupService {
private EntityProcessor entityProcessor;
@Autowired
private EntityPropertyHolder entityPropertyHolder;
private AsyncHistoryManager asyncHistoryManager;
public List<PublicationGroupDTO> retrievePublications() throws Exception {
@@ -63,6 +64,7 @@ public class RemoteSynchronizationSetupService {
List<PublicationGroupDTO> publicationGroups = new ArrayList<>();
final List<ExportHistoryStatusDTO> currentExportStatus = asyncHistoryManager.getStatus();
for (StbPublications stbPublication : stbPublicationsToRetrieve) {
@@ -76,6 +78,12 @@ public class RemoteSynchronizationSetupService {
.map(PublicationDTO::fromStbPublicationDetail)
.collect(toList());
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;
@@ -94,18 +102,18 @@ public class RemoteSynchronizationSetupService {
public long addPublicationItem(long groupId, @NotNull PublicationDTO publicationToInsert) throws Exception {
if(checkIfPublicationExists(groupId, publicationToInsert))
if (checkIfPublicationExists(groupId, publicationToInsert))
throw new Exception("Esiste già una pubblicazione per " + publicationToInsert.getEntityName() + " con gli stessi parametri");
final StbPublicationsDetail stbPublicationsDetail = new StbPublicationsDetail()
.setStbPublicationId(groupId)
.setEntityName(publicationToInsert.getEntityName())
.setEntityName(publicationToInsert.getEntityName().toUpperCase())
.setWhereCondSql(publicationToInsert.getWhereCondSql())
.setRecalcColumns(publicationToInsert.getRecalcColumns())
.setActive(publicationToInsert.isActive())
.setActive(publicationToInsert.getActive())
.setWhereCondField(publicationToInsert.getWhereCond())
.setExportHistory(publicationToInsert.isExportHistory())
.setReadyToTransmit(!publicationToInsert.isExportHistory());
.setExportHistory(publicationToInsert.getExportHistory())
.setReadyToTransmit(!publicationToInsert.getReadyToTransmit());
stbPublicationsDetail.setOperation(OperationType.INSERT);
StbPublications stbPublications = new StbPublications()
@@ -126,7 +134,7 @@ public class RemoteSynchronizationSetupService {
.setEntityName(x.getEntityName())
.setWhereCondSql(x.getWhereCondSql())
.setRecalcColumns(x.getRecalcColumns())
.setActive(x.isActive())
.setActive(x.getActive())
.setWhereCondField(x.getWhereCond());
stbPublicationsDetail.setOperation(OperationType.INSERT);
return stbPublicationsDetail;
@@ -175,6 +183,41 @@ public class RemoteSynchronizationSetupService {
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 {
StbPublications tmpStbPublications = new StbPublications()
.setId(publicationGroup);