?? stresswwjiterator.java
字號:
{ statusLbl.setText("status: Adding WMS Layer"); Layer wmsLayer = stressWMS.getLayer(wmsLayerCount); addedLayers.add(wmsLayer); wmsLayerCount++; ApplicationTemplate.insertBeforePlacenames(wwd, wmsLayer); frame.getLayerPanel().update(wwd); } }); moveToDefaut(timeToMove); } else { Position randPos = randomPosition(globe); double zoom = randPos.getElevation()+ (1000000); //do not need to zoom in for these layers Position center = new Position(randPos, zoom); moveToandAlter(timeToMove, center, 1); } } else { statusLbl.setText("status: Reseting for next round"); moveToDefaut(timeToMove); viewIterations=0; numRounds++; markerIterations=0; airspaceIterations=0; wmsIterations=0; wmsLayerCount=0; logMsg = "Round: " + numRounds + " | Total Iterations: " + totIterations; if(markers.size() > 0) markers.clear(); if ( airspace.size() > 0) airspace.clearAirspace(); //reset to orig layers if ( addedLayers.size() > 0) { wwd.getModel().getLayers().removeAll(addedLayers); addedLayers.clear(); } //Call GC System.gc(); wwd.redraw(); frame.getLayerPanel().update(wwd); //Alter Texture Cache values long cap = new Double(wwd.getTextureCache().getCapacity() * .95).longValue(); if ( cap < minCacheCap) wwd.getTextureCache().setCapacity(maxCacheCap); else wwd.getTextureCache().setCapacity(cap); cap = new Double(wwd.getTextureCache().getLowWater() * .95).longValue(); if ( cap < minCacheLowCap) wwd.getTextureCache().setLowWater(maxCacheLowCap); else wwd.getTextureCache().setLowWater(cap); if(minimizeWindow) { SwingUtilities.invokeLater(new Runnable() { public void run() { for (int i =0; i<5; i++) { try{ Thread.sleep(500); frame.setVisible(false); Thread.sleep(500); frame.setVisible(true); } catch(InterruptedException ie) { Logging.logger().severe("Error minimizing/maximizing WWJ window: " + ie.getMessage()); frame.setVisible(true); break; } } } }); } } Logging.logger().info(logMsg + " | Current Memory Used: " + currentMemUsed + "mb | Max Memory Used: " + maxMemUsed + "mb"); } } private void moveToDefaut(long timeToIterate) { Position center = new Position(Angle.fromDegreesLatitude(22.0), Angle.fromDegreesLongitude(-47.0), 15000000); //randPos.getElevation()); //0); OrbitView view = (OrbitView) wwd.getView(); view.applyStateIterator(nextVSI(timeToIterate, center, 1)); } private void moveToandAlter(long timeToIterate, Position center, int iterations ) { OrbitView view = (OrbitView) wwd.getView(); statusLbl.setText("status: Moving to new location"); view.applyStateIterator(nextVSI(timeToIterate, center, iterations)); } private ViewStateIterator nextVSI(long timeToIterate, Position center, int num) { ViewStateIterator vsi; OrbitView view = (OrbitView) wwd.getView(); switch ( num % 10) { case 0: vsi = new EyePositionIterator(timeToIterate,view.getCenterPosition(), center); break; case 2: vsi = FlyToOrbitViewStateIterator.createPanToIterator( wwd.getModel().getGlobe(), view.getCenterPosition(), center, view.getHeading(), Angle.fromDegrees(360 * Math.random()), view.getPitch(), Angle.fromDegrees(0.0), view.getZoom(), center.getElevation(), timeToIterate, true); break; case 4: vsi = FlyToOrbitViewStateIterator.createPanToIterator( wwd.getModel().getGlobe(), view.getCenterPosition(), center, view.getHeading(), Angle.fromDegrees(0.0), view.getPitch(), Angle.fromDegrees(70 * Math.random()), view.getZoom(), center.getElevation(), timeToIterate, true); break; case 6: vsi = FlyToOrbitViewStateIterator.createPanToIterator( wwd.getModel().getGlobe(), view.getCenterPosition(), center, view.getHeading(), Angle.fromDegrees(360 * Math.random()), view.getPitch(), Angle.fromDegrees(70 * Math.random()), view.getZoom(), center.getElevation(), timeToIterate, true); break; default: vsi = FlyToOrbitViewStateIterator.createPanToIterator( wwd.getModel().getGlobe(), view.getCenterPosition(), center, view.getHeading(), Angle.fromDegrees(0.0), view.getPitch(), Angle.fromDegrees(0.0), view.getZoom(), center.getElevation(), timeToIterate, true); break; } return vsi; } private ViewStateIterator alterVSI(long timeToMove) { OrbitView view = (OrbitView) wwd.getView(); Globe globe = wwd.getModel().getGlobe(); double heading = 360 * Math.random(); double pitch = 80 * Math.random(); return FlyToOrbitViewStateIterator.createPanToIterator( globe, view.getCenterPosition(), view.getCenterPosition(), view.getHeading(), Angle.fromDegrees(heading), Angle.fromDegrees(0), Angle.fromDegrees(pitch), view.getZoom(), view.getZoom(), timeToMove, true); } private static Position randomPosition(Globe globe) { double lat, lon; double elevation; double rand; do { rand = Math.random(); lat = 140 * rand - 70; rand = Math.random(); lon = 360 * rand - 180; elevation = globe.getElevation(Angle.fromDegreesLatitude(lat), Angle.fromDegreesLongitude(lon)); } while (elevation < 1); return Position.fromDegrees(lat, lon, elevation); } public JPanel makeControlPanel() { JPanel controlPanel = new JPanel(new GridLayout(0, 1, 5, 5)); controlPanel.add(new JLabel("Started: " + new Date().toString())); controlPanel.add(totalMemLbl); controlPanel.add(freeMemLbl); controlPanel.add(new JSeparator(SwingConstants.HORIZONTAL)); controlPanel.add(viewLbl); controlPanel.add(markerLbl); controlPanel.add(airspaceLbl); controlPanel.add(wmsLbl); controlPanel.add(numObjectsLbl); controlPanel.add(new JSeparator(SwingConstants.HORIZONTAL)); controlPanel.add(roundsLbl); controlPanel.add(iterationsLbl); statusLbl.setForeground(Color.BLUE); controlPanel.add(statusLbl); controlPanel.setBorder(new CompoundBorder(BorderFactory.createEmptyBorder(9, 9, 9, 9), new TitledBorder("Stress Test Statistics"))); return controlPanel; } //inner class for reading iterator properties file //borrowed from gov.nasa.worldwind.Configuration private class StressTestConfiguration { private static final String DEFAULT_LOGGER_NAME = "gov.nasa.worldwind"; private Properties properties= new Properties(); public StressTestConfiguration(String propsFile) { readProperties(propsFile); } private void readProperties(String configFileName) { try { java.io.InputStream propsStream = null; File file = new File(configFileName); if (file.exists()) { try { propsStream = new FileInputStream(file); } catch (FileNotFoundException e) { String message = Logging.getMessage("Configuration.LocalConfigFileNotFound", configFileName); Logging.logger().finest(message); } } if (propsStream == null) { propsStream = this.getClass().getResourceAsStream("/" + configFileName); } if (propsStream == null) { Logging.logger().log(Level.WARNING, "Configuration.UnavailablePropsFile", configFileName); } if (propsStream != null) this.properties.load(propsStream); } // Use a named logger in all the catch statements below to prevent Logger from calling back into // Configuration when this Configuration instance is not yet fully instantiated. catch (FileNotFoundException e) { Logging.logger(DEFAULT_LOGGER_NAME).log(Level.WARNING, "Configuration.UnavailablePropsFile", configFileName); } catch (IOException e) { Logging.logger(DEFAULT_LOGGER_NAME).log(Level.SEVERE, "Configuration.ExceptionReadingPropsFile", e); } catch (Exception e) { Logging.logger(DEFAULT_LOGGER_NAME).log(Level.SEVERE, "Configuration.ExceptionReadingPropsFile", e); } } public synchronized Integer getIntegerValue(String key, Integer defaultValue) { Integer v = getIntegerValue(key); return v != null ? v : defaultValue; } public synchronized Integer getIntegerValue(String key) { String v = getStringValue(key); if (v == null) return null; try { return Integer.parseInt(v); } catch (NumberFormatException e) { Logging.logger().log(Level.SEVERE, "Configuration.ConversionError", v); return null; } } public String getStringValue(String key, String defaultValue) { String v = getStringValue(key); return v != null ? v : defaultValue; } public synchronized String getStringValue(String key) { return properties.getProperty(key); } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -