package edu.harvard.med.screensaver.rest;
import java.util.Set;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import edu.harvard.med.screensaver.db.DAOTransaction;
import edu.harvard.med.screensaver.db.GenericEntityDAO;
import edu.harvard.med.screensaver.model.Entity;
import edu.harvard.med.screensaver.model.screenresults.AssayWell;
import edu.harvard.med.screensaver.model.screenresults.DataColumn;
import edu.harvard.med.screensaver.model.screenresults.ResultValue;
import edu.harvard.med.screensaver.model.screenresults.ScreenResult;
public class AssayWellsConverter extends RestConverter
{
public static class AssayWellsRequest
{
public ScreenResult sr;
public AssayWellsRequest(ScreenResult sr)
{
this.sr = sr;
}
}
private static final Logger log = Logger.getLogger(AssayWellsConverter.class);
@Autowired
private AssayWellConverter assayWellConverter;
public boolean canConvert(Class clazz)
{
return AssayWellsConverter.AssayWellsRequest.class.isAssignableFrom(clazz);
}
public void marshal(final Object value, final HierarchicalStreamWriter writer,
MarshallingContext context)
{
getDao().doInTransaction(new DAOTransaction() {
@Override
public void runTransaction()
{
ScreenResult sr = getDao().reloadEntity(((AssayWellsConverter.AssayWellsRequest)value).sr);
for(AssayWell aw:sr.getAssayWells())
{
writer.startNode(getNodeName(AssayWell.class));
//aw = getDao().reloadEntity(aw);
assayWellConverter.write(writer, aw);
writer.endNode();
}
}
});
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
return null;
}
}