protected void createDefenseMissile(String whoLaunchMeId, String targetId, int destructTime) { // must use final for inner thread final int tempDestructTime = destructTime; final String tempLauncherId = whoLaunchMeId, tempTargetId = targetId; Thread temp = new Thread( threadGroup, new Runnable() { @Override public void run() { try { // wait until launch time in XML sleep(tempDestructTime * Utils.SECOND); // update the war if (tempLauncherId.charAt(0) == 'D') { war.interceptGivenMissile(tempLauncherId, tempTargetId); } else war.interceptGivenLauncher(tempLauncherId, tempTargetId); } catch (InterruptedException e) { // System.out.println("The program is close before expected"); // System.out.println(e.getStackTrace()); } } }); temp.start(); }
public void start(ContentHandler sax, Target target) throws IOException, SAXException { this.target = target; XMLReader parser; try { parser = spf.newSAXParser().getXMLReader(); } catch (ParserConfigurationException e) { throw new LagoonException(e.getMessage()); } parser.setContentHandler(sax); parser.setEntityResolver( new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { InputSource is = new InputSource(getSourceMan().getFileURL(systemId)); File fil = getSourceMan().getFile(systemId); if (fil != null) { InputStream istr = new FileInputStream(fil); is.setByteStream(istr); } return is; } }); exception = null; mis = new MyInputStream(); mos = new MyOutputStream(mis); thread = new Thread(this); thread.start(); parser.parse(new InputSource(mis)); mis.close(); try { thread.join(1000); } catch (InterruptedException e) { } if (thread.isAlive()) { thread.interrupt(); } this.target = null; if (exception != null) { if (exception instanceof SAXException) { throw (SAXException) exception; } else if (exception instanceof IOException) { throw (IOException) exception; } } }
protected void createEnemyMissile( String missileId, String destination, int launchTime, int flyTime, int damage, String launcherId) { // must use final for inner thread final int tempLaunchTime = launchTime; final int tempDamage = damage; final int tempFlyTime = flyTime; final String tempLauncherId = launcherId; final String tempDestination = destination; final String tempMissileId = missileId; Thread temp = new Thread( threadGroup, new Runnable() { @Override public void run() { try { // wait until launch time in XML sleep(tempLaunchTime * Utils.SECOND); // update the id's IdGenerator.updateEnemyMissileId(tempMissileId); // add to the war war.launchEnemyMissile(tempLauncherId, tempDestination, tempDamage, tempFlyTime); } catch (InterruptedException e) { } } }); temp.start(); }