/**
*
*/
package org.odk.collect.android.logic;
import org.javarosa.core.reference.Reference;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @author ctsims
*/
public class FileReference implements Reference {
String localPart;
String referencePart;
public FileReference(String localPart, String referencePart) {
this.localPart = localPart;
this.referencePart = referencePart;
}
private String getInternalURI() {
return "/" + localPart + referencePart;
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#doesBinaryExist()
*/
@Override
public boolean doesBinaryExist() {
return new File(getInternalURI()).exists();
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#getStream()
*/
@Override
public InputStream getStream() throws IOException {
return new FileInputStream(getInternalURI());
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#getURI()
*/
@Override
public String getURI() {
return "jr://file" + referencePart;
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#isReadOnly()
*/
@Override
public boolean isReadOnly() {
return false;
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#getOutputStream()
*/
@Override
public OutputStream getOutputStream() throws IOException {
return new FileOutputStream(getInternalURI());
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#remove()
*/
@Override
public void remove() {
// TODO bad practice to ignore return values
new File(getInternalURI()).delete();
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#getLocalURI()
*/
@Override
public String getLocalURI() {
return getInternalURI();
}
/*
* (non-Javadoc)
* @see org.javarosa.core.reference.Reference#probeAlternativeReferences()
*/
@Override
public Reference[] probeAlternativeReferences() {
// TODO Auto-generated method stub
return null;
}
}