/** * write要素の直下にある PointおよびPointSet を解析し、<br> * m_PointTreeRoots, m_PointMap, m_ChildToParentMap<br> * を構築する * * @param e */ private void parsePointTree(Element e) throws org.apache.axis2.databinding.types.URI.MalformedURIException { String parentTagName = e.getTagName(); Node n0 = e.getFirstChild(); while (n0 != null) { if (n0.getNodeType() == Node.ELEMENT_NODE) { Element e0 = (Element) n0; String tagName = e0.getTagName(); String id = e0.getAttribute("id"); if (tagName.equals("pointSet")) { PointSet ps = new PointSet(); ps.setId(new org.apache.axis2.databinding.types.URI(id)); m_PointMap.put(id, new PointData(ps)); if (parentTagName.equals("pointSet")) { String parent = e.getAttribute("id"); m_ChildToParentMap.put(id, parent); } else if (parentTagName.equals("write")) { m_PointTreeRoots.put(id, new PointData(ps)); } parsePointTree(e0); } else if (tagName.equals("point")) { Point p = new Point(); p.setId(new org.apache.axis2.databinding.types.URI(id)); m_PointMap.put(id, new PointData(p)); if (parentTagName.equals("pointSet")) { String parent = e.getAttribute("id"); m_ChildToParentMap.put(id, parent); } else if (parentTagName.equals("write")) { m_PointTreeRoots.put(id, new PointData(p)); } } } n0 = n0.getNextSibling(); } }
/** PointSet木を ローカルのStorageに作成する */ public void init() { Storage2Admin admin = Storage2Admin.getInstance(); admin.log( "fiap.client.writecopy.init.begin", "fiapURI=" + m_FIAPURI + "; frequency=" + m_Frequency + "; mode=" + m_Mode + "; offset=" + m_OffSet, false); java.util.Map<String, PointData> roots = new java.util.Hashtable<String, PointData>(); java.util.Map<String, PointData> points = new java.util.Hashtable<String, PointData>(); String[] keys = new String[0]; keys = m_PointMap.keySet().toArray(keys); for (int i = 0; i < keys.length; i++) { PointData obj = m_PointMap.get(keys[i]); PointData clone = null; if (obj.hasPointSet()) { PointSet clonePS = new PointSet(); clonePS.setId(obj.getPointSet().getId()); clone = new PointData(clonePS); } else if (obj.hasPoint()) { Point cloneP = new Point(); cloneP.setId(obj.getPoint().getId()); clone = new PointData(cloneP); } if (m_PointTreeRoots.containsKey(keys[i])) { roots.put(keys[i], clone); } points.put(keys[i], clone); } keys = new String[0]; keys = m_ChildToParentMap.keySet().toArray(keys); for (int i = 0; i < keys.length; i++) { String id = keys[i]; String parent = m_ChildToParentMap.get(id); PointData child = points.get(id); if (child.hasPointSet()) { points.get(parent).getPointSet().addPointSet(child.getPointSet()); } else if (child.hasPoint()) { points.get(parent).getPointSet().addPoint(child.getPoint()); } } keys = new String[0]; keys = roots.keySet().toArray(keys); for (int i = 0; i < keys.length; i++) { PointData obj = roots.get(keys[i]); // System.out.println(keys[i]); m_Parent.sendUpdate(obj); } admin.log( "fiap.client.writecopy.init.end", "fiapURI=" + m_FIAPURI + "; frequency=" + m_Frequency + "; mode=" + m_Mode + "; offset=" + m_OffSet, false); }