001 /*
002 * Copyright 2007 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.kns.bo;
017
018 import org.apache.commons.lang.StringUtils;
019 import org.kuali.rice.kns.service.KNSServiceLocator;
020
021 import javax.persistence.*;
022 import java.io.IOException;
023 import java.io.InputStream;
024 import java.util.LinkedHashMap;
025
026 /**
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 */
029 @Entity
030 @Table(name="KRNS_ATT_T")
031 public class Attachment extends PersistableBusinessObjectBase {
032
033 @Id
034 @Column(name="NTE_ID")
035 private Long noteIdentifier;
036 @Column(name="MIME_TYP")
037 private String attachmentMimeTypeCode;
038 @Column(name="FILE_NM")
039 private String attachmentFileName;
040 @Column(name="ATT_ID")
041 private String attachmentIdentifier;
042 @Column(name="FILE_SZ")
043 private Long attachmentFileSize;
044 @Column(name="ATT_TYP_CD")
045 private String attachmentTypeCode;
046
047 @OneToOne(fetch=FetchType.EAGER)
048 @JoinColumn(name="NTE_ID")
049 private Note note;
050
051 /**
052 * Default constructor.
053 */
054 public Attachment() {
055
056 }
057
058 /**
059 * Gets the noteIdentifier attribute.
060 *
061 * @return Returns the noteIdentifier
062 *
063 */
064 public Long getNoteIdentifier() {
065 return noteIdentifier;
066 }
067
068 /**
069 * Sets the noteIdentifier attribute.
070 *
071 * @param noteIdentifier The noteIdentifier to set.
072 *
073 */
074 public void setNoteIdentifier(Long noteIdentifier) {
075 this.noteIdentifier = noteIdentifier;
076 }
077
078
079 /**
080 * Gets the attachmentMimeTypeCode attribute.
081 *
082 * @return Returns the attachmentMimeTypeCode
083 *
084 */
085 public String getAttachmentMimeTypeCode() {
086 return attachmentMimeTypeCode;
087 }
088
089 /**
090 * Sets the attachmentMimeTypeCode attribute.
091 *
092 * @param attachmentMimeTypeCode The attachmentMimeTypeCode to set.
093 *
094 */
095 public void setAttachmentMimeTypeCode(String attachmentMimeTypeCode) {
096 this.attachmentMimeTypeCode = attachmentMimeTypeCode;
097 }
098
099 /*
100 * This method determines the Image Icon to display based on the mime type associated with the given class.
101 * This method pulls from the service layer when called.
102 *
103 * @return Returns the Icon based on the Mime Type
104 */
105 public String getAttachmentIconPathByMimeType() {
106 return KNSServiceLocator.getAttachmentService().convertMimeTypeToIconPath(getAttachmentMimeTypeCode());
107 }
108
109 /**
110 * Gets the attachmentFileName attribute.
111 *
112 * @return Returns the attachmentFileName
113 *
114 */
115 public String getAttachmentFileName() {
116 return attachmentFileName;
117 }
118
119 /**
120 * Sets the attachmentFileName attribute.
121 *
122 * @param attachmentFileName The attachmentFileName to set.
123 *
124 */
125 public void setAttachmentFileName(String attachmentFileName) {
126 this.attachmentFileName = attachmentFileName;
127 }
128
129
130 /**
131 * Gets the attachmentIdentifier attribute.
132 *
133 * @return Returns the attachmentIdentifier
134 *
135 */
136 public String getAttachmentIdentifier() {
137 return attachmentIdentifier;
138 }
139
140 /**
141 * Sets the attachmentIdentifier attribute.
142 *
143 * @param attachmentIdentifier The attachmentIdentifier to set.
144 *
145 */
146 public void setAttachmentIdentifier(String attachmentIdentifier) {
147 this.attachmentIdentifier = attachmentIdentifier;
148 }
149
150
151 /**
152 * Gets the attachmentFileSize attribute.
153 *
154 * @return Returns the attachmentFileSize
155 *
156 */
157 public Long getAttachmentFileSize() {
158 return attachmentFileSize;
159 }
160
161 /**
162 * Sets the attachmentFileSize attribute.
163 *
164 * @param attachmentFileSize The attachmentFileSize to set.
165 *
166 */
167 public void setAttachmentFileSize(Long attachmentFileSize) {
168 this.attachmentFileSize = attachmentFileSize;
169 }
170
171
172 /**
173 * Gets the attachmentTypeCode attribute.
174 *
175 * @return Returns the attachmentTypeCode
176 *
177 */
178 public String getAttachmentTypeCode() {
179 return attachmentTypeCode;
180 }
181
182 /**
183 * Sets the attachmentTypeCode attribute.
184 *
185 * @param attachmentTypeCode The attachmentTypeCode to set.
186 *
187 */
188 public void setAttachmentTypeCode(String attachmentTypeCode) {
189 this.attachmentTypeCode = attachmentTypeCode;
190 }
191
192 /**
193 * Gets the note attribute.
194 * @return Returns the note.
195 */
196 public Note getNote() {
197 return note;
198 }
199
200 /**
201 * Sets the note attribute value.
202 * @param note The note to set.
203 */
204 public void setNote(Note note) {
205 this.note = note;
206 }
207 /**
208 * @return false if any of the required fields (attachmentId, fileName, fileSize, and mimeType) are blank
209 */
210 public boolean isComplete() {
211 return (StringUtils.isNotBlank(attachmentIdentifier) && StringUtils.isNotBlank(attachmentFileName) && (attachmentFileSize != null) && StringUtils.isNotBlank(attachmentMimeTypeCode));
212 }
213
214 /**
215 * (non-Javadoc)
216 *
217 * @see org.kuali.rice.kns.service.AttachmentService#retrieveAttachmentContents(org.kuali.rice.kns.bo.Attachment)
218 */
219 public InputStream getAttachmentContents() throws IOException {
220 return KNSServiceLocator.getAttachmentService().retrieveAttachmentContents(this);
221 }
222 /**
223 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
224 */
225 protected LinkedHashMap toStringMapper() {
226 LinkedHashMap m = new LinkedHashMap();
227 m.put("noteIdentifier", this.noteIdentifier);
228 return m;
229 }
230 }
231