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.Iterator;
import java.util.List;
import org.sigmah.shared.dto.element.BudgetElementDTO;
import org.sigmah.shared.dto.element.BudgetSubFieldDTO;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
/**
* JavaScript version of {@link BudgetElementDTO}.
*
* @author Raphaƫl Calabro (rcalabro@ideia.fr)
*/
@Deprecated
public final class BudgetElementJS extends DefaultFlexibleElementJS {
/**
* Protected constructor, required for JavaScript objects.
*/
protected BudgetElementJS() {
// Empty.
}
public static BudgetElementJS toJavaScript(BudgetElementDTO budgetElementDTO) {
final BudgetElementJS budgetElementJS = Values.createJavaScriptObject(BudgetElementJS.class);
budgetElementJS.setBudgetSubFields(budgetElementDTO.getBudgetSubFields());
budgetElementJS.setRatioDividend(budgetElementDTO.getRatioDividend());
budgetElementJS.setRatioDivisor(budgetElementDTO.getRatioDivisor());
return budgetElementJS;
}
public BudgetElementDTO toBudgetElementDTO() {
final BudgetElementDTO budgetElementDTO = new BudgetElementDTO();
budgetElementDTO.setBudgetSubFields(getBudgetSubFieldsDTO());
if(getRatioDividend() != null) {
boolean found = false;
if(budgetElementDTO.getBudgetSubFields() != null) {
final int id = getRatioDividend().getId();
final Iterator<BudgetSubFieldDTO> iterator = budgetElementDTO.getBudgetSubFields().iterator();
while(!found && iterator.hasNext()) {
final BudgetSubFieldDTO entry = iterator.next();
if(entry.getId().equals(id)) {
budgetElementDTO.setRatioDividend(entry);
found = true;
}
}
}
if(!found) {
budgetElementDTO.setRatioDividend(getRatioDividend().toDTO());
}
}
if(getRatioDivisor() != null) {
boolean found = false;
if(budgetElementDTO.getBudgetSubFields() != null) {
final int id = getRatioDivisor().getId();
final Iterator<BudgetSubFieldDTO> iterator = budgetElementDTO.getBudgetSubFields().iterator();
while(!found && iterator.hasNext()) {
final BudgetSubFieldDTO entry = iterator.next();
if(entry.getId().equals(id)) {
budgetElementDTO.setRatioDivisor(entry);
found = true;
}
}
}
if(!found) {
budgetElementDTO.setRatioDivisor(getRatioDivisor().toDTO());
}
}
return budgetElementDTO;
}
public List<BudgetSubFieldDTO> getBudgetSubFieldsDTO() {
final ArrayList<BudgetSubFieldDTO> list = new ArrayList<BudgetSubFieldDTO>();
if(getBudgetSubFields() != null) {
final JsArray<BudgetSubFieldJS> budgetSubFields = getBudgetSubFields();
for(int index = 0; index < budgetSubFields.length(); index++) {
list.add(budgetSubFields.get(index).toDTO());
}
}
return list;
}
public native JsArray<BudgetSubFieldJS> getBudgetSubFields() /*-{
return this.budgetSubFields;
}-*/;
public void setBudgetSubFields(List<BudgetSubFieldDTO> budgetSubFields) {
if(budgetSubFields != null) {
final JsArray<BudgetSubFieldJS> array = (JsArray<BudgetSubFieldJS>) JavaScriptObject.createArray();
for(final BudgetSubFieldDTO budgetSubFieldDTO : budgetSubFields) {
array.push(BudgetSubFieldJS.toJavaScript(budgetSubFieldDTO));
}
setBudgetSubFields(array);
}
}
public native void setBudgetSubFields(JsArray<BudgetSubFieldJS> budgetSubFields) /*-{
this.budgetSubFields = budgetSubFields;
}-*/;
public native BudgetSubFieldJS getRatioDividend() /*-{
return this.ratioDividend;
}-*/;
public void setRatioDividend(BudgetSubFieldDTO ratioDividend) {
if(ratioDividend != null) {
setRatioDividend(BudgetSubFieldJS.toJavaScript(ratioDividend));
}
}
public native void setRatioDividend(BudgetSubFieldJS ratioDividend) /*-{
this.ratioDividend = ratioDividend;
}-*/;
public native BudgetSubFieldJS getRatioDivisor() /*-{
return this.ratioDivisor;
}-*/;
public void setRatioDivisor(BudgetSubFieldDTO ratioDivisor) {
if(ratioDivisor != null) {
setRatioDivisor(BudgetSubFieldJS.toJavaScript(ratioDivisor));
}
}
public native void setRatioDivisor(BudgetSubFieldJS ratioDivisor) /*-{
this.ratioDivisor = ratioDivisor;
}-*/;
}