/*
* Created on Aug 8, 2004
*/
package org.openedit.repository.filesystem;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openedit.repository.ContentItem;
import org.openedit.repository.RepositoryException;
import org.openedit.util.ReaderInputStream;
/**
* @author Matthew Avery, mavery@einnovation.com
*/
public class StringItem extends ContentItem
{
protected String fieldContent;
protected String fieldOutputEncoding;
protected boolean fieldWritable = true;
private static final Log log = LogFactory.getLog(StringItem.class);
public StringItem( String inPath, String inContent, String inEncoding )
{
//fieldLastModified = new Date();
if ( inContent == null)
{
inContent = "";
}
fieldContent = inContent;
fieldPath = inPath;
fieldOutputEncoding = inEncoding;
//setLastModified( new Date() );
}
/**
*
*/
public StringItem()
{
}
public InputStream getInputStream() throws RepositoryException
{
if ( getOutputEncoding() == null)
{
log.error("Encoding not defined");
return new ByteArrayInputStream(getContent().getBytes());
}
try
{
//BufferedReader reader = new BufferedReader ( new InputStreamReader ( in ) );
return new ReaderInputStream(new StringReader(getContent()),getOutputEncoding());
} catch ( Exception ex)
{
log.error(ex);
throw new RepositoryException(ex);
}
}
public boolean exists()
{
return getContent() != null;
}
public boolean isFolder()
{
return false;
}
/**
* We use the StringItem to make changes and save them back again
*/
public boolean isWritable()
{
return fieldWritable;
}
public String getContent()
{
return fieldContent;
}
public void setContent( String content )
{
fieldContent = content;
setLastModified( new Date() );
}
protected void setWritable(boolean inWritable)
{
fieldWritable = inWritable;
}
public String getOutputEncoding()
{
return fieldOutputEncoding;
}
public void setOutputEncoding(String inOutputEncoding)
{
fieldOutputEncoding = inOutputEncoding;
}
}