1 package org.sapia.console; 2 3 import java.util.*; 4 5 6 21 public class ReflectCommandFactory implements CommandFactory { 22 private List _pckgs = new ArrayList(); 23 24 27 public Command getCommandFor(String name) throws CommandNotFoundException { 28 Command cmd = null; 29 30 for (int i = 0; i < _pckgs.size(); i++) { 31 try { 32 cmd = (Command) Class.forName((String ) _pckgs.get(i) + "." + 33 firstToUpper(name)).newInstance(); 34 } catch (ClassNotFoundException e) { 35 } catch (Throwable t) { 37 throw new CommandNotFoundException(t + ": " + t.getMessage()); 38 } 39 } 40 41 if (cmd == null) { 42 throw new CommandNotFoundException(name); 43 } 44 45 return cmd; 46 } 47 48 51 public ReflectCommandFactory addPackage(String name) { 52 _pckgs.add(name); 53 54 return this; 55 } 56 57 private String firstToUpper(String name) { 58 StringBuffer buf = new StringBuffer (); 59 60 for (int i = 0; i < name.length(); i++) { 61 if (i == 0) { 62 buf.append(Character.toUpperCase(name.charAt(i))); 63 } else { 64 buf.append(name.charAt(i)); 65 } 66 } 67 68 return buf.toString(); 69 } 70 } 71 | Popular Tags |