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 java.util.ArrayList; import java.util.Collections; import java.util.List; import org.sigmah.shared.command.result.TeamMembersResult; import org.sigmah.shared.dto.UserDTO; import org.sigmah.shared.dto.profile.ProfileDTO; public final class TeamMembersResultJs extends JavaScriptObject { protected TeamMembersResultJs() { } public static TeamMembersResultJs toJavascript(TeamMembersResult teamMembersResult) { TeamMembersResultJs teamMembersResultJs = Values.createJavaScriptObject(TeamMembersResultJs.class); teamMembersResultJs.setProjectId(teamMembersResult.getProjectId()); teamMembersResultJs.setProjectManager(teamMembersResult.getProjectManager()); teamMembersResultJs.setTeamMembers(teamMembersResult.getTeamMembers()); teamMembersResultJs.setTeamMemberProfiles(teamMembersResult.getTeamMemberProfiles()); return teamMembersResultJs; } public native int getProjectId() /*-{ return this.id; }-*/; public native UserJS getProjectManager() /*-{ return this.projectManager; }-*/; public native void setProjectId(int projectId) /*-{ this.id = projectId; }-*/; public UserDTO getProjectManagerDTO() { return getProjectManager().toDTO(); } public void setProjectManager(UserDTO projectManager) { if (projectManager == null) { return; } setProjectManager(UserJS.toJavaScript(projectManager)); } public native void setProjectManager(UserJS projectManager) /*-{ this.projectManager = projectManager; }-*/; public native JsArray<UserJS> getTeamMembers() /*-{ return this.teamMembers; }-*/; public List<UserDTO> getTeamMembersDTO() { JsArray<UserJS> teamMembers = getTeamMembers(); if (teamMembers == null) { return Collections.emptyList(); } List<UserDTO> userDTOs = new ArrayList<UserDTO>(teamMembers.length()); for (int i = 0; i < teamMembers.length(); i++) { userDTOs.add(teamMembers.get(i).toDTO()); } return userDTOs; } public void setTeamMembers(List<UserDTO> teamMembers) { if (teamMembers == null) { return; } JsArray<UserJS> userJs = Values.createTypedJavaScriptArray(UserJS.class); for (final UserDTO userDTO : teamMembers) { userJs.push(UserJS.toJavaScript(userDTO)); } setTeamMembers(userJs); } public native void setTeamMembers(JsArray<UserJS> teamMembers) /*-{ this.teamMembers = teamMembers; }-*/; public native JsArray<ProfileJS> getTeamMemberProfiles() /*-{ return this.teamMemberProfiles; }-*/; public List<ProfileDTO> getTeamMemberProfilesDTO() { JsArray<ProfileJS> teamMemberProfiles = getTeamMemberProfiles(); if (teamMemberProfiles == null) { return Collections.emptyList(); } List<ProfileDTO> userDTOs = new ArrayList<ProfileDTO>(teamMemberProfiles.length()); for (int i = 0; i < teamMemberProfiles.length(); i++) { userDTOs.add(teamMemberProfiles.get(i).toDTO()); } return userDTOs; } public void setTeamMemberProfiles(List<ProfileDTO> teamMemberProfiles) { if (teamMemberProfiles == null) { return; } JsArray<ProfileJS> profilesJS = Values.createTypedJavaScriptArray(ProfileJS.class); for (final ProfileDTO profileDTO : teamMemberProfiles) { profilesJS.push(ProfileJS.toJavaScript(profileDTO)); } setTeamMemberProfiles(profilesJS); } public native void setTeamMemberProfiles(JsArray<ProfileJS> teamMemberProfiles) /*-{ this.teamMemberProfiles = teamMemberProfiles; }-*/; public TeamMembersResult toDTO() { TeamMembersResult teamMembersResult = new TeamMembersResult(); teamMembersResult.setProjectId(getProjectId()); teamMembersResult.setProjectManager(getProjectManagerDTO()); teamMembersResult.setTeamMembers(getTeamMembersDTO()); teamMembersResult.setTeamMemberProfiles(getTeamMemberProfilesDTO()); return teamMembersResult; } }