/*
 *  Copyright (C) 2010-2014 Stichting Akvo (Akvo Foundation)
 *
 *  This file is part of Akvo FLOW.
 *
 *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
 *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
 *  either version 3 of the License or any later version.
 *
 *  Akvo FLOW 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 Affero General Public License included below for more details.
 *
 *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
 */

package org.waterforpeople.mapping.app.web.rest.dto;

import java.io.Serializable;
import java.util.Set;

import org.codehaus.jackson.annotate.JsonIgnore;

import com.gallatinsystems.user.domain.Permission;
import com.gallatinsystems.user.domain.UserRole;

/**
 * Payload class to wrap the UserRole object. Enables hiding of the internal structure of the
 * UserRole object as well as aggregating data from multiple sources.
 *
 * @author emmanuel
 */
public class UserRolePayload implements Serializable {

    private static final long serialVersionUID = 2069008497215961962L;

    private UserRole userRole;

    public UserRolePayload() {
        userRole = new UserRole();
    }

    public UserRolePayload(UserRole role) {
        userRole = role;
    }

    public String getName() {
        return userRole.getName();
    }

    public void setName(String name) {
        userRole.setName(name);
    }

    public Set<Permission> getPermissions() {
        return userRole.getPermissions();
    }

    public void setPermissions(Set<Permission> permissions) {
        if (permissions != null) {
            userRole.setPermissions(permissions);
        }
    }

    public Long getKeyId() {
        return userRole.getKey().getId();
    }

    @JsonIgnore
    public UserRole getUserRole() {
        return userRole;
    }
}

/*
 *  Copyright (C) 2010-2014 Stichting Akvo (Akvo Foundation)
 *
 *  This file is part of Akvo FLOW.
 *
 *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
 *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
 *  either version 3 of the License or any later version.
 *
 *  Akvo FLOW 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 Affero General Public License included below for more details.
 *
 *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
 */

package org.waterforpeople.mapping.app.web.rest.dto;

import java.util.Set;

import org.codehaus.jackson.annotate.JsonIgnore;

import com.gallatinsystems.framework.gwt.dto.client.BaseDto;
import com.gallatinsystems.user.domain.Permission;
import com.gallatinsystems.user.domain.UserRole;

/**
 * Payload class to wrap the UserRole object. Enables hiding of the internal structure of the
 * UserRole object as well as aggregating data from multiple sources.
 *
 * @author emmanuel
 */
public class UserRolePayload extends BaseDto {

    private static final long serialVersionUID = 2069008497215961962L;

    private UserRole userRole;

    public UserRolePayload() {
        userRole = new UserRole();
    }

    public UserRolePayload(UserRole role) {
        userRole = role;
    }

    public String getName() {
        return userRole.getName();
    }

    public void setName(String name) {
        userRole.setName(name);
    }

    public Set<Permission> getPermissions() {
        return userRole.getPermissions();
    }

    public void setPermissions(Set<Permission> permissions) {
        if (permissions != null) {
            userRole.setPermissions(permissions);
        }
    }

    @Override
    public void setKeyId(Long keyId) {
        // do nothing. keyId already picked from the URL
    }

    @Override
    public Long getKeyId() {
        return userRole.getKey().getId();
    }

    @JsonIgnore
    public UserRole getUserRole() {
        return userRole;
    }
}

Include `keyId` parameter in UserRolePayload