package eclipse.model.xml8; import org.apache.log4j.Logger; 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 eclipse.model.data.DeviceItem; import eclipse.model.data.Trame; /** * Converter standard for Tram * @author Marco * */ public class TramConverter implements Converter { static Logger logger = Logger.getLogger("main"); @SuppressWarnings("rawtypes") public boolean canConvert(Class type) { return type.equals(Trame.class); } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { // N/A } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { String identifier = reader.getAttribute("identifier"); Integer type = new Integer(reader.getAttribute("type")); Trame tram =new Trame(identifier, type); while (reader.hasMoreChildren()) { // While there are // <deviceItem> reader.moveDown(); // Go down to the <deviceItem> // Process the <deviceItem> DeviceItem di = (DeviceItem) context.convertAnother(new Object(), DeviceItem.class); tram.addItem(di);//add deviceItem to the tram logger.debug("DeviceItem :"+di.getItemId()+":"+di.getName()+" added."); reader.moveUp(); // Get back up to the <trame> } return tram; } }