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.AnnotationType;
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 AnnotationTypeConverter extends RestConverter
{
private static final Logger log = Logger.getLogger(AnnotationTypeConverter.class);
public boolean canConvert(Class clazz)
{
return AnnotationType.class.isAssignableFrom(clazz);
}
public void marshal(final Object value, final HierarchicalStreamWriter writer,
MarshallingContext context)
{
final XStreamUtil util = new XStreamUtil(writer, context, getEntityUriGenerator());
getDao().doInTransaction(new DAOTransaction() {
@Override
public void runTransaction()
{
AnnotationType at = (AnnotationType) value;
at = getDao().reloadEntity(at);
write(util, at);
}
});
}
protected static void write(final XStreamUtil util, AnnotationType at)
{
util.writeNode(at.getOrdinal(), "ordinal");
util.writeNode(at.getName(), "name");
util.writeNode(at.getDescription(), "description");
util.writeNode(at.isNumeric(), "isNumeric");
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
return null;
}
}