| 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; |
| } |
| } |
| } |