001 /** 002 * Copyright 2005-2014 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 */ 016 package org.kuali.rice.ken.bo; 017 018 import org.hibernate.annotations.GenericGenerator; 019 import org.hibernate.annotations.Parameter; 020 import org.kuali.rice.ken.api.notification.NotificationContentType; 021 import org.kuali.rice.ken.api.notification.UserChannelSubscription; 022 import org.kuali.rice.ken.api.notification.UserChannelSubscriptionContract; 023 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; 024 025 import javax.persistence.*; 026 027 /** 028 * This class represents an instance of a user's subscription to a specific 029 * notification channel. 030 * @author Kuali Rice Team (rice.collab@kuali.org) 031 */ 032 @Entity 033 @Table(name="KREN_CHNL_SUBSCRP_T") 034 public class UserChannelSubscriptionBo extends PersistableBusinessObjectBase implements UserChannelSubscriptionContract { 035 @Id 036 @GeneratedValue(generator="KREN_CHNL_SUBSCRP_S") 037 @GenericGenerator(name="KREN_CHNL_SUBSCRP_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={ 038 @Parameter(name="sequence_name",value="KREN_CHNL_SUBSCRP_S"), 039 @Parameter(name="value_column",value="id") 040 }) 041 @Column(name="CHNL_SUBSCRP_ID") 042 private Long id; 043 @Column(name="PRNCPL_ID", nullable=false) 044 private String userId; 045 046 @OneToOne(fetch=FetchType.EAGER, cascade={CascadeType.REFRESH, CascadeType.MERGE}) 047 @JoinColumn(name="CHNL_ID") 048 private NotificationChannelBo channel; 049 050 /** 051 * Constructs a UserChannelSubscription instance. 052 */ 053 public UserChannelSubscriptionBo() { 054 } 055 056 /** 057 * Gets the channel attribute. 058 * @return Returns the channel. 059 */ 060 public NotificationChannelBo getChannel() { 061 return channel; 062 } 063 064 /** 065 * Sets the channel attribute value. 066 * @param channel The channel to set. 067 */ 068 public void setChannel(NotificationChannelBo channel) { 069 this.channel = channel; 070 } 071 072 /** 073 * Gets the id attribute. 074 * @return Returns the id. 075 */ 076 public Long getId() { 077 return id; 078 } 079 080 /** 081 * Sets the id attribute value. 082 * @param id The id to set. 083 */ 084 public void setId(Long id) { 085 this.id = id; 086 } 087 088 /** 089 * Gets the userId attribute. 090 * @return Returns the userId. 091 */ 092 public String getUserId() { 093 return userId; 094 } 095 096 /** 097 * Sets the userId attribute value. 098 * @param userId The userId to set. 099 */ 100 public void setUserId(String userId) { 101 this.userId = userId; 102 } 103 104 /** 105 * Converts a mutable bo to its immutable counterpart 106 * @param bo the mutable business object 107 * @return the immutable object 108 */ 109 public static UserChannelSubscription to(UserChannelSubscriptionBo bo) { 110 if (bo == null) { 111 return null; 112 } 113 114 return UserChannelSubscription.Builder.create(bo).build(); 115 } 116 117 /** 118 * Converts a immutable object to its mutable counterpart 119 * @param im immutable object 120 * @return the mutable bo 121 */ 122 public static UserChannelSubscriptionBo from(UserChannelSubscription im) { 123 if (im == null) { 124 return null; 125 } 126 127 UserChannelSubscriptionBo bo = new UserChannelSubscriptionBo(); 128 bo.setId(im.getId()); 129 bo.setVersionNumber(im.getVersionNumber()); 130 bo.setObjectId(im.getObjectId()); 131 132 bo.setUserId(im.getUserId()); 133 bo.setChannel(im.getChannel() == null ? null : NotificationChannelBo.from(im.getChannel())); 134 135 return bo; 136 } 137 } 138