2011-08-15 09:49:14 +00:00

127 lines
2.9 KiB
Java

package org.alfresco.filesys.repo;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
import org.alfresco.jlan.server.filesys.cache.FileState;
import org.alfresco.jlan.server.filesys.cache.NetworkFileStateInterface;
import org.alfresco.jlan.smb.server.disk.JavaNetworkFile;
/**
* Temporary Java backed network file.
*
* @author mrogers
*/
public class TempNetworkFile extends JavaNetworkFile implements NetworkFileStateInterface
{
/**
* Create a new temporary file with no existing content.
*
* @param file the underlying File
* @param netPath where in the repo this file is going.
*/
public TempNetworkFile(File file, String netPath)
{
super(file, netPath);
setFullName(netPath);
}
/**
* A new temporary network file with some existing content.
* @param file
* @param netPath
* @param existingContent
*/
public TempNetworkFile(File file, String netPath, Reader existingContent)
{
super(file, netPath);
setFullName(netPath);
}
/**
* Access to the underlying file.
* @return the file.
*/
public File getFile()
{
return m_file;
}
public String toString()
{
return "TempNetworkFile:" + getFullName() + " path: " + m_file.getAbsolutePath();
}
@Override
public int readFile(byte[] buf, int len, int pos, long fileOff)
throws java.io.IOException
{
if(fileState != null)
{
fileState.updateAccessDateTime();
}
return super.readFile(buf, len, pos, fileOff);
}
@Override
public void writeFile(byte[] buf, int len, int pos) throws IOException
{
super.writeFile(buf, len, pos);
long size = m_io.length();
setFileSize(size);
if(fileState != null)
{
fileState.updateModifyDateTime();
fileState.setFileSize(size);
}
}
@Override
public void writeFile(byte[] buffer, int length, int position, long fileOffset)
throws IOException
{
super.writeFile(buffer, length, position, fileOffset);
long size = m_io.length();
setFileSize(size);
if(fileState != null)
{
fileState.updateModifyDateTime();
fileState.setFileSize(size);
}
}
@Override
public void truncateFile(long size) throws IOException
{
super.truncateFile(size);
setFileSize(size);
if(fileState != null)
{
fileState.updateModifyDateTime();
fileState.setFileSize(size);
}
}
// For JLAN file state lock manager
public void setFileState(FileState fileState)
{
this.fileState = fileState;
}
@Override
public FileState getFileState()
{
return fileState;
}
private FileState fileState;
}