/** * Copyright (c) 2005-2006 Aptana, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. If redistributing this code, * this entire header must remain intact. */ package com.aptana.parsing.tools; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import com.aptana.ide.io.TabledOutputStream; import com.aptana.ide.metadata.MetadataEnvironment; import com.aptana.ide.metadata.reader.MetadataObjectsReader; /** * @author Kevin Lindsey */ public final class MetadataToBinary { /** * MetadataToBinary */ private MetadataToBinary() { } /** * @param args */ public static void main(String[] args) { if (args.length == 2) { String inputFilename = args[0]; String outputFilename = args[1]; try { generateFile(inputFilename, outputFilename); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } else { System.out.println(Messages.getString("MetadataToBinary.Usage_Syntax")); //$NON-NLS-1$ System.out.println(Messages.getString("MetadataToBinary.Usage_Input_File")); //$NON-NLS-1$ System.out.println(Messages.getString("MetadataToBinary.Usage_Output_File")); //$NON-NLS-1$ } } private static void generateFile(String inputFilename, String outputFilename) throws Exception { File inputFile = new File(inputFilename); if (inputFile.exists() == false) { throw new Exception(Messages.getString("MetadataToBinary.Input_File_Does_Not_Exist") + inputFilename); //$NON-NLS-1$ } MetadataEnvironment environment = new MetadataEnvironment(); MetadataObjectsReader metadataReader = new MetadataObjectsReader(environment); InputStream input = new FileInputStream(inputFile); System.out.println(Messages.getString("MetadataToBinary.Reading_Metadata") + inputFilename); //$NON-NLS-1$ metadataReader.loadXML(input); checkFile(outputFilename); File binaryFile = new File(outputFilename); FileOutputStream outputStream = new FileOutputStream(binaryFile); //DataOutputStream output = new DataOutputStream(outputStream); TabledOutputStream output = new TabledOutputStream(outputStream); environment.write(output); output.close(); System.out.println(Messages.getString("MetadataToBinary.Finished")); //$NON-NLS-1$ System.out.println(); } private static void checkFile(String filename) { File file = new File(filename); if (file.exists()) { if (file.canWrite() == false) { String message = MessageFormat.format(Messages.getString("MetadataToBinary.Cannot_Write_File"), new Object[] { filename } ); //$NON-NLS-1$ throw new IllegalStateException(message); } } } }