blob: 31c703f7d1ea33646182dab40f571b02f53e7e00 [file] [log] [blame]
package name.milesparker.markets;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.amp.agf.IGraphicsAdapted;
import org.eclipse.amp.agf.IGraphicsAdapter;
import org.eclipse.swt.graphics.Color;
import org.eclipse.jface.viewers.IColorProvider;
import org.ascape.model.Agent;
import org.ascape.model.Cell;
import org.ascape.model.CellOccupant;
import org.ascape.model.HostCell;
import org.ascape.model.LocatedAgent;
import org.ascape.model.Scape;
import org.ascape.model.event.ScapeEvent;
import org.ascape.model.rule.Rule;
import org.ascape.model.rule.ExecuteThenUpdate;
import org.ascape.model.space.CollectionSpace;
import org.ascape.model.space.Coordinate;
import org.ascape.model.space.Coordinate2DDiscrete;
import org.ascape.model.space.Graph;
import org.ascape.model.space.Location;
import org.ascape.model.space.Singleton;
import org.ascape.runtime.NonGraphicRunner;
import org.ascape.util.Conditional;
import org.ascape.util.data.DataPoint;
import org.ascape.util.data.DataPointConcrete;
import org.ascape.util.vis.ColorFeature;
import org.ascape.util.vis.ColorFeatureConcrete;
import org.ascape.view.vis.ChartView;
import org.ascape.view.vis.GEFView;
import org.ascape.view.vis.GraphView;
import org.eclipse.amp.escape.runtime.extension.IAgentChild;
/**
* <!-- begin-user-doc -->
* Instrument Java Implementation.
*
* Generated by AMF for model: Markets.metaabm in project: org.eclipse.amp.amf.examples.escape
* <!-- end-user-doc -->
* @generated
*/
public class Instrument extends CellOccupant {
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private int shares = 0;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private StatusEnum status = StatusEnum.ask;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private double offerPrice = 0.0;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private double totalPrice = 0.0;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private double firmPriceEarningsRatio = 0.0;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private List<IAgentChild> children;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public List<IAgentChild> getChildren() {
return children;
}
/**
* <!-- begin-user-doc -->
* Constructs a new Instrument.
* <!-- end-user-doc -->
* @generated
*/
public Instrument() {
children = new ArrayList<IAgentChild>();
}
//todo, make this a useful value for evaluating compatibility of different versions of generated classes
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private static final long serialVersionUID = 89989998L;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private static long nextUniqueID;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
private long uniqueID;
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public long getUID() {
if (uniqueID == 0) {
uniqueID = nextUniqueID++;
}
return uniqueID;
}
/**
* <!-- begin-user-doc -->
* Clones the agent, ensuring that a unique id is assigned.
* <!-- end-user-doc -->
* @generated
*/
public Object clone() {
try {
Instrument clone = (Instrument) super.clone();
clone.uniqueID = 0;
return clone;
} catch (Exception e) {
throw new RuntimeException("Unexpected cloning exception: " + e);
}
}
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public Markets getMarkets() {
return (Markets) getScape().getScape();
}
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public List getNetwork() {
List network = new ArrayList();
network.addAll(((Graph) getMarkets().getFirmInstruments().getSpace())
.getNeighborsFor(this));
network.addAll(((Graph) getMarkets().getInstrumentHolders().getSpace())
.getNeighborsFor(this));
return network;
}
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public void startSimulationAgentChild(int timeStep) {
if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
for (IAgentChild tmp : children) {
tmp.startSimulation(timeStep);
}
}
}
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public void calculateTimeStep(int timeStep) {
for (IAgentChild tmp : children) {
tmp.calculate(timeStep);
}
}
/**
* <!-- begin-user-doc -->
* Derive Total Price.
* <!-- end-user-doc -->
* @generated
*/
public double getTotalPrice() {
return getOfferPrice() * getShares();
}
/**
* <!-- begin-user-doc -->
* Derive Firm Price Earnings Ratio.
* <!-- end-user-doc -->
* @generated
*/
public double getFirmPriceEarningsRatio() {
Firm offerredFirm = (Firm) ((org.ascape.model.space.Discrete) getMarkets()
.getFirmInstruments().getSpace()).findRandomNeighbor(this);
if (offerredFirm != null) {
}
return 0.0;
}
/**
* <!-- begin-user-doc -->
* Gets the Shares property for Instrument.
* @return
* <!-- end-user-doc -->
* @generated
*/
public int getShares() {
return shares;
}
/**
* <!-- begin-user-doc -->
* Sets the Shares property for Instrument.
*
* @param _shares the new Shares value
* <!-- end-user-doc -->
* @generated
*/
public void setShares(int _shares) {
shares = _shares;
}
/**
* <!-- begin-user-doc -->
* Gets the Status property for Instrument.
* @return
* <!-- end-user-doc -->
* @generated
*/
public StatusEnum getStatus() {
return status;
}
/**
* <!-- begin-user-doc -->
* Sets the Status property for Instrument.
*
* @param _status the new Status value
* <!-- end-user-doc -->
* @generated
*/
public void setStatus(StatusEnum _status) {
status = _status;
}
/**
* <!-- begin-user-doc -->
* Gets the Offer Price property for Instrument.
* @return
* <!-- end-user-doc -->
* @generated
*/
public double getOfferPrice() {
return offerPrice;
}
/**
* <!-- begin-user-doc -->
* Sets the Offer Price property for Instrument.
*
* @param _offerPrice the new Offer Price value
* <!-- end-user-doc -->
* @generated
*/
public void setOfferPrice(double _offerPrice) {
offerPrice = _offerPrice;
}
/**
* <!-- begin-user-doc -->
*
* <!-- end-user-doc -->
* @generated
*/
public String getName() {
if (name == null) {
return "Instrument " + getUID();
} else {
return name;
}
}
}