package edu.harvard.med.screensaver.rest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
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.model.screenresults.AssayWell;
import edu.harvard.med.screensaver.model.screens.Publication;
import edu.harvard.med.screensaver.model.screens.Screen;
import edu.harvard.med.screensaver.model.users.ScreeningRoomUser;
/**
*/
@Component
public class AssayWellConverter extends RestConverter
{
private static final Logger log = Logger.getLogger(AssayWellConverter.class);
public boolean canConvert(Class clazz)
{
return AssayWell.class.isAssignableFrom(clazz);
}
public void marshal(final Object value, final HierarchicalStreamWriter writer,
MarshallingContext context)
{
getDao().doInTransaction(new DAOTransaction() {
@Override
public void runTransaction()
{
AssayWell aw = (AssayWell) value;
aw = getDao().reloadEntity(aw);
write(writer,aw);
}
});
}
protected final void write( final HierarchicalStreamWriter writer, final AssayWell aw)
{
writer.addAttribute("libraryWellUrl", (String) aw.getLibraryWell().acceptVisitor(getEntityUriGenerator()));
if (aw.getAssayWellControlType() != null) {
writer.startNode("controlType");
writer.setValue(aw.getAssayWellControlType().getValue());
writer.endNode();
}
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
return null;
}
}