001: /*
002: * <copyright>
003: *
004: * Copyright 1997-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: * THIS SOFTWARE IS MODIFIED FOR TESTING QUO_ULTRALLOG INTEGRATION
026: */
027: //package org.cougaar.lib.quo.performance;
028: package org.cougaar.lib.quo.performance;
029:
030: import org.cougaar.lib.quo.performance.assets.LanguagePG;
031: import org.cougaar.lib.quo.performance.assets.NewLanguagePG;
032: import org.cougaar.lib.quo.performance.assets.NewSkillsPG;
033: import org.cougaar.lib.quo.performance.assets.ProgrammerAsset;
034: import org.cougaar.lib.quo.performance.assets.SkillsPG;
035: import org.cougaar.planning.ldm.asset.ItemIdentificationPG;
036: import org.cougaar.planning.ldm.asset.NewItemIdentificationPG;
037: import org.cougaar.planning.plugin.legacy.SimplePlugin;
038:
039: /**
040: * This COUGAAR Plugin creates and publishes ProgrammerAsset objects.
041: *
042: */
043: public class ProgrammerLDMPlugin extends SimplePlugin {
044: /**
045: * Used for initialization to populate the PLAN with ProgrammerAsset objects
046: */
047: protected void setupSubscriptions() {
048:
049: // Register our new PropertyFactory so we can refer to properties by name
050: theLDMF
051: .addPropertyGroupFactory(new org.cougaar.lib.quo.performance.assets.PropertyGroupFactory());
052:
053: // Create the prototypes that will be used to create the programmer assets
054: ProgrammerAsset new_prototype = (ProgrammerAsset) theLDMF
055: .createPrototype(
056: org.cougaar.lib.quo.performance.assets.ProgrammerAsset.class,
057: "programmer");
058: new_prototype.setLanguagePG(getLanguagePG(true, false)); // knows Java but not JavaScript
059: // Cache the prototype in the LDM : note this is not treated
060: // As an asset that is available in subscriptions, but can
061: // be used to build 'real' assets when asked for by prototype name
062: theLDM.cachePrototype("programmer", new_prototype);
063:
064: // Create an asset based on an existing prototype
065: ProgrammerAsset asset = (ProgrammerAsset) theLDMF
066: .createInstance("programmer");
067: asset.setLanguagePG(getLanguagePG(true, true)); // knows Java and JavaScript
068: asset.setSkillsPG(getSkillsPG(10, 100)); // 10 years experience, 100 SLOC/day
069: asset
070: .setItemIdentificationPG(getItemIdentificationPG("Bill Gates"));
071: publishAdd(asset);
072:
073: // // Create an asset based on an existing prototype
074: ProgrammerAsset another_asset = (ProgrammerAsset) theLDMF
075: .createInstance(asset);
076: another_asset.setSkillsPG(getSkillsPG(15, 150)); // 15 years experience, 150 SLOC/day
077: another_asset
078: .setItemIdentificationPG(getItemIdentificationPG("Linus Torvalds"));
079: publishAdd(another_asset);
080:
081: }
082:
083: /**
084: * Create and populate a Language property group
085: */
086: private LanguagePG getLanguagePG(boolean knowsJava,
087: boolean knowsJavaScript) {
088: NewLanguagePG new_language_pg = (NewLanguagePG) theLDMF
089: .createPropertyGroup("LanguagePG");
090: new_language_pg.setKnowsJava(knowsJava);
091: new_language_pg.setKnowsJavaScript(knowsJavaScript);
092: return new_language_pg;
093: }
094:
095: /**
096: * Create and populate a Skills property group
097: */
098: private SkillsPG getSkillsPG(int yearsExperience, int productivity) {
099: NewSkillsPG new_skills_pg = (NewSkillsPG) theLDMF
100: .createPropertyGroup("SkillsPG");
101: new_skills_pg.setYearsExperience(yearsExperience);
102: new_skills_pg.setSLOCPerDay(productivity);
103: return new_skills_pg;
104: }
105:
106: /**
107: * Create and populate an ItemIdentification property group
108: */
109: private ItemIdentificationPG getItemIdentificationPG(String name) {
110: NewItemIdentificationPG new_item_id_pg = (NewItemIdentificationPG) theLDMF
111: .createPropertyGroup("ItemIdentificationPG");
112: new_item_id_pg.setItemIdentification(name);
113: return new_item_id_pg;
114: }
115:
116: /**
117: * No subscriptions, so this method does nothing
118: */
119: protected void execute() {
120: }
121:
122: }
|