001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kim.impl.role;
017
018import javax.persistence.CascadeType;
019import javax.persistence.Column;
020import javax.persistence.Convert;
021import javax.persistence.Entity;
022import javax.persistence.GeneratedValue;
023import javax.persistence.Id;
024import javax.persistence.JoinColumn;
025import javax.persistence.ManyToOne;
026import javax.persistence.Table;
027
028import org.apache.commons.lang.ObjectUtils;
029import org.apache.commons.lang.StringUtils;
030import org.eclipse.persistence.annotations.JoinFetch;
031import org.eclipse.persistence.annotations.JoinFetchType;
032import org.kuali.rice.kim.api.role.RoleResponsibilityAction;
033import org.kuali.rice.kim.api.role.RoleResponsibilityActionContract;
034import org.kuali.rice.krad.bo.DataObjectBase;
035import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
036import org.kuali.rice.krad.data.jpa.converters.BooleanYNConverter;
037
038/**
039 * This is a description of what this class does - kellerj don't forget to fill this in.
040 *
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 */
043@Entity
044@Table(name = "KRIM_ROLE_RSP_ACTN_T")
045public class RoleResponsibilityActionBo extends DataObjectBase implements RoleResponsibilityActionContract {
046
047    private static final long serialVersionUID = 1L;
048
049    @PortableSequenceGenerator(name = "KRIM_ROLE_RSP_ACTN_ID_S")
050    @GeneratedValue(generator = "KRIM_ROLE_RSP_ACTN_ID_S")
051    @Id
052    @Column(name = "ROLE_RSP_ACTN_ID")
053    private String id;
054
055    @Column(name = "ROLE_RSP_ID")
056    private String roleResponsibilityId;
057
058    @Column(name = "ROLE_MBR_ID")
059    private String roleMemberId;
060
061    @Column(name = "ACTN_TYP_CD")
062    private String actionTypeCode;
063
064    @Column(name = "ACTN_PLCY_CD")
065    private String actionPolicyCode;
066
067    @Column(name = "FRC_ACTN")
068    @Convert(converter = BooleanYNConverter.class)
069    private boolean forceAction;
070
071    @Column(name = "PRIORITY_NBR")
072    private Integer priorityNumber;
073
074    @JoinFetch(value= JoinFetchType.OUTER)
075    @ManyToOne(targetEntity = RoleResponsibilityBo.class, cascade = { CascadeType.REFRESH })
076    @JoinColumn(name = "ROLE_RSP_ID", referencedColumnName = "ROLE_RSP_ID", insertable = false, updatable = false)
077    private RoleResponsibilityBo roleResponsibility;
078
079    @Override
080    public RoleResponsibilityBo getRoleResponsibility() {
081        return roleResponsibility;
082    }
083
084    public static RoleResponsibilityAction to(RoleResponsibilityActionBo bo) {
085        if (bo == null) {
086            return null;
087        }
088        return RoleResponsibilityAction.Builder.create(bo).build();
089    }
090
091    public static RoleResponsibilityActionBo from(RoleResponsibilityAction immutable) {
092        if (immutable == null) {
093            return null;
094        }
095        RoleResponsibilityActionBo bo = new RoleResponsibilityActionBo();
096        bo.id = immutable.getId();
097        bo.roleResponsibilityId = immutable.getRoleResponsibilityId();
098        bo.roleMemberId = immutable.getRoleMemberId();
099        bo.actionTypeCode = immutable.getActionTypeCode();
100        bo.actionPolicyCode = immutable.getActionPolicyCode();
101        bo.forceAction = immutable.isForceAction();
102        bo.priorityNumber = immutable.getPriorityNumber();
103        bo.roleResponsibility = RoleResponsibilityBo.from(immutable.getRoleResponsibility());
104        bo.setVersionNumber(immutable.getVersionNumber());
105        return bo;
106    }
107
108    public boolean equals(RoleResponsibilityActionBo roleRspActn) {
109        if (!StringUtils.equals(roleRspActn.getRoleMemberId(), getRoleMemberId())) {
110            return false;
111        }
112        if (!StringUtils.equals(roleRspActn.getRoleResponsibilityId(), getRoleResponsibilityId())) {
113            return false;
114        }
115        if (!StringUtils.equals(roleRspActn.getActionTypeCode(), getActionTypeCode())) {
116            return false;
117        }
118        if (!StringUtils.equals(roleRspActn.getActionPolicyCode(), getActionPolicyCode())) {
119            return false;
120        }
121        if (!ObjectUtils.equals(roleRspActn.getPriorityNumber(), getPriorityNumber())) {
122            return false;
123        }
124        return true;
125    }
126
127    @Override
128    public String getId() {
129        return id;
130    }
131
132    public void setId(String id) {
133        this.id = id;
134    }
135
136    @Override
137    public String getRoleResponsibilityId() {
138        return roleResponsibilityId;
139    }
140
141    public void setRoleResponsibilityId(String roleResponsibilityId) {
142        this.roleResponsibilityId = roleResponsibilityId;
143    }
144
145    @Override
146    public String getRoleMemberId() {
147        return roleMemberId;
148    }
149
150    public void setRoleMemberId(String roleMemberId) {
151        this.roleMemberId = roleMemberId;
152    }
153
154    @Override
155    public String getActionTypeCode() {
156        return actionTypeCode;
157    }
158
159    public void setActionTypeCode(String actionTypeCode) {
160        this.actionTypeCode = actionTypeCode;
161    }
162
163    @Override
164    public String getActionPolicyCode() {
165        return actionPolicyCode;
166    }
167
168    public void setActionPolicyCode(String actionPolicyCode) {
169        this.actionPolicyCode = actionPolicyCode;
170    }
171
172    public boolean getForceAction() {
173        return forceAction;
174    }
175
176    @Override
177    public boolean isForceAction() {
178        return forceAction;
179    }
180
181    public void setForceAction(boolean forceAction) {
182        this.forceAction = forceAction;
183    }
184
185    @Override
186    public Integer getPriorityNumber() {
187        return priorityNumber;
188    }
189
190    public void setPriorityNumber(Integer priorityNumber) {
191        this.priorityNumber = priorityNumber;
192    }
193
194    public void setRoleResponsibility(RoleResponsibilityBo roleResponsibility) {
195        this.roleResponsibility = roleResponsibility;
196    }
197}