/* * Licensed Materials - Property of Rogue Wave Software, Inc. * © Copyright Rogue Wave Software, Inc. 2014, 2015 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package main; import ilog.views.maps.defense.symbology.app6a.IlvApp6aSymbol; import ilog.views.sdm.model.IlvDefaultSDMModel; import ilog.views.sdm.model.IlvDefaultSDMNode; import ilog.views.sdm.model.IlvSDMNode; import java.util.Random; /** * Specific SDM Model that simulates a battle field composed of hiearchical armies. */ public class BattleField extends IlvDefaultSDMModel { Random r = new Random(123); final static String affiliations[] = { IlvApp6aSymbol.AFFILIATION_FRIEND, IlvApp6aSymbol.AFFILIATION_HOSTILE, IlvApp6aSymbol.AFFILIATION_NEUTRAL, IlvApp6aSymbol.AFFILIATION_UNKNOWN }; final static String mobilities[]= { "MO","MQ","MS","MY", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$ }; final static String functions[] = { "UCFHS-","UCFHL-","UCFHM-","UCFHH-" //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$ }; final static String units[] = { "EWAL-","EWDLS","EWDMS","EWDHS" //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$ }; /** * Creates a new <code>BattleField</code> structure . */ public BattleField() { buildModel(); } /** * */ private void buildModel() { setAdjusting(true); for (int aff = 0; aff < affiliations.length; aff++) { double dxa = r.nextDouble()*10; double dya = r.nextDouble()*10; IlvDefaultSDMNode army = makeGroup("Army "+affiliations[aff],affiliations[aff],"UCFH--","-K",null); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ for (int func = 0; func < functions.length; func++) { double dxf = r.nextDouble()*4; double dyf = r.nextDouble()*4; IlvDefaultSDMNode division = makeGroup("Division "+functions[func],affiliations[aff],functions[func],"-I",army); //$NON-NLS-1$ //$NON-NLS-2$ for (int mob = 0; mob < mobilities.length; mob++) { double dxm = r.nextDouble()*1; double dym = r.nextDouble()*1; IlvDefaultSDMNode regiment = makeGroup("Regiment "+mobilities[mob],affiliations[aff],functions[func],"-G",division); //$NON-NLS-1$ //$NON-NLS-2$ for (int j = 1; j < 9; j++) { double dx = r.nextDouble()*0.25; double dy = r.nextDouble()*0.25; //JV-3867 IlvApp6aSymbol s = new IlvApp6aSymbol("SFGPUCFHS---CUS-", Math.toRadians(-7 + dx+dxm+dxf+dxa), Math.toRadians(45-7 + dy+dym+dyf+dya));//$NON-NLS-1$ s.setIDAffiliation(affiliations[aff]); s.setIDFunction(units[func]); s.setIDSizeMobility(mobilities[mob]); // use IlvApp6aSymbol.MODIFIER_UNIQUE_DESIGNATION rather than name to have it show on the symbol s.setProperty("name", units[func]+mobilities[mob]+"("+j+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ addObject(s, regiment, null); } } } } // we indicate the map builder that it is not necessary to ask for saving // this data. // make sure group is at the right place. setAdjusting(false); } private IlvDefaultSDMNode makeGroup(String name,String aff, String func,String mobility,IlvSDMNode parent) { //IlvDefaultSDMNode grp = (IlvDefaultSDMNode) engine.getModel().createNode("group"); IlvApp6aSymbol grp=new IlvApp6aSymbol("group","SFGPUCFHS---CUS-",0,0); //$NON-NLS-1$//$NON-NLS-2$ grp.setIDAffiliation(aff); grp.setIDFunction(func); grp.setIDSizeMobility(mobility); //uncomment to show name on the symbol: // engine.getModel().setObjectProperty(grp, IlvApp6aSymbol.MODIFIER_UNIQUE_DESIGNATION, name); setObjectProperty(grp, "name", name); //$NON-NLS-1$ addObject(grp, parent, null); return grp; } }