001 /**
002 * ===========================================================
003 * LibRepository : a free Java content repository access layer
004 * ===========================================================
005 *
006 * Project Info: http://jfreereport.pentaho.org/librepository/
007 *
008 * (C) Copyright 2006, by Pentaho Corporation and Contributors.
009 *
010 * This library is free software; you can redistribute it and/or modify it under the terms
011 * of the GNU Lesser General Public License as published by the Free Software Foundation;
012 * either version 2.1 of the License, or (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016 * See the GNU Lesser General Public License for more details.
017 *
018 * You should have received a copy of the GNU Lesser General Public License along with this
019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020 * Boston, MA 02111-1307, USA.
021 *
022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023 * in the United States and other countries.]
024 *
025 * ------------
026 * StreamContentItem.java
027 * ------------
028 * (C) Copyright 2006, by Pentaho Corporation.
029 */
030
031 package org.jfree.repository.stream;
032
033 import java.io.OutputStream;
034 import java.io.IOException;
035 import java.io.InputStream;
036
037 import org.jfree.repository.ContentItem;
038 import org.jfree.repository.ContentLocation;
039 import org.jfree.repository.ContentIOException;
040 import org.jfree.repository.Repository;
041
042 /**
043 * Creation-Date: 13.11.2006, 17:27:04
044 *
045 * @author Thomas Morgner
046 */
047 public class StreamContentItem implements ContentItem
048 {
049 private WrappedInputStream inputStream;
050 private WrappedOutputStream outputStream;
051 private ContentLocation parent;
052 private String name;
053
054 public StreamContentItem(final String name,
055 final ContentLocation parent,
056 final WrappedInputStream inputStream,
057 final WrappedOutputStream outputStream)
058 {
059 this.name = name;
060 this.parent = parent;
061 this.inputStream = inputStream;
062 this.outputStream = outputStream;
063 }
064
065 public boolean isReadable()
066 {
067 if (inputStream == null)
068 {
069 return false;
070 }
071 return inputStream.isClosed() == false;
072 }
073
074 public boolean isWriteable()
075 {
076 if (outputStream == null)
077 {
078 return false;
079 }
080 return outputStream.isClosed() == false;
081 }
082
083 public String getMimeType() throws ContentIOException
084 {
085 return getRepository().getMimeRegistry().getMimeType(this);
086 }
087
088 public OutputStream getOutputStream() throws ContentIOException, IOException
089 {
090 return outputStream;
091 }
092
093 public InputStream getInputStream() throws ContentIOException, IOException
094 {
095 return inputStream;
096 }
097
098 public String getName()
099 {
100 return name;
101 }
102
103 public Object getContentId()
104 {
105 return name;
106 }
107
108 public Object getAttribute(final String domain, final String key)
109 {
110 return null;
111 }
112
113 public boolean setAttribute(final String domain, final String key, final Object value)
114 {
115 return false;
116 }
117
118 public ContentLocation getParent()
119 {
120 return parent;
121 }
122
123 public Repository getRepository()
124 {
125 return parent.getRepository();
126 }
127
128 public boolean delete()
129 {
130 return false;
131 }
132 }