001: /*
002: * Copyright (c) 2001 - 2005 ivata limited.
003: * All rights reserved.
004: * -----------------------------------------------------------------------------
005: * ivata groupware may be redistributed under the GNU General Public
006: * License as published by the Free Software Foundation;
007: * version 2 of the License.
008: *
009: * These programs are free software; you can redistribute them and/or
010: * modify them under the terms of the GNU General Public License
011: * as published by the Free Software Foundation; version 2 of the License.
012: *
013: * These programs are distributed in the hope that they will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: *
017: * See the GNU General Public License in the file LICENSE.txt for more
018: * details.
019: *
020: * If you would like a copy of the GNU General Public License write to
021: *
022: * Free Software Foundation, Inc.
023: * 59 Temple Place - Suite 330
024: * Boston, MA 02111-1307, USA.
025: *
026: *
027: * To arrange commercial support and licensing, contact ivata at
028: * http://www.ivata.com/contact.jsp
029: * -----------------------------------------------------------------------------
030: * $Log: FileContentDO.java,v $
031: * Revision 1.3 2005/10/11 18:51:38 colinmacleod
032: * Fixed some checkstyle and javadoc issues.
033: *
034: * Revision 1.2 2005/10/02 14:08:56 colinmacleod
035: * Added/improved log4j logging.
036: *
037: * Revision 1.1 2005/09/14 15:16:01 colinmacleod
038: * Moved from library to core as part of ivata cms restructuring.
039: *
040: * Revision 1.3 2005/04/10 18:47:42 colinmacleod
041: * Changed i tag to em and b tag to strong.
042: *
043: * Revision 1.2 2005/04/09 17:20:00 colinmacleod
044: * Changed copyright text to GPL v2 explicitly.
045: *
046: * Revision 1.1.1.1 2005/03/10 17:51:13 colinmacleod
047: * Restructured ivata op around Hibernate/PicoContainer.
048: * Renamed ivata groupware.
049: *
050: * Revision 1.4 2004/07/13 20:00:13 colinmacleod
051: * Moved project to POJOs from EJBs.
052: * Applied PicoContainer to services layer (replacing session EJBs).
053: * Applied Hibernate to persistence layer (replacing entity EJBs).
054: *
055: * Revision 1.3 2004/03/21 21:16:26 colinmacleod
056: * Shortened name to ivata op.
057: *
058: * Revision 1.2 2004/02/01 22:07:30 colinmacleod
059: * Added full names to author tags
060: *
061: * Revision 1.1.1.1 2004/01/27 20:58:27 colinmacleod
062: * Moved ivata op to sourceforge.
063: *
064: * Revision 1.2 2003/10/15 14:05:21 colin
065: * fixing for XDoclet
066: *
067: * Revision 1.4 2003/02/25 14:38:13 colin
068: * implemented setModified methods on entity beans thro IvataEntityBean
069: * superclass
070: * -----------------------------------------------------------------------------
071: */
072: package com.ivata.groupware.business.drive.file;
073:
074: import org.apache.log4j.Logger;
075:
076: import java.io.IOException;
077: import java.io.ObjectInputStream;
078: import java.io.ObjectOutputStream;
079: import java.io.Serializable;
080:
081: import com.ivata.mask.util.SerializedByteArray;
082:
083: /**
084: * <p>Encapsulates a file (content & mime type) for
085: * download purposes.</p>
086: *
087: * @since 2002-11-10
088: * @author Colin MacLeod
089: * <a href='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
090: * @version $Revision: 1.3 $
091: */
092: public class FileContentDO implements Serializable {
093: /**
094: * Logger for this class.
095: */
096: private static final Logger logger = Logger
097: .getLogger(FileContentDO.class);
098:
099: /**
100: * Serialization version (for <code>Serializable</code> interface)..
101: */
102: private static final long serialVersionUID = 1L;
103:
104: /**
105: * <p>The mime-type of the content.</p>
106: */
107: private String mimeType;
108:
109: /**
110: * <p>Stores the content of the file, in a byte array which
111: * can be passed from server-side to client-side.</p>
112: */
113: private SerializedByteArray content;
114:
115: /**
116: * <p>Initialize the content and mime type for this DO.
117: * These class attributes are <em>immutable</em> - once they have been
118: * set by this constructor, you can't change them.</p>
119: *
120: * @param contentParam see {@link #getContent}.
121: * @param mimeTypeParam see {@link #getMimeType}.
122: */
123: public FileContentDO(final SerializedByteArray contentParam,
124: final String mimeTypeParam) {
125: this .content = contentParam;
126: this .mimeType = mimeTypeParam;
127: }
128:
129: /**
130: * <p>Serialize the object from the input stream provided.</p>
131: *
132: * @param ois the input stream to serialize the object from
133: * @throws IOException thrown by
134: * <code>ObjectInputStream.defaultReadObject()</code>.
135: * @throws ClassNotFoundException thrown by
136: * <code>ObjectInputStream.defaultReadObject()</code>.
137: *
138: * @roseuid 3E228C3701F7
139: */
140: private void readObject(final ObjectInputStream ois)
141: throws ClassNotFoundException, IOException {
142: if (logger.isDebugEnabled()) {
143: logger.debug("readObject(ObjectInputStream ois = " + ois
144: + ") - start");
145: }
146:
147: ois.defaultReadObject();
148:
149: if (logger.isDebugEnabled()) {
150: logger.debug("readObject(ObjectInputStream) - end");
151: }
152: }
153:
154: /**
155: * <p>Serialize the object to the output stream provided.</p>
156: *
157: * @param oos the output stream to serialize the object to
158: * @throws IOException thrown by
159: * <code>ObjectOutputStream.defaultWriteObject()</code>
160: *
161: * @roseuid 3E228C3701F9
162: */
163: private void writeObject(final ObjectOutputStream oos)
164: throws IOException {
165: if (logger.isDebugEnabled()) {
166: logger.debug("writeObject(ObjectOutputStream oos = " + oos
167: + ") - start");
168: }
169:
170: oos.defaultWriteObject();
171:
172: if (logger.isDebugEnabled()) {
173: logger.debug("writeObject(ObjectOutputStream) - end");
174: }
175: }
176:
177: /**
178: * <p>Get the content of the file.</p>
179: *
180: * @return content of the in a byte array object which can be passed
181: * from
182: * server-side to client-side (is serialized).
183: *
184: * @roseuid 3E228C3701FB
185: */
186: public final SerializedByteArray getContent() {
187: if (logger.isDebugEnabled()) {
188: logger.debug("getContent() - start");
189: }
190:
191: if (logger.isDebugEnabled()) {
192: logger.debug("getContent() - end - return value = "
193: + content);
194: }
195: return content;
196: }
197:
198: /**
199: * <p>Get the mime type of the file content.</p>
200: *
201: * @return clear-text mime type of the file content.
202: *
203: * @roseuid 3E228C3701FC
204: */
205: public final java.lang.String getMimeType() {
206: if (logger.isDebugEnabled()) {
207: logger.debug("getMimeType() - start");
208: }
209:
210: if (logger.isDebugEnabled()) {
211: logger.debug("getMimeType() - end - return value = "
212: + mimeType);
213: }
214: return mimeType;
215: }
216: }
|