FINERACT-1716: remove redundant boilerplate code within CommandSource class

This commit is contained in:
zeyad2003
2024-07-23 23:05:45 +02:00
committed by Adam Saghy
parent 39ddc87ec5
commit 0959c8e401
4 changed files with 37 additions and 186 deletions
@@ -24,6 +24,11 @@ import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.time.OffsetDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@@ -32,6 +37,11 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "m_portfolio_command_source")
public class CommandSource extends AbstractPersistableCustom<Long> {
@@ -123,195 +133,36 @@ public class CommandSource extends AbstractPersistableCustom<Long> {
@Column(name = "result_status_code")
private Integer resultStatusCode;
private CommandSource(final String actionName, final String entityName, final String href, final Long resourceId,
final Long subResourceId, final String commandSerializedAsJson, final AppUser maker, final String idempotencyKey,
final Integer status) {
this.actionName = actionName;
this.entityName = entityName;
this.resourceGetUrl = href;
this.resourceId = resourceId;
this.subResourceId = subResourceId;
this.commandAsJson = commandSerializedAsJson;
this.maker = maker;
this.madeOnDate = DateUtils.getAuditOffsetDateTime();
this.status = status;
this.idempotencyKey = idempotencyKey;
}
public static CommandSource fullEntryFrom(final CommandWrapper wrapper, final JsonCommand command, final AppUser maker,
String idempotencyKey, Integer status) {
CommandSource commandSource = new CommandSource(wrapper.actionName(), wrapper.entityName(), wrapper.getHref(), command.entityId(),
command.subentityId(), command.json(), maker, idempotencyKey, status);
commandSource.officeId = wrapper.getOfficeId();
commandSource.groupId = command.getGroupId();
commandSource.clientId = command.getClientId();
commandSource.loanId = command.getLoanId();
commandSource.savingsId = command.getSavingsId();
commandSource.productId = command.getProductId();
commandSource.transactionId = command.getTransactionId();
commandSource.creditBureauId = command.getCreditBureauId();
commandSource.organisationCreditBureauId = command.getOrganisationCreditBureauId();
return commandSource;
}
protected CommandSource() {
//
}
public Long getCreditBureauId() {
return this.creditBureauId;
}
public void setCreditBureauId(Long creditBureauId) {
this.creditBureauId = creditBureauId;
}
public Long getOrganisationCreditBureauId() {
return this.organisationCreditBureauId;
}
public void setOrganisationCreditBureauId(Long organisationCreditBureauId) {
this.organisationCreditBureauId = organisationCreditBureauId;
}
public String getJobName() {
return this.jobName;
}
public Long getResourceId() {
return this.resourceId;
}
public void setResourceId(final Long resourceId) {
this.resourceId = resourceId;
}
public Long getSubResourceId() {
return this.subResourceId;
}
public void setSubResourceId(final Long subResourceId) {
this.subResourceId = subResourceId;
}
public String getCommandJson() {
return this.commandAsJson;
}
public void setCommandJson(final String json) {
this.commandAsJson = json;
}
public AppUser getMaker() {
return maker;
}
public AppUser getChecker() {
return checker;
}
public String getActionName() {
return this.actionName;
}
public String getEntityName() {
return this.entityName;
return CommandSource.builder() //
.actionName(wrapper.actionName()) //
.entityName(wrapper.entityName()) //
.resourceGetUrl(wrapper.getHref()) //
.resourceId(command.entityId()) //
.subResourceId(command.subentityId()) //
.commandAsJson(command.json()) //
.maker(maker) //
.madeOnDate(DateUtils.getAuditOffsetDateTime()) //
.status(status) //
.idempotencyKey(idempotencyKey) //
.officeId(wrapper.getOfficeId()) //
.groupId(command.getGroupId()) //
.clientId(command.getClientId()) //
.loanId(command.getLoanId()) //
.savingsId(command.getSavingsId()) //
.productId(command.getProductId()) //
.transactionId(command.getTransactionId()) //
.creditBureauId(command.getCreditBureauId()) //
.organisationCreditBureauId(command.getOrganisationCreditBureauId()) //
.build(); //
}
public String getPermissionCode() {
return this.actionName + "_" + this.entityName;
}
public String getResourceGetUrl() {
return this.resourceGetUrl;
}
public Long getProductId() {
return this.productId;
}
/**
* @return the clientId
*/
public Long getClientId() {
return clientId;
}
/**
* @return the groupId
*/
public Long getGroupId() {
return groupId;
}
/**
* @return the loanId
*/
public Long getLoanId() {
return loanId;
}
/**
* @return the officeId
*/
public Long getOfficeId() {
return officeId;
}
/**
* @return the savingsId
*/
public Long getSavingsId() {
return savingsId;
}
/**
* @return the transactionId
*/
public String getTransactionId() {
return this.transactionId;
}
public void setTransactionId(final String transactionId) {
this.transactionId = transactionId;
}
public String getIdempotencyKey() {
return idempotencyKey;
}
public void setIdempotencyKey(String idempotencyKey) {
this.idempotencyKey = idempotencyKey;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public void setStatus(CommandProcessingResultType status) {
setStatus(status == null ? null : status.getValue());
}
public Integer getResultStatusCode() {
return resultStatusCode;
}
public void setResultStatusCode(Integer resultStatusCode) {
this.resultStatusCode = resultStatusCode;
}
public void markAsAwaitingApproval() {
this.status = CommandProcessingResultType.AWAITING_APPROVAL.getValue();
}
@@ -111,8 +111,8 @@ public class CommandSourceService {
public CommandSource getInitialCommandSource(CommandWrapper wrapper, JsonCommand jsonCommand, AppUser maker, String idempotencyKey) {
CommandSource commandSourceResult = CommandSource.fullEntryFrom(wrapper, jsonCommand, maker, idempotencyKey,
UNDER_PROCESSING.getValue());
if (commandSourceResult.getCommandJson() == null) {
commandSourceResult.setCommandJson("{}");
if (commandSourceResult.getCommandAsJson() == null) {
commandSourceResult.setCommandAsJson("{}");
}
return commandSourceResult;
}
@@ -89,8 +89,8 @@ public class PortfolioCommandSourceWritePlatformServiceImpl implements Portfolio
commandSourceInput.getGroupId(), commandSourceInput.getClientId(), commandSourceInput.getLoanId(),
commandSourceInput.getSavingsId(), commandSourceInput.getTransactionId(), commandSourceInput.getCreditBureauId(),
commandSourceInput.getOrganisationCreditBureauId(), commandSourceInput.getIdempotencyKey());
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSourceInput.getCommandJson());
final JsonCommand command = JsonCommand.fromExistingCommand(makerCheckerId, commandSourceInput.getCommandJson(), parsedCommand,
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSourceInput.getCommandAsJson());
final JsonCommand command = JsonCommand.fromExistingCommand(makerCheckerId, commandSourceInput.getCommandAsJson(), parsedCommand,
this.fromApiJsonHelper, commandSourceInput.getEntityName(), commandSourceInput.getResourceId(),
commandSourceInput.getSubResourceId(), commandSourceInput.getGroupId(), commandSourceInput.getClientId(),
commandSourceInput.getLoanId(), commandSourceInput.getSavingsId(), commandSourceInput.getTransactionId(),
@@ -134,7 +134,7 @@ public class SynchronousCommandProcessingService implements CommandProcessingSer
commandSource.setResultStatusCode(statusCode);
commandSource.setResult(errorInfo.getMessage());
if (statusCode != SC_OK) {
commandSource.setStatus(ERROR);
commandSource.setStatus(ERROR.getValue());
}
if (!isEnclosingTransaction) { // TODO: temporary solution
commandSource = commandSourceService.saveResultNewTransaction(commandSource);
@@ -148,7 +148,7 @@ public class SynchronousCommandProcessingService implements CommandProcessingSer
commandSource.setResultStatusCode(SC_OK);
commandSource.updateForAudit(result);
commandSource.setResult(toApiJsonSerializer.serializeResult(result));
commandSource.setStatus(PROCESSED);
commandSource.setStatus(PROCESSED.getValue());
commandSource = commandSourceService.saveResultSameTransaction(commandSource);
storeCommandIdInContext(commandSource); // Store command id as a request attribute