package org.sigmah.offline.js;
/*
* #%L
* Sigmah
* %%
* Copyright (C) 2010 - 2016 URD
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sigmah.shared.dto.IndicatorDTO;
import org.sigmah.shared.dto.logframe.ExpectedResultDTO;
import org.sigmah.shared.dto.logframe.LogFrameActivityDTO;
import org.sigmah.shared.dto.logframe.LogFrameGroupDTO;
import org.sigmah.shared.dto.logframe.SpecificObjectiveDTO;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayInteger;
/**
*
* @author Raphaƫl Calabro (rcalabro@ideia.fr)
*/
public final class ExpectedResultJS extends JavaScriptObject {// LogFrameElementJS {
protected ExpectedResultJS() {
}
public static ExpectedResultJS toJavaScript(ExpectedResultDTO expectedResultDTO) {
final ExpectedResultJS expectedResultJS = Values.createJavaScriptObject(ExpectedResultJS.class);
expectedResultJS.setId(expectedResultDTO.getId());
expectedResultJS.setCode(expectedResultDTO.getCode());
expectedResultJS.setPosition(expectedResultDTO.getPosition());
expectedResultJS.setRisksAndAssumptions(expectedResultDTO.getRisksAndAssumptions());
expectedResultJS.setGroup(expectedResultDTO.getGroup());
expectedResultJS.setIndicators(expectedResultDTO.getIndicators());
expectedResultJS.setInterventionLogic(expectedResultDTO.getInterventionLogic());
expectedResultJS.setActivities(expectedResultDTO.getActivities());
expectedResultJS.setParentSpecificObjective(expectedResultDTO.getParentSpecificObjective());
expectedResultJS.setLabel(expectedResultDTO.getLabel());
return expectedResultJS;
}
public ExpectedResultDTO toDTO(Map<Integer, LogFrameGroupDTO> groupMap) {
final ExpectedResultDTO expectedResultDTO = new ExpectedResultDTO();
expectedResultDTO.setId(getId());
expectedResultDTO.setCode(getCode());
expectedResultDTO.setPosition(getPosition());
expectedResultDTO.setRisksAndAssumptions(getRisksAndAssumptions());
expectedResultDTO.setInterventionLogic(getInterventionLogic());
expectedResultDTO.setActivities(getActivities(expectedResultDTO, groupMap));
expectedResultDTO.setLabel(getLabel());
return expectedResultDTO;
}
public native int getId() /*-{
return this.id;
}-*/;
public native void setId(int id) /*-{
this.id = id;
}-*/;
public Integer getCode() {
return Values.getInteger(this, "code");
}
public void setCode(Integer code) {
Values.setInteger(this, "code", code);
}
public Integer getPosition() {
return Values.getInteger(this, "position");
}
public void setPosition(Integer position) {
Values.setInteger(this, "position", position);
}
public native String getRisksAndAssumptions() /*-{
return this.risksAndAssumptions;
}-*/;
public native void setRisksAndAssumptions(String risksAndAssumptions) /*-{
this.risksAndAssumptions = risksAndAssumptions;
}-*/;
public boolean hasGroup() {
return Values.isDefined(this, "group");
}
public native int getGroup() /*-{
return this.group;
}-*/;
public native void setGroup(int group) /*-{
this.group = group;
}-*/;
public void setGroup(LogFrameGroupDTO logFrameGroupDTO) {
if(logFrameGroupDTO != null) {
setGroup(logFrameGroupDTO.getId());
}
}
public native JsArrayInteger getIndicators() /*-{
return this.indicators;
}-*/;
public native void setIndicators(JsArrayInteger indicators) /*-{
this.indicators = indicators;
}-*/;
public void setIndicators(List<IndicatorDTO> indicators) {
if(indicators != null) {
final JsArrayInteger array = (JsArrayInteger) JavaScriptObject.createArray();
for(final IndicatorDTO indicator : indicators) {
array.push(indicator.getId());
}
setIndicators(array);
}
}
public native String getInterventionLogic() /*-{
return this.interventionLogic;
}-*/;
public native void setInterventionLogic(String interventionLogic) /*-{
this.interventionLogic = interventionLogic;
}-*/;
public native JsArray<LogFrameActivityJS> getActivities() /*-{
return this.activities;
}-*/;
public native void setActivities(JsArray<LogFrameActivityJS> activities) /*-{
this.activities = activities;
}-*/;
public void setActivities(List<LogFrameActivityDTO> activities) {
if(activities != null) {
final JsArray<LogFrameActivityJS> array = (JsArray<LogFrameActivityJS>) JavaScriptObject.createArray();
for(final LogFrameActivityDTO activity : activities) {
array.push(LogFrameActivityJS.toJavaScript(activity));
}
setActivities(array);
}
}
public List<LogFrameActivityDTO> getActivities(ExpectedResultDTO parentExpectedResult, Map<Integer, LogFrameGroupDTO> groupMap) {
final JsArray<LogFrameActivityJS> activities = ExpectedResultJS.this.getActivities();
if(activities != null) {
final ArrayList<LogFrameActivityDTO> list = new ArrayList<LogFrameActivityDTO>();
for(int index = 0; index < activities.length(); index++) {
final LogFrameActivityJS logFrameActivityJS = activities.get(index);
final LogFrameActivityDTO logFrameActivityDTO = logFrameActivityJS.toDTO();
logFrameActivityDTO.setParentExpectedResult(parentExpectedResult);
if(logFrameActivityJS.hasGroup()) {
logFrameActivityDTO.setGroup(groupMap.get(logFrameActivityJS.getGroup()));
}
list.add(logFrameActivityDTO);
}
return list;
}
return null;
}
public native int getParentSpecificObjective() /*-{
return this.parentSpecificObjective;
}-*/;
public native void setParentSpecificObjective(int parentSpecificObjective) /*-{
this.parentSpecificObjective = parentSpecificObjective;
}-*/;
public void setParentSpecificObjective(SpecificObjectiveDTO parentSpecificObjective) {
if(parentSpecificObjective != null) {
setParentSpecificObjective(parentSpecificObjective.getId());
}
}
public native String getLabel() /*-{
return this.label;
}-*/;
public native void setLabel(String label) /*-{
this.label = label;
}-*/;
}