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 com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.sigmah.shared.dto.ContactDTO;
import org.sigmah.shared.dto.ContactModelDTO;
import org.sigmah.shared.dto.country.CountryDTO;
import org.sigmah.shared.dto.orgunit.OrgUnitDTO;
public class ContactJS extends JavaScriptObject {
protected ContactJS() {
}
public static ContactJS toJavaScript(ContactDTO contactDTO) {
ContactJS contactJS = Values.createJavaScriptObject(ContactJS.class);
contactJS.setId(contactDTO.getId());
contactJS.setContactModel(contactDTO.getContactModel());
if (contactDTO.getUserId() != null) {
contactJS.setUserId(contactDTO.getUserId());
}
if (contactDTO.getOrganizationId() != null) {
contactJS.setOrganizationId(contactDTO.getOrganizationId());
}
contactJS.setName(contactDTO.getName());
contactJS.setFirstName(contactDTO.getFirstname());
contactJS.setMainOrgUnit(contactDTO.getMainOrgUnit());
contactJS.setSecondaryOrgUnits(contactDTO.getSecondaryOrgUnits());
contactJS.setLogin(contactDTO.getLogin());
contactJS.setEmail(contactDTO.getEmail());
contactJS.setPhoneNumber(contactDTO.getPhoneNumber());
contactJS.setPostalAddress(contactDTO.getPostalAddress());
contactJS.setPhoto(contactDTO.getPhoto());
contactJS.setCountry(contactDTO.getCountry());
contactJS.setParent(contactDTO.getParent());
contactJS.setDateCreated(contactDTO.getDateCreated());
return contactJS;
}
public ContactDTO toDTO() {
ContactDTO contactDTO = new ContactDTO();
contactDTO.setId(getId());
contactDTO.setContactModel(getContactModelDTO());
if (hasUserId()) {
contactDTO.setUserId(getUserId());
}
if (hasOrganizationId()) {
contactDTO.setOrganizationId(getOrganizationId());
}
contactDTO.setName(getName());
contactDTO.setFirstname(getFirstName());
contactDTO.setMainOrgUnit(getMainOrgUnitDTO());
contactDTO.setSecondaryOrgUnits(getSecondaryOrgUnitDTOs());
contactDTO.setLogin(getLogin());
contactDTO.setEmail(getEmail());
contactDTO.setPhoneNumber(getPhoneNumber());
contactDTO.setPostalAddress(getPostalAddress());
contactDTO.setPhoto(getPhoto());
contactDTO.setCountry(getCountryDTO());
contactDTO.setParent(getParentDTO());
contactDTO.setDateCreated(getDateCreatedDTO());
return contactDTO;
}
public native int getId() /*-{
return this.id;
}-*/;
public native void setId(int id) /*-{
this.id = id;
}-*/;
public ContactModelDTO getContactModelDTO() {
return getContactModel().toDTO();
}
public native ContactModelJS getContactModel() /*-{
return this.contactModel;
}-*/;
public void setContactModel(ContactModelDTO contactModel) {
setContactModel(ContactModelJS.toJavaScript(contactModel));
}
public native void setContactModel(ContactModelJS contactModel) /*-{
this.contactModel = contactModel;
}-*/;
public native boolean hasUserId() /*-{
return !!this.userId;
}-*/;
public native int getUserId() /*-{
return this.userId;
}-*/;
public native void setUserId(int userId) /*-{
this.userId = userId;
}-*/;
public native boolean hasOrganizationId() /*-{
return !!this.userId;
}-*/;
public native int getOrganizationId() /*-{
return this.organizationId;
}-*/;
public native void setOrganizationId(int organizationId) /*-{
this.organizationId = organizationId;
}-*/;
public native String getName() /*-{
return this.name;
}-*/;
public native void setName(String name) /*-{
this.name = name;
}-*/;
public native String getFirstName() /*-{
return this.firstName;
}-*/;
public native void setFirstName(String firstName) /*-{
this.firstName = firstName;
}-*/;
public OrgUnitDTO getMainOrgUnitDTO() {
return getMainOrgUnit().toDTO();
}
public native OrgUnitJS getMainOrgUnit() /*-{
return this.mainOrgUnit;
}-*/;
public void setMainOrgUnit(OrgUnitDTO mainOrgUnit) {
setMainOrgUnit(OrgUnitJS.toJavaScript(mainOrgUnit));
}
public native void setMainOrgUnit(OrgUnitJS mainOrgUnit) /*-{
this.mainOrgUnit = mainOrgUnit;
}-*/;
public List<OrgUnitDTO> getSecondaryOrgUnitDTOs() {
JsArray<OrgUnitJS> secondaryOrgUnits = getSecondaryOrgUnits();
List<OrgUnitDTO> secondaryOrgUnitDTOs = new ArrayList<OrgUnitDTO>(secondaryOrgUnits.length());
for (int i = 0; i < secondaryOrgUnits.length(); i++) {
secondaryOrgUnitDTOs.add(secondaryOrgUnits.get(i).toDTO());
}
return secondaryOrgUnitDTOs;
}
public native JsArray<OrgUnitJS> getSecondaryOrgUnits() /*-{
return this.secondaryOrgUnits;
}-*/;
@SuppressWarnings("unchecked")
public void setSecondaryOrgUnits(List<OrgUnitDTO> secondaryOrgUnitDTOs) {
JsArray<OrgUnitJS> secondaryOrgUnits = (JsArray<OrgUnitJS>) JavaScriptObject.createArray();
for (OrgUnitDTO orgUnitDTO : secondaryOrgUnitDTOs) {
secondaryOrgUnits.push(OrgUnitJS.toJavaScript(orgUnitDTO));
}
setSecondaryOrgUnits(secondaryOrgUnits);
}
public native void setSecondaryOrgUnits(JsArray<OrgUnitJS> secondaryOrgUnits) /*-{
this.secondaryOrgUnits = secondaryOrgUnits;
}-*/;
public native String getLogin() /*-{
return this.login;
}-*/;
public native void setLogin(String login) /*-{
this.login = login;
}-*/;
public native String getEmail() /*-{
return this.email;
}-*/;
public native void setEmail(String email) /*-{
this.email = email;
}-*/;
public native String getPhoneNumber() /*-{
return this.phoneNumber;
}-*/;
public native void setPhoneNumber(String phoneNumber) /*-{
this.phoneNumber = phoneNumber;
}-*/;
public native String getPostalAddress() /*-{
return this.postalAddress;
}-*/;
public native void setPostalAddress(String postalAddress) /*-{
this.postalAddress = postalAddress;
}-*/;
public native String getPhoto() /*-{
return this.photo;
}-*/;
public native void setPhoto(String photo) /*-{
this.photo = photo;
}-*/;
public CountryDTO getCountryDTO() {
if (getCountry() == null) {
return null;
}
return getCountry().toDTO();
}
public native CountryJS getCountry() /*-{
return this.country;
}-*/;
public void setCountry(CountryDTO country) {
if (country == null) {
return;
}
setCountry(CountryJS.toJavaScript(country));
}
public native void setCountry(CountryJS country) /*-{
this.country = country;
}-*/;
public ContactDTO getParentDTO() {
if (getParent() == null) {
return null;
}
return getParent().toDTO();
}
public native ContactJS getParent() /*-{
return this.parent;
}-*/;
public void setParent(ContactDTO parent) {
if (parent == null) {
return;
}
setParent(ContactJS.toJavaScript(parent));
}
public native void setParent(ContactJS parent) /*-{
this.parent = parent;
}-*/;
public Date getDateCreatedDTO() {
JsDate dateCreated = getDateCreated();
return new Date((long) dateCreated.getTime());
}
public native JsDate getDateCreated() /*-{
return this.dateCreated;
}-*/;
public void setDateCreated(Date dateCreated) {
setDateCreated(JsDate.create(dateCreated.getTime()));
}
public native void setDateCreated(JsDate dateCreated) /*-{
this.dateCreated = dateCreated;
}-*/;
}