Skip to content

Commit

Permalink
Merge branch 'aiccra-shfrm-contribution-functionality' into aiccra-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
kenjitm committed Feb 16, 2024
2 parents b2f04ef + 67eb0d4 commit e782c63
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ public class SoilIndicator extends MarloBaseEntity implements java.io.Serializab
@Expose
private String indicatorName;
@Expose
private long indicatorId;
private Long indicatorId;
@Expose
private Phase phase;

public long getIndicatorId() {
public Long getIndicatorId() {
return indicatorId;
}

Expand Down Expand Up @@ -66,7 +66,7 @@ public boolean isActive() {
return false;
}

public void setIndicatorId(long indicatorId) {
public void setIndicatorId(Long indicatorId) {
this.indicatorId = indicatorId;
}

Expand All @@ -82,5 +82,6 @@ public void setModifiedBy(User modifiedBy) {
public void setPhase(Phase phase) {
this.phase = phase;
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@
import org.cgiar.ccafs.marlo.action.BaseAction;
import org.cgiar.ccafs.marlo.config.APConstants;
import org.cgiar.ccafs.marlo.data.manager.CgiarCrossCuttingMarkerManager;
import org.cgiar.ccafs.marlo.data.manager.CrpProgramOutcomeManager;
import org.cgiar.ccafs.marlo.data.manager.DeliverableUserManager;
import org.cgiar.ccafs.marlo.data.manager.GlobalUnitManager;
import org.cgiar.ccafs.marlo.data.manager.ProjectManager;
import org.cgiar.ccafs.marlo.data.manager.ProjectPartnerPersonManager;
import org.cgiar.ccafs.marlo.data.manager.RepIndTypeActivityManager;
import org.cgiar.ccafs.marlo.data.manager.SoilIndicatorManager;
import org.cgiar.ccafs.marlo.data.model.CgiarCrossCuttingMarker;
import org.cgiar.ccafs.marlo.data.model.CrpProgramOutcome;
import org.cgiar.ccafs.marlo.data.model.Deliverable;
import org.cgiar.ccafs.marlo.data.model.DeliverableCrossCuttingMarker;
import org.cgiar.ccafs.marlo.data.model.DeliverableCrpOutcome;
Expand Down Expand Up @@ -56,6 +58,7 @@
import javax.inject.Inject;
import javax.inject.Named;

import org.jfree.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -75,21 +78,24 @@ public class DeliverableValidator extends BaseValidator {
private CgiarCrossCuttingMarkerManager cgiarCrossCuttingMarkerManager;
private RepIndTypeActivityManager repIndTypeActivityManager;
private SoilIndicatorManager soilIndicatorManager;
private CrpProgramOutcomeManager crpProgramOutcomeManager;

Boolean doesNotHaveDOI;

@Inject
public DeliverableValidator(GlobalUnitManager crpManager, ProjectManager projectManager,
ProjectPartnerPersonManager projectPartnerPersonManager,
CgiarCrossCuttingMarkerManager cgiarCrossCuttingMarkerManager, RepIndTypeActivityManager repIndTypeActivityManager,
DeliverableUserManager deliverableUserManager, SoilIndicatorManager soilIndicatorManager) {
DeliverableUserManager deliverableUserManager, SoilIndicatorManager soilIndicatorManager,
CrpProgramOutcomeManager crpProgramOutcomeManager) {
this.crpManager = crpManager;
this.projectManager = projectManager;
this.projectPartnerPersonManager = projectPartnerPersonManager;
this.cgiarCrossCuttingMarkerManager = cgiarCrossCuttingMarkerManager;
this.deliverableUserManager = deliverableUserManager;
this.repIndTypeActivityManager = repIndTypeActivityManager;
this.soilIndicatorManager = soilIndicatorManager;
this.crpProgramOutcomeManager = crpProgramOutcomeManager;
}

private Path getAutoSaveFilePath(Deliverable deliverable, long crpID, BaseAction action) {
Expand Down Expand Up @@ -534,69 +540,99 @@ public void validate(BaseAction action, Deliverable deliverable, boolean saving)

// SHFRM contribution validations

if (action.hasSpecificities(APConstants.SHFRM_CONTRIBUTION_ACTIVE) && dInfo != null
&& dInfo.getContributingShfrm() != null && dInfo.getContributingShfrm() == true) {

// Validate Soil indicators
if (deliverable.getCrpOutcomes() == null || !deliverable.getCrpOutcomes().isEmpty()) {
List<SoilIndicator> soilIndicators = new ArrayList<>();
soilIndicators = soilIndicatorManager.findAll();

for (DeliverableCrpOutcome indicator : deliverable.getCrpOutcomes()) {
if (soilIndicators != null && !soilIndicators.isEmpty()) {
for (SoilIndicator soilIndicator : soilIndicators) {
if (soilIndicator != null && soilIndicator.getIndicatorName() != null && indicator != null
&& indicator.getCrpProgramOutcome() != null && indicator.getCrpProgramOutcome().getAcronym() != null
&& !indicator.getCrpProgramOutcome().getAcronym().contains(soilIndicator.getIndicatorName())) {
action.addMessage(action.getText("deliverable.crpOutcomes"));
action.addMissingField("deliverable.crpOutcomes");
action.getInvalidFields().put("list-deliverable.crpOutcomes", InvalidFieldsMessages.EMPTYFIELD);
if (action.hasSpecificities(APConstants.SHFRM_CONTRIBUTION_ACTIVE)) {

// Validate if is contributing
if (dInfo != null && dInfo.getContributingShfrm() != null && dInfo.getContributingShfrm() == true) {

// Validate Soil indicators
if (deliverable.getCrpOutcomes() != null || !deliverable.getCrpOutcomes().isEmpty()) {
List<SoilIndicator> soilIndicators = new ArrayList<>();
soilIndicators = soilIndicatorManager.findAll();
boolean containsIndicator = false;
for (DeliverableCrpOutcome indicator : deliverable.getCrpOutcomes()) {
if (soilIndicators != null && !soilIndicators.isEmpty()) {
for (SoilIndicator soilIndicator : soilIndicators) {
if (indicator != null && indicator.getCrpProgramOutcome() != null
&& indicator.getCrpProgramOutcome().getId() != null) {
try {
CrpProgramOutcome outcome =
crpProgramOutcomeManager.getCrpProgramOutcomeById(indicator.getCrpProgramOutcome().getId());
if (outcome != null && outcome.getAcronym() != null) {
indicator.getCrpProgramOutcome().setAcronym(outcome.getAcronym());
}
} catch (Exception e) {
Log.error("error getting crp program outcome " + e);
}
}
if (soilIndicator != null && soilIndicator.getIndicatorName() != null && indicator != null
&& indicator.getCrpProgramOutcome() != null && indicator.getCrpProgramOutcome().getAcronym() != null
&& indicator.getCrpProgramOutcome().getAcronym().contains(soilIndicator.getIndicatorName())) {
containsIndicator = true;
}
}
}
}

// not contains indicator
if (containsIndicator == false) {
action.addMessage(action.getText("deliverable.crpOutcomes"));
action.addMissingField("deliverable.crpOutcomes");
action.getInvalidFields().put("list-deliverable.crpOutcomes", InvalidFieldsMessages.EMPTYFIELD);
}
}
}

// Validate contribution narrative
if (!(this
.isValidString(deliverable.getDeliverableInfo(action.getActualPhase()).getShfrmContributionNarrative())
&& this.wordCount(
deliverable.getDeliverableInfo(action.getActualPhase()).getShfrmContributionNarrative()) <= 200)) {
action.addMessage(action.getText("deliverable.deliverableInfo.shfrmContributionNarrative"));
action.addMissingField("deliverable.deliverableInfo.shfrmContributionNarrative");
action.getInvalidFields().put("input-deliverable.deliverableInfo.shfrmContributionNarrative",
InvalidFieldsMessages.EMPTYFIELD);
}
// Validate contribution narrative
if (!(this
.isValidString(deliverable.getDeliverableInfo(action.getActualPhase()).getShfrmContributionNarrative())
&& this.wordCount(
deliverable.getDeliverableInfo(action.getActualPhase()).getShfrmContributionNarrative()) <= 200)) {
action.addMessage(action.getText("deliverable.deliverableInfo.shfrmContributionNarrative"));
action.addMissingField("deliverable.deliverableInfo.shfrmContributionNarrative");
action.getInvalidFields().put("input-deliverable.deliverableInfo.shfrmContributionNarrative",
InvalidFieldsMessages.EMPTYFIELD);
}

// Validate priority actions
if (deliverable.getShfrmPriorityActions() == null
|| (deliverable.getShfrmPriorityActions() != null && deliverable.getShfrmPriorityActions().isEmpty())) {
action.addMessage(action.getText("deliverable.shfrmPriorityActions"));
action.addMissingField("deliverable.shfrmPriorityActions");
action.getInvalidFields().put("list-deliverable.shfrmPriorityActions", InvalidFieldsMessages.EMPTYFIELD);
} else if (deliverable.getShfrmPriorityActions() != null && !deliverable.getShfrmPriorityActions().isEmpty()) {
int indexJ = 0;

for (DeliverableShfrmPriorityAction priorityAction : deliverable.getShfrmPriorityActions()) {
if (priorityAction != null && priorityAction.getShfrmSubActions() == null
|| (priorityAction.getShfrmSubActions() != null && priorityAction.getShfrmSubActions().isEmpty())) {
action.addMessage(action.getText("deliverable.shfrmSubActions"));
action.addMissingField("deliverable.shfrmPriorityActions");
action.getInvalidFields().put("list-deliverable.shfrmPriorityActions", InvalidFieldsMessages.EMPTYFIELD);
/*
* action.addMessage(action.getText("deliverable.shfrmSubActions[" + indexJ + "]"));
* action.addMissingField("deliverable.shfrmSubActions[" + indexJ + "]");
* action.getInvalidFields().put("list-deliverable.shfrmPriorityAction[" + indexJ + "].shfrmSubActions",
* InvalidFieldsMessages.EMPTYFIELD);
*/
indexJ++;
// Validate priority actions
if (deliverable.getShfrmPriorityActions() == null
|| (deliverable.getShfrmPriorityActions() != null && deliverable.getShfrmPriorityActions().isEmpty())) {
action.addMessage(action.getText("deliverable.shfrmPriorityActions"));
action.addMissingField("deliverable.shfrmPriorityActions");
action.getInvalidFields().put("list-deliverable.shfrmPriorityActions", InvalidFieldsMessages.EMPTYFIELD);
} else if (deliverable.getShfrmPriorityActions() != null
&& !deliverable.getShfrmPriorityActions().isEmpty()) {
int indexJ = 0;

for (DeliverableShfrmPriorityAction priorityAction : deliverable.getShfrmPriorityActions()) {
if (priorityAction != null && priorityAction.getShfrmSubActions() == null || (priorityAction != null
&& priorityAction.getShfrmSubActions() != null && priorityAction.getShfrmSubActions().isEmpty())) {
action.addMessage(action.getText("deliverable.shfrmSubActions"));
action.addMissingField("deliverable.shfrmPriorityActions");
action.getInvalidFields().put("list-deliverable.shfrmPriorityActions",
InvalidFieldsMessages.EMPTYFIELD);
/*
* action.addMessage(action.getText("deliverable.shfrmSubActions[" + indexJ + "]"));
* action.addMissingField("deliverable.shfrmSubActions[" + indexJ + "]");
* action.getInvalidFields().put("list-deliverable.shfrmPriorityAction[" + indexJ + "].shfrmSubActions",
* InvalidFieldsMessages.EMPTYFIELD);
*/
indexJ++;
}
}
}
}

} else {
// Validate empty contributing question
if (dInfo != null && (dInfo.getContributingShfrm() == null)) {
action.addMessage(action.getText("deliverable.deliverableInfo.contributingShfrm"));
action.getInvalidFields().put("input-deliverable.deliverableInfo.contributingShfrm",
InvalidFieldsMessages.EMPTYFIELD);
}
}
}
}


this.saveMissingFields(deliverable, action.getActualPhase().getDescription(), action.getActualPhase().getYear(),
action.getActualPhase().getUpkeep(), ProjectSectionStatusEnum.DELIVERABLES.getStatus(), action);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE shfrm_sub_actions MODIFY COLUMN description text CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE shfrm_priority_actions MODIFY COLUMN description text CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE soil_indicators MODIFY COLUMN id_phase bigint(20) NULL;
Original file line number Diff line number Diff line change
Expand Up @@ -1607,7 +1607,7 @@
<div class="blockTitle ${opened?string('opened', 'closed')}">
[#-- Title --]
<input class="actionidvalue" type="hidden" value="${(element.shfrmPriorityAction.id)!'none'}" />
<span class="${customForm.changedField('${name}.id')}"> <span class="index_number">${index+1}</span>. <span class="priorityActionTitle">${(element.shfrmPriorityAction.composedName)!'Priority Action'}</span> </span>
<span class="${customForm.changedField('${name}.id')}"> [#-- <span class="index_number">${index+1}</span>. --]<span class="priorityActionTitle">${(element.shfrmPriorityAction.composedName)!'Priority Action'}</span> </span>
</div>

<div class="blockContent" style="display:${opened?string('block','none')}">
Expand Down

0 comments on commit e782c63

Please sign in to comment.