001    package org.kuali.ole.converters;
002    
003    import com.thoughtworks.xstream.converters.Converter;
004    import com.thoughtworks.xstream.converters.MarshallingContext;
005    import com.thoughtworks.xstream.converters.UnmarshallingContext;
006    import com.thoughtworks.xstream.io.HierarchicalStreamReader;
007    import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
008    import org.kuali.ole.bo.explain.OleSRUExplainSchema;
009    
010    /**
011     * Created with IntelliJ IDEA.
012     * User: ?
013     * Date: 7/19/12
014     * Time: 7:02 PM
015     * To change this template use File | Settings | File Templates.
016     */
017    public class OleSRUExplainSchemaInfoConverter implements Converter {
018    
019    
020    
021    
022        @Override
023        public void marshal(Object o, HierarchicalStreamWriter hierarchicalStreamWriter,
024                            MarshallingContext marshallingContext) {
025            OleSRUExplainSchema oleSRUExplainSchema = (OleSRUExplainSchema) o;
026            hierarchicalStreamWriter.addAttribute("name", oleSRUExplainSchema.getName());
027            hierarchicalStreamWriter.addAttribute("identifier", oleSRUExplainSchema.getIdentifier());
028            hierarchicalStreamWriter.setValue(oleSRUExplainSchema.getValue());
029            hierarchicalStreamWriter.startNode("zr:title");
030            hierarchicalStreamWriter.setValue(oleSRUExplainSchema.getTitle());
031            hierarchicalStreamWriter.endNode();
032        }
033    
034        @Override
035        public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader,
036                                UnmarshallingContext unmarshallingContext) {
037            OleSRUExplainSchema oleSRUExplainSchema = new OleSRUExplainSchema();
038            oleSRUExplainSchema.setName(hierarchicalStreamReader.getAttribute("name"));
039            oleSRUExplainSchema.setIdentifier(hierarchicalStreamReader.getAttribute("identifier"));
040            oleSRUExplainSchema.setValue(hierarchicalStreamReader.getValue());
041            while(hierarchicalStreamReader.hasMoreChildren()) {
042                hierarchicalStreamReader.moveDown();
043                if ("zr:title".equals(hierarchicalStreamReader.getNodeName()))
044                    oleSRUExplainSchema.setTitle(hierarchicalStreamReader.getValue());
045                hierarchicalStreamReader.moveUp();
046            }
047            return oleSRUExplainSchema;
048        }
049    
050        @Override
051        public boolean canConvert(Class aClass) {
052            return aClass.equals(OleSRUExplainSchema.class);
053        }
054    }