/*
* Initial version copyright 2008 Lockheed Martin Corporation, except
* as stated in the file entitled Licensing-Information.
*
* All modifications copyright 2009-2012 Data Access Technologies, Inc.
*
* Licensed under the Academic Free License version 3.0
* (http://www.opensource.org/licenses/afl-3.0.php), except as stated
* in the file entitled Licensing-Information.
*/
package fUML.Semantics.Activities.IntermediateActivities;
import fUML.Debug;
import UMLPrimitiveTypes.*;
import fUML.Syntax.*;
import fUML.Syntax.Classes.Kernel.*;
import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
import fUML.Syntax.CommonBehaviors.Communications.*;
import fUML.Syntax.Activities.IntermediateActivities.*;
import fUML.Syntax.Actions.BasicActions.*;
import fUML.Semantics.*;
import fUML.Semantics.Classes.Kernel.*;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
import fUML.Semantics.Actions.BasicActions.*;
import fUML.Semantics.Loci.*;
public class Offer extends org.modeldriven.fuml.FumlObject {
public fUML.Semantics.Activities.IntermediateActivities.TokenList offeredTokens = new fUML.Semantics.Activities.IntermediateActivities.TokenList();
public int countOfferedValues() {
// Return the number of values being offered on object tokens.
// Remove any tokens that have already been withdrawn and don't include
// them in the count.
this.removeWithdrawnTokens();
int count = 0;
for (int i = 0; i < this.offeredTokens.size(); i++) {
if (this.offeredTokens.getValue(i).getValue() != null) {
count = count + 1;
}
}
return count;
} // countOfferedValues
public fUML.Semantics.Activities.IntermediateActivities.TokenList getOfferedTokens() {
// Get the offered tokens, removing any that have been withdrawn.
this.removeWithdrawnTokens();
TokenList tokens = new TokenList();
TokenList offeredTokens = this.offeredTokens;
for (int i = 0; i < this.offeredTokens.size(); i++) {
Token offeredToken = offeredTokens.getValue(i);
// Debug.println("[getOfferedTokens] token value = " +
// offeredToken.getValue());
tokens.addValue(offeredToken);
}
return tokens;
} // getOfferedTokens
public void removeOfferedValues(int count) {
// Remove the given number of non-null object tokens from those in this
// offer.
int n = count;
int i = 1;
while (n > 0) {
if (this.offeredTokens.getValue(i - 1).getValue() != null) {
this.offeredTokens.removeValue(i - 1);
} else {
i = i + 1;
}
n = n - 1;
}
} // removeOfferedValues
public void removeWithdrawnTokens() {
// Remove any tokens that have already been consumed.
TokenList offeredTokens = this.offeredTokens;
int i = 1;
while (i <= this.offeredTokens.size()) {
if (this.offeredTokens.getValue(i - 1).isWithdrawn()) {
this.offeredTokens.remove(i - 1);
i = i - 1;
}
i = i + 1;
}
} // removeWithdrawnTokens
public boolean hasTokens() {
// Check whether this offer has any tokens that have not been withdrawn.
this.removeWithdrawnTokens();
return this.offeredTokens.size() > 0;
} // hasTokens
} // Offer