1 package com.jamesbryangraves.bob; 2 3 import gnu.getopt.Getopt; 4 5 import javax.sound.midi.InvalidMidiDataException; 6 import javax.sound.midi.MidiUnavailableException; 7 8 import org.apache.log4j.Logger; 9 import org.springframework.beans.factory.BeanFactory; 10 import org.springframework.beans.factory.xml.XmlBeanFactory; 11 import org.springframework.core.io.ClassPathResource; 12 import org.springframework.core.io.FileSystemResource; 13 14 import com.jamesbryangraves.bob.midi.BobGenericReceiver; 15 16 public class BobEngine { 17 18 static Logger log = Logger.getLogger(BobEngine.class); 19 20 public static void main(String[] args) { 21 22 23 BeanFactory beanFactory = null; 24 25 Getopt g = new Getopt("BobEngine", args, "f:d"); 26 27 int c; 28 String arg; 29 while ((c = g.getopt()) != -1) { 30 switch (c) { 31 case 'f': 32 arg = g.getOptarg(); 33 beanFactory = new XmlBeanFactory(new FileSystemResource(arg)); 34 break; 35 36 case 'd' : 37 System.out.println("Device Options. . ."); 38 listDevices(); 39 System.out.println(". . .Done."); 40 System.exit(0); 41 break; 42 default: 43 System.err.print("getopt() returned " + c + "\n"); 44 } 45 } 46 47 if(beanFactory == null) 48 beanFactory = new XmlBeanFactory(new ClassPathResource( 49 "spring-config.xml")); 50 51 BobApplication app = (BobApplication) beanFactory 52 .getBean("bobApplication"); 53 54 try { 55 app.init(); 56 new Thread(app).start(); 57 log.info("BobEngine is running. . ."); 58 } catch (MidiUnavailableException mue) { 59 mue.printStackTrace(); 60 } catch (InvalidMidiDataException imde) { 61 imde.printStackTrace(); 62 } 63 } 64 65 public static void printUsage() { 66 System.out 67 .println("Usage: java com.jamesbryangraves.bob.BobEngine [-f configFile]"); 68 } 69 70 public static void listDevices() { 71 int i = 0; 72 for(String deviceName : BobGenericReceiver.getDeviceNames()) { 73 System.out.println(i + " " + deviceName); 74 i++; 75 } 76 } 77 }