package example; import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * Simply generates an sample xml * </p> * Usage: <br> * InputOrderGenerator filename <nrOfOrderRows> * </br> * <pre> *Will generate a file that looks like this: *<order> * <header> * <date>Wed Nov 15 13:45:28 EST 2006</date> * <customer number="123123">Joe</customer> * </header> * <order-items> * <order-item> * <product>111</product> * <quantity>2</quantity> * <price>8.90</price> * </order-item> * ... * </order-item> * </order-items> *<order> * </pre> * The number of order-items is controlled by the 'nrOfOrderRows' argument. * * @author <a href="mailto:daniel.bevenius@gmail.com">Daniel Bevenius</a> * */ public class InputOrderGenerator { private static final String LINE_SEP = System.getProperty( "line.separator" ); public static void main( String[] args ) throws IOException { if ( args.length != 2 ) { printUsage(); return; } String fileName = args[0]; String nrOfOrderItemRows = args[1]; int nrOfOrderItems = Integer.parseInt( nrOfOrderItemRows ); File file = new File ( fileName ); deleteFile( file ); FileWriter writer = new FileWriter( file, true ); writer.write( "<order id='332'>" + LINE_SEP ); writer.write( "<header>" + LINE_SEP); writer.write( "<customer number=\"123\">Joe</customer>" + LINE_SEP ); writer.write( "</header>" + LINE_SEP); writer.flush(); writer.write( "<order-items>" + LINE_SEP ); System.out.print("Generating " + file.getName() + "..."); for ( int i = 1 ; i <= nrOfOrderItems ; i ++ ) { writer.write( "<order-item id='" + i + "'>" + LINE_SEP ); writer.write( "<product>" + i + "</product>" + LINE_SEP ); writer.write( "<quantity>2</quantity>" + LINE_SEP ); writer.write( "<price>8.80</price>" + LINE_SEP ); writer.write( "</order-item>" + LINE_SEP ); writer.flush(); } writer.write( "</order-items>" + LINE_SEP); writer.write( "</order>" + LINE_SEP ); writer.close(); System.out.println(); System.out.println("Generated " + file.getName() + " size = [" + getFileLength( file ) + "]" ); } private static String getFileLength( final File file ) { long fileLength = file.length(); int digits = String.valueOf( fileLength ).length(); if ( digits < 4 ) { return fileLength + " Byte(s)"; } else if ( digits >= 4 && digits <= 6 ) { return fileLength / 1024 + " KB"; } else { return fileLength / (1024 * 1024 ) + " MB"; } } private static void deleteFile( final File file ) throws IOException { if ( file.exists() ) { boolean delete = file.delete(); if ( !delete ) { throw new IOException ("Could not delete file [" + file.getAbsolutePath() + "]" ); } } } public static void printUsage() { System.err.println( "Usage: InputOrderGenerator filename <nrOfOrderRows>"); } }