GedcomHandler.java |
1 /**************************************************************************** 2 * This demo file is part of yFiles for Java 2.14. 3 * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28, 4 * 72070 Tuebingen, Germany. All rights reserved. 5 * 6 * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution 7 * of demo files in source code or binary form, with or without 8 * modification, is not permitted. 9 * 10 * Owners of a valid software license for a yFiles for Java version that this 11 * demo is shipped with are allowed to use the demo source code as basis 12 * for their own yFiles for Java powered applications. Use of such programs is 13 * governed by the rights and conditions as set out in the yFiles for Java 14 * license agreement. 15 * 16 * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 19 * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 ***************************************************************************/ 28 package demo.layout.genealogy.iohandler; 29 30 import y.io.IOHandler; 31 import y.view.Graph2D; 32 33 import java.io.IOException; 34 import java.io.InputStream; 35 import java.io.OutputStream; 36 37 /** 38 * Reads GEDCOM files into graphs. GEDCOM is a widely used format to store family trees, see 39 * http://www.phpgedview.net/ged551-5.pdf for the most recent specifications. 40 * <p/> 41 * The reader uses a {@link GedcomInputParser} to fill the data from the GEDCOM file into a graph structure. 42 */ 43 public class GedcomHandler extends IOHandler { 44 45 /** 46 * Returns <code>false</code>, since writing of GEDCOM files is not supported. 47 */ 48 public boolean canWrite() { 49 return false; 50 } 51 52 /** 53 * Throws an <code>UnsupportedOperationException</code>, since writing of GEDCOM files is not supported. 54 */ 55 public void write(Graph2D graph, OutputStream out) throws IOException { 56 throw new UnsupportedOperationException("No Gedcom export"); 57 } 58 59 /** 60 * Reads a GEDCOM file into the given graph graph. 61 * <p/> 62 * This implementation calls a <code>GedcomInputParser</code> to read the GEDCOM file into a graph. 63 * 64 * @param graph the graph to be built 65 * @param in the stream from the file 66 * @throws IOException 67 */ 68 public void read(final Graph2D graph, InputStream in) throws IOException { 69 new GedcomInputParser().parse(in, createGedcomHandler(graph)); 70 } 71 72 /** 73 * Returns a descriptive string of the GEDCOM file format. 74 */ 75 public String getFileFormatString() { 76 return "GEDCOM (Genealogical Data)"; 77 } 78 79 /** 80 * Returns <code>ged</code>. 81 */ 82 public String getFileNameExtension() { 83 return "ged"; 84 } 85 86 /** 87 * Creates a handler for the <code>GedcomInputParser</code> that handles the tags from the GEDCOM file. 88 * 89 * @param graph the graph to be built 90 * @return the handler that handles the GEDCOM tags 91 */ 92 public GedcomInputHandler createGedcomHandler(final Graph2D graph) { 93 return new GedcomInputHandlerImpl(graph); 94 } 95 } 96