001 /* 002 * Copyright (C) 2008-2010 by Holger Arndt 003 * 004 * This file is part of the Universal Java Matrix Package (UJMP). 005 * See the NOTICE file distributed with this work for additional 006 * information regarding copyright ownership and licensing. 007 * 008 * UJMP is free software; you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation; either version 2 011 * of the License, or (at your option) any later version. 012 * 013 * UJMP is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU Lesser General Public License for more details. 017 * 018 * You should have received a copy of the GNU Lesser General Public 019 * License along with UJMP; if not, write to the 020 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 021 * Boston, MA 02110-1301 USA 022 */ 023 024 package org.ujmp.core.io; 025 026 027 public class ImportMatrixGRAPHML { 028 029 // private XMLEventReader eventReader = null; 030 // 031 // private XMLEvent currentEvent = null; 032 // 033 // private List<Key> keys = new ArrayList<Key>(); 034 // 035 // private Map<String, Long> nodeMap = new HashMap<String, Long>(); 036 // 037 // public ImportMatrixGRAPHML() { 038 // } 039 // 040 // public static final Matrix fromString(String string, Object... parameters) 041 // throws MatrixException, XMLStreamException { 042 // StringReader sr = new StringReader(string); 043 // IntelligentFileReader r = new IntelligentFileReader(sr); 044 // Matrix m = fromReader(r, parameters); 045 // r.close(); 046 // return m; 047 // } 048 // 049 // public static final Matrix fromStream(InputStream stream, Object... parameters) 050 // throws MatrixException, IOException, XMLStreamException { 051 // InputStreamReader r = new InputStreamReader(stream); 052 // Matrix m = fromReader(r, parameters); 053 // r.close(); 054 // return m; 055 // } 056 // 057 // public static final Matrix fromFile(File file, Object... parameters) throws MatrixException, 058 // IOException, XMLStreamException { 059 // FileReader lr = new FileReader(file); 060 // Matrix m = fromReader(lr, parameters); 061 // lr.close(); 062 // return m; 063 // } 064 // 065 // private void skipCharacters() throws XMLStreamException { 066 // while (currentEvent.getEventType() == XMLEvent.CHARACTERS) { 067 // currentEvent = eventReader.nextEvent(); 068 // // ignore 069 // } 070 // } 071 // 072 // private void skipStartDocument() throws XMLStreamException { 073 // if (currentEvent.getEventType() == XMLEvent.START_DOCUMENT) { 074 // currentEvent = eventReader.nextEvent(); 075 // // ignore 076 // } 077 // } 078 // 079 // private void skipStartTag() throws XMLStreamException { 080 // if (currentEvent.getEventType() == XMLEvent.START_ELEMENT) { 081 // currentEvent = eventReader.nextEvent(); 082 // // ignore 083 // } 084 // } 085 // 086 // private void skipEndTag() throws XMLStreamException { 087 // if (currentEvent.getEventType() == XMLEvent.END_ELEMENT) { 088 // currentEvent = eventReader.nextEvent(); 089 // // ignore 090 // } 091 // } 092 // 093 // private void addKey() throws XMLStreamException { 094 // if ("key".equals(currentEvent.asStartElement().getName().getLocalPart())) { 095 // StartElement element = currentEvent.asStartElement(); 096 // Key key = new Key(); 097 // key.id = element.getAttributeByName(new QName("id")).getValue(); 098 // key._for = element.getAttributeByName(new QName("for")).getValue(); 099 // key.attr_name = element.getAttributeByName(new QName("attr.name")).getValue(); 100 // key.attr_type = element.getAttributeByName(new QName("attr.type")).getValue(); 101 // currentEvent = eventReader.nextEvent(); 102 // skipCharacters(); 103 // if (currentEvent.getEventType() == XMLEvent.START_ELEMENT 104 // && "default".equals(currentEvent.asStartElement().getName().getLocalPart())) { 105 // // skip default 106 // currentEvent = eventReader.nextEvent(); 107 // skipCharacters(); 108 // if (!"default".equals(currentEvent.asEndElement().getName().getLocalPart())) { 109 // throw new MatrixException("xml does not have excected format: " + currentEvent); 110 // } 111 // currentEvent = eventReader.nextEvent(); 112 // } 113 // if (!"key".equals(currentEvent.asEndElement().getName().getLocalPart())) { 114 // throw new MatrixException("xml does not have excected format: " + currentEvent); 115 // } 116 // currentEvent = eventReader.nextEvent(); 117 // keys.add(key); 118 // } 119 // } 120 // 121 // private void addNode(GraphMatrix matrix) throws XMLStreamException { 122 // if ("node".equals(currentEvent.asStartElement().getName().getLocalPart())) { 123 // StartElement element = currentEvent.asStartElement(); 124 // String id = element.getAttributeByName(new QName("id")).getValue(); 125 // 126 // currentEvent = eventReader.nextEvent(); 127 // skipCharacters(); 128 // 129 // MapMatrix<String, String> node = new DefaultMapMatrix<String, String>(); 130 // node.setLabel(id); 131 // 132 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 133 // && "data".equals(currentEvent.asStartElement().getName().getLocalPart())) { 134 // String key = currentEvent.asStartElement().getAttributeByName(new QName("key")) 135 // .getValue(); 136 // currentEvent = eventReader.nextEvent(); 137 // String data = currentEvent.asCharacters().getData(); 138 // currentEvent = eventReader.nextEvent(); 139 // if (!"data".equals(currentEvent.asEndElement().getName().getLocalPart())) { 140 // throw new MatrixException("xml does not have excected format: " + currentEvent); 141 // } 142 // currentEvent = eventReader.nextEvent(); 143 // skipCharacters(); 144 // 145 // node.put(key, data); 146 // } 147 // if (!"node".equals(currentEvent.asEndElement().getName().getLocalPart())) { 148 // throw new MatrixException("xml does not have excected format: " + currentEvent); 149 // } 150 // currentEvent = eventReader.nextEvent(); 151 // 152 // nodeMap.put(id, matrix.getRowCount()); 153 // matrix.addNode(node); 154 // } 155 // } 156 // 157 // private void addEdge(GraphMatrix matrix) throws XMLStreamException { 158 // if ("edge".equals(currentEvent.asStartElement().getName().getLocalPart())) { 159 // StartElement element = currentEvent.asStartElement(); 160 // String id = element.getAttributeByName(new QName("id")).getValue(); 161 // String source = element.getAttributeByName(new QName("source")).getValue(); 162 // String target = element.getAttributeByName(new QName("target")).getValue(); 163 // 164 // currentEvent = eventReader.nextEvent(); 165 // skipCharacters(); 166 // 167 // MapMatrix<String, String> edge = new DefaultMapMatrix<String, String>(); 168 // edge.setLabel(id); 169 // 170 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 171 // && "data".equals(currentEvent.asStartElement().getName().getLocalPart())) { 172 // String key = currentEvent.asStartElement().getAttributeByName(new QName("key")) 173 // .getValue(); 174 // currentEvent = eventReader.nextEvent(); 175 // String data = currentEvent.asCharacters().getData(); 176 // currentEvent = eventReader.nextEvent(); 177 // if (!"data".equals(currentEvent.asEndElement().getName().getLocalPart())) { 178 // throw new MatrixException("xml does not have excected format: " + currentEvent); 179 // } 180 // currentEvent = eventReader.nextEvent(); 181 // skipCharacters(); 182 // 183 // edge.put(key, data); 184 // } 185 // if (!"edge".equals(currentEvent.asEndElement().getName().getLocalPart())) { 186 // throw new MatrixException("xml does not have excected format: " + currentEvent); 187 // } 188 // currentEvent = eventReader.nextEvent(); 189 // 190 // long sourceId = nodeMap.get(source); 191 // long targetId = nodeMap.get(target); 192 // 193 // matrix.setEdge(edge, sourceId, targetId); 194 // } 195 // } 196 // 197 // private List<Matrix> parseGraphML() throws XMLStreamException { 198 // List<Matrix> result = new ArrayList<Matrix>(); 199 // if ("graphml".equals(currentEvent.asStartElement().getName().getLocalPart())) { 200 // 201 // currentEvent = eventReader.nextEvent(); 202 // skipCharacters(); 203 // 204 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 205 // && "key".equals(currentEvent.asStartElement().getName().getLocalPart())) { 206 // addKey(); 207 // skipCharacters(); 208 // } 209 // 210 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 211 // && "graph".equals(currentEvent.asStartElement().getName().getLocalPart())) { 212 // Matrix m = parseGraph(); 213 // result.add(m); 214 // skipCharacters(); 215 // } 216 // 217 // } else { 218 // throw new MatrixException("xml does not have excected format: " + currentEvent); 219 // } 220 // return result; 221 // } 222 // 223 // private GraphMatrix parseGraph() throws XMLStreamException { 224 // GraphMatrix matrix = new DefaultGraphMatrix(); 225 // if ("graph".equals(currentEvent.asStartElement().getName().getLocalPart())) { 226 // 227 // StartElement element = currentEvent.asStartElement(); 228 // String id = element.getAttributeByName(new QName("id")).getValue(); 229 // String edgedefault = element.getAttributeByName(new QName("edgedefault")).getValue(); 230 // 231 // currentEvent = eventReader.nextEvent(); 232 // skipCharacters(); 233 // 234 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 235 // && "node".equals(currentEvent.asStartElement().getName().getLocalPart())) { 236 // addNode(matrix); 237 // skipCharacters(); 238 // } 239 // 240 // while (currentEvent.getEventType() == XMLEvent.START_ELEMENT 241 // && "edge".equals(currentEvent.asStartElement().getName().getLocalPart())) { 242 // addEdge(matrix); 243 // skipCharacters(); 244 // } 245 // 246 // } else { 247 // throw new MatrixException("xml does not have excected format: " + currentEvent); 248 // } 249 // return matrix; 250 // } 251 // 252 // public Matrix read(Reader reader) throws MatrixException, XMLStreamException { 253 // XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 254 // eventReader = inputFactory.createXMLEventReader(reader); 255 // currentEvent = eventReader.nextEvent(); 256 // 257 // skipCharacters(); 258 // skipStartDocument(); 259 // skipCharacters(); 260 // Matrix graph = parseGraphML().get(0); 261 // 262 // eventReader.close(); 263 // 264 // return graph; 265 // } 266 // 267 // public static final Matrix fromReader(Reader reader, Object... parameters) 268 // throws MatrixException, XMLStreamException { 269 // return new ImportMatrixGRAPHML().read(reader); 270 // 271 // } 272 // 273 // class Key { 274 // public String id; 275 // 276 // public String _for; 277 // 278 // public String attr_name; 279 // 280 // public String attr_type; 281 // 282 // } 283 284 }