/* * SpliceBeastFiles.java * * Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard * * This file is part of BEAST. * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * BEAST is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * BEAST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with BEAST; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package dr.app.tools; import java.io.*; import java.util.*; /** * Simple program to splice a set of (probably simulated) beast files containting sequences * with a fixed second half containing some analysis setup. The first half, up to but not * including the line '\t<patterns id="patterns" from="1">' comes from a set of XML numbered * from 1 to 100, the second half is read from a specified file and a new set numbered 1 to * 100 is created. * * @author Andrew Rambaut * @version $Id$ */ public class SpliceBeastFiles { public SpliceBeastFiles(String templateFileName, String inputFileStem, String outputFileStem) { try { List<String> template = new ArrayList<String>(); BufferedReader reader = new BufferedReader(new FileReader(templateFileName)); String line = reader.readLine(); while (line != null) { template.add(line); line = reader.readLine(); } reader.close(); for (int i = 1; i < 201; i++) { String number = (i < 10? "00" : (i < 100? "0" : "")) + i; reader = new BufferedReader(new FileReader(inputFileStem + number + ".xml")); PrintWriter writer = new PrintWriter(outputFileStem + number + ".xml"); line = reader.readLine(); while (line != null && !line.equals("\t<patterns id=\"patterns\" from=\"1\">")) { writer.println(line); line = reader.readLine(); } for (String line1 : template) { if (line1.contains("$stem")) { line1 = line1.replace("$stem", "sim" + number); } writer.println(line1); } writer.close(); reader.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } } public static void main(String[] argv) { new SpliceBeastFiles(argv[0], argv[1], argv[2]); } }