1 /* 2 * Copyright (c) 2005 FlexDock Development Team. All rights reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of 5 * this software and associated documentation files (the "Software"), to deal in the 6 * Software without restriction, including without limitation the rights to use, 7 * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 8 * to the following conditions: 9 * 10 * The above copyright notice and this permission notice shall be included in all 11 * copies or substantial portions of the Software. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 14 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 15 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 16 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 17 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE. 18 */ 19 package org.flexdock.perspective.persist.xml; 20 21 import java.util.ArrayList; 22 23 import org.flexdock.perspective.Perspective; 24 import org.flexdock.perspective.persist.PerspectiveModel; 25 import org.w3c.dom.Document; 26 import org.w3c.dom.Element; 27 import org.w3c.dom.Node; 28 import org.w3c.dom.NodeList; 29 30 /** 31 * Created on 2005-06-03 32 * 33 * @author <a href="mailto:mati@sz.home.pl">Mateusz Szczap</a> 34 * @version $Id: PerspectiveModelSerializer.java,v 1.8 2005-07-06 18:10:48 winnetou25 Exp $ 35 */ 36 public class PerspectiveModelSerializer implements ISerializer { 37 serialize(Document document, Object object)38 public Element serialize(Document document, Object object) { 39 PerspectiveModel perspectiveModel = (PerspectiveModel) object; 40 41 Element perspectiveModelElement = document.createElement(PersistenceConstants.PERSPECTIVE_MODEL_ELEMENT_NAME); 42 43 perspectiveModelElement.setAttribute(PersistenceConstants.PERSPECTIVE_MODEL_ATTRIBUTE_CURRENT_PERSPECTIVE_ID, perspectiveModel.getCurrentPerspective()); 44 perspectiveModelElement.setAttribute(PersistenceConstants.PERSPECTIVE_MODEL_ATTRIBUTE_DEFAULT_PERSPECTIVE_ID, perspectiveModel.getDefaultPerspective()); 45 46 ISerializer perspectiveSerializer = SerializerRegistry.getSerializer(Perspective.class); 47 48 Perspective[] perspectives = perspectiveModel.getPerspectives(); 49 for (int i = 0; i < perspectives.length; i++) { 50 Perspective perspective = perspectives[i]; 51 Element perspectiveElement = perspectiveSerializer.serialize(document, perspective); 52 perspectiveModelElement.appendChild(perspectiveElement); 53 } 54 55 return perspectiveModelElement; 56 } 57 deserialize(Element element)58 public Object deserialize(Element element) { 59 String currentPerspectiveId = element.getAttribute(PersistenceConstants.PERSPECTIVE_MODEL_ATTRIBUTE_CURRENT_PERSPECTIVE_ID); 60 String defaultPerspectiveId = element.getAttribute(PersistenceConstants.PERSPECTIVE_MODEL_ATTRIBUTE_DEFAULT_PERSPECTIVE_ID); 61 62 NodeList perspectivesList = element.getElementsByTagName(PersistenceConstants.PERSPECTIVE_ELEMENT_NAME); 63 ISerializer perspectiveSerializer = SerializerRegistry.getSerializer(Perspective.class); 64 ArrayList perspectives = new ArrayList(); 65 for (int i=0; i<perspectivesList.getLength(); i++) { 66 Node node = perspectivesList.item(i); 67 if (node instanceof Element) { 68 Element perspectiveElement = (Element) node; 69 Perspective perspective = (Perspective) perspectiveSerializer.deserialize(perspectiveElement); 70 perspectives.add(perspective); 71 } 72 } 73 74 Perspective[] perspectivesArray = (Perspective[]) perspectives.toArray(new Perspective[perspectives.size()]); 75 PerspectiveModel perspectiveModel = new PerspectiveModel(defaultPerspectiveId, currentPerspectiveId, perspectivesArray); 76 77 return perspectiveModel; 78 } 79 80 } 81