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.HashMap; import java.util.List; import java.util.Map; import org.sigmah.shared.dto.logframe.LogFrameDTO; import org.sigmah.shared.dto.logframe.LogFrameGroupDTO; import org.sigmah.shared.dto.logframe.LogFrameModelDTO; import org.sigmah.shared.dto.logframe.PrerequisiteDTO; import org.sigmah.shared.dto.logframe.SpecificObjectiveDTO; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; /** * * @author Raphaƫl Calabro (rcalabro@ideia.fr) */ public final class LogFrameJS extends JavaScriptObject { protected LogFrameJS() { } public static LogFrameJS toJavaScript(LogFrameDTO logFrameDTO) { final LogFrameJS logFrameJS = Values.createJavaScriptObject(LogFrameJS.class); logFrameJS.setId(logFrameDTO.getId()); logFrameJS.setLogFrameModel(logFrameDTO.getLogFrameModel()); logFrameJS.setMainObjective(logFrameDTO.getMainObjective()); logFrameJS.setSpecificObjectives(logFrameDTO.getSpecificObjectives()); logFrameJS.setPrerequisites(logFrameDTO.getPrerequisites()); logFrameJS.setGroups(logFrameDTO.getGroups()); return logFrameJS; } public LogFrameDTO toDTO() { final LogFrameDTO logFrameDTO = new LogFrameDTO(); logFrameDTO.setId(getId()); logFrameDTO.setLogFrameModel(getLogFrameModelDTO()); logFrameDTO.setMainObjective(getMainObjective()); logFrameDTO.setGroups(getGroups(logFrameDTO)); final HashMap<Integer, LogFrameGroupDTO> groupMap = new HashMap<Integer, LogFrameGroupDTO>(); if(logFrameDTO.getGroups() != null) { for(final LogFrameGroupDTO group : logFrameDTO.getGroups()) { groupMap.put(group.getId(), group); } } logFrameDTO.setSpecificObjectives(getSpecificObjectives(logFrameDTO, groupMap)); logFrameDTO.setPrerequisites(getPrerequisites(logFrameDTO, groupMap)); return logFrameDTO; } public native int getId() /*-{ return this.id; }-*/; public native void setId(int id) /*-{ this.id = id; }-*/; public native LogFrameModelJS getLogFrameModel() /*-{ return this.logFrameModel; }-*/; public native void setLogFrameModel(LogFrameModelJS logFrameModel) /*-{ this.logFrameModel = logFrameModel; }-*/; public LogFrameModelDTO getLogFrameModelDTO() { if(getLogFrameModel() != null) { return getLogFrameModel().toDTO(); } return null; } public void setLogFrameModel(LogFrameModelDTO logFrameModel) { if(logFrameModel != null) { setLogFrameModel(LogFrameModelJS.toJavaScript(logFrameModel)); } } public native String getMainObjective() /*-{ return this.mainObjective; }-*/; public native void setMainObjective(String mainObjective) /*-{ this.mainObjective = mainObjective; }-*/; public native JsArray<SpecificObjectiveJS> getSpecificObjectives() /*-{ return this.specificObjectives; }-*/; public native void setSpecificObjectives(JsArray<SpecificObjectiveJS> specificObjectives) /*-{ this.specificObjectives = specificObjectives; }-*/; public List<SpecificObjectiveDTO> getSpecificObjectives(LogFrameDTO logFrameDTO, Map<Integer, LogFrameGroupDTO> groupMap) { final JsArray<SpecificObjectiveJS> specificObjectives = getSpecificObjectives(); if(specificObjectives != null) { final ArrayList<SpecificObjectiveDTO> list = new ArrayList<SpecificObjectiveDTO>(); for(int index = 0; index < specificObjectives.length(); index++) { final SpecificObjectiveJS specificObjectiveJS = specificObjectives.get(index); final SpecificObjectiveDTO specificObjectiveDTO = specificObjectiveJS.toDTO(groupMap); specificObjectiveDTO.setParentLogFrame(logFrameDTO); if(specificObjectiveJS.hasGroup()) { specificObjectiveDTO.setGroup(groupMap.get(specificObjectiveJS.getGroup())); } list.add(specificObjectiveDTO); } return list; } return null; } public void setSpecificObjectives(List<SpecificObjectiveDTO> specificObjectives) { if(specificObjectives != null) { final JsArray<SpecificObjectiveJS> array = (JsArray<SpecificObjectiveJS>) JavaScriptObject.createArray(); for(final SpecificObjectiveDTO specificObjective : specificObjectives) { array.push(SpecificObjectiveJS.toJavaScript(specificObjective)); } setSpecificObjectives(array); } } public native JsArray<PrerequisiteJS> getPrerequisites() /*-{ return this.prerequisites; }-*/; public native void setPrerequisites(JsArray<PrerequisiteJS> prerequisites) /*-{ this.prerequisites = prerequisites; }-*/; public List<PrerequisiteDTO> getPrerequisites(LogFrameDTO logFrameDTO, Map<Integer, LogFrameGroupDTO> groupMap) { final JsArray<PrerequisiteJS> prerequisites = getPrerequisites(); if(prerequisites != null) { final ArrayList<PrerequisiteDTO> list = new ArrayList<PrerequisiteDTO>(); for(int index = 0; index < prerequisites.length(); index++) { final PrerequisiteJS prerequisiteJS = prerequisites.get(index); final PrerequisiteDTO prerequisiteDTO = prerequisiteJS.toDTO(); prerequisiteDTO.setParentLogFrame(logFrameDTO); if(prerequisiteJS.hasGroup()) { prerequisiteDTO.setGroup(groupMap.get(prerequisiteJS.getGroup())); } list.add(prerequisiteDTO); } return list; } return null; } public void setPrerequisites(List<PrerequisiteDTO> prerequisites) { if(prerequisites != null) { final JsArray<PrerequisiteJS> array = (JsArray<PrerequisiteJS>) JavaScriptObject.createArray(); for(final PrerequisiteDTO prerequisite : prerequisites) { array.push(PrerequisiteJS.toJavaScript(prerequisite)); } setPrerequisites(array); } } public native JsArray<LogFrameGroupJS> getGroups() /*-{ return this.groups; }-*/; public native void setGroups(JsArray<LogFrameGroupJS> groups) /*-{ this.groups = groups; }-*/; public List<LogFrameGroupDTO> getGroups(LogFrameDTO logFrameDTO) { final JsArray<LogFrameGroupJS> groups = getGroups(); if(groups != null) { final ArrayList<LogFrameGroupDTO> list = new ArrayList<LogFrameGroupDTO>(); for(int index = 0; index < groups.length(); index++) { final LogFrameGroupDTO group = groups.get(index).toDTO(); group.setParentLogFrame(logFrameDTO); list.add(group); } return list; } return null; } public void setGroups(List<LogFrameGroupDTO> groups) { if(groups != null) { final JsArray<LogFrameGroupJS> array = (JsArray<LogFrameGroupJS>) JavaScriptObject.createArray(); for(final LogFrameGroupDTO group : groups) { array.push(LogFrameGroupJS.toJavaScript(group)); } setGroups(array); } } }