/**
*
*/
package org.openrosa.client.jr.core.services.storage;
import java.io.IOException;
import java.util.HashMap;
import org.openrosa.client.java.io.DataInputStream;
import org.openrosa.client.java.io.DataOutputStream;
import org.openrosa.client.jr.core.services.storage.WrappingStorageUtility.SerializationWrapper;
import org.openrosa.client.jr.core.util.externalizable.DeserializationException;
import org.openrosa.client.jr.core.util.externalizable.PrototypeFactory;
/**
* @author ctsims
*
*/
public class FauxIndexedPersistable implements Persistable, IMetaData {
Persistable p;
SerializationWrapper w;
IMetaData m;
public FauxIndexedPersistable(Persistable p, SerializationWrapper w) {
this.p = p;
this.w = w;
this.m = null;
}
public FauxIndexedPersistable(Persistable p, SerializationWrapper w, IMetaData m) {
this.p = p;
this.w = w;
this.m = m;
}
/* (non-Javadoc)
* @see org.javarosa.core.services.storage.Persistable#getID()
*/
public int getID() {
return p.getID();
}
/* (non-Javadoc)
* @see org.javarosa.core.services.storage.Persistable#setID(int)
*/
public void setID(int ID) {
p.setID(ID);
}
/* (non-Javadoc)
* @see org.javarosa.core.util.externalizable.Externalizable#readExternal(java.io.DataInputStream, org.javarosa.core.util.externalizable.PrototypeFactory)
*/
public void readExternal(DataInputStream in, PrototypeFactory pf)
throws IOException, DeserializationException {
w.readExternal(in, pf);
}
/* (non-Javadoc)
* @see org.javarosa.core.util.externalizable.Externalizable#writeExternal(java.io.DataOutputStream)
*/
public void writeExternal(DataOutputStream out) throws IOException {
w.writeExternal(out);
}
/* (non-Javadoc)
* @see org.javarosa.core.services.storage.IMetaData#getMetaData()
*/
public HashMap getMetaData() {
if(m != null) {return m.getMetaData();}
throw new RuntimeException("Attempt to index unindexible " + p.getClass().getName());
}
/* (non-Javadoc)
* @see org.javarosa.core.services.storage.IMetaData#getMetaData(java.lang.String)
*/
public Object getMetaData(String fieldName) {
if(m != null) {return m.getMetaData(fieldName);}
throw new RuntimeException("Attempt to index unindexible " + p.getClass().getName());
}
/* (non-Javadoc)
* @see org.javarosa.core.services.storage.IMetaData#getMetaDataFields()
*/
public String[] getMetaDataFields() {
if(m != null) {return m.getMetaDataFields();}
throw new RuntimeException("Attempt to index unindexible " + p.getClass().getName());
}
}