123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- package classes;
- import com.google.gson.annotations.Expose;
- import java.awt.*;
- import java.util.ArrayList;
- /**
- * The abstract class "CpsObject" represents any possible object in the system
- * (except Edges). The representation of any object contains following
- * variables: see description of variables
- *
- * @author Gruppe14
- *
- */
- public abstract class AbstractCpsObject {
- /* Type of the Object. */
- @Expose
- String objName;
- /* Name given by the user. */
- @Expose
- String name;
- /* ID of the Obj. */
- @Expose
- int id;
- /* Path of the image for the Obj. */
- @Expose
- String image;
- /* Array of neighbors */
- ArrayList<CpsEdge> connections;
- /* Position with a X and Y value */
- @Expose
- Position position;
- /*
- * Energy input and output of each object in the grid Where the Object is
- * Stored
- */
- @Expose
- String sav;
- /* borderColor the user sets */
- @Expose
- Color borderColor = Color.WHITE;
- /* a Tag that can be used */
- ArrayList<Integer> tags;
- /* a Tag that can be used */
- ArrayList<Integer> pseudoTags;
- /**
- * Constructor for a CpsObejct with an unique ID.
- *
- * @param objName
- * of the Object
- */
- public AbstractCpsObject(String objName) {
- setObjName(objName);
- setName(objName);
- setImage("/Images/Dummy_House.png");
- tags = new ArrayList<>();
- pseudoTags = new ArrayList<>();
- }
- /**
- * Constructor for a new CpsObject with an unique ID (This constructor
- * correspond to the interaction between the Categories and Canvas)-->
- * actually the "new" Object is a copy.
- *
- * @param obj
- * Object to be copied
- */
- public AbstractCpsObject(AbstractCpsObject obj) {
- setObjName(obj.getObjName());
- setName(obj.getObjName());
- setConnections(new ArrayList<>());
- setPosition(new Position());
- setId(IdCounter.nextId());
- setImage(obj.getImage());
- }
- /**
- * Getter for the type of the Object.
- *
- * @return String
- */
- public String getObjName() {
- return objName;
- }
- /**
- * Set the type of Object.
- *
- * @param objName
- * String
- */
- public void setObjName(String objName) {
- this.objName = objName;
- }
- /**
- * Getter for the user-defined name (no unique).
- *
- * @return String
- */
- public String getName() {
- return name;
- }
- /**
- * Set the name.
- *
- * @param name
- * String
- */
- public void setName(String name) {
- this.name = name;
- }
- /**
- * Getter of the unique ID.
- *
- * @return int
- */
- public int getId() {
- return id;
- }
- /**
- * Set the ID to a new one.
- *
- * @param id
- * the iD to set
- */
- public void setId(int id) {
- this.id = id;
- }
- /**
- * Get the path of the image for the selected Object.
- *
- * @return String
- */
- public String getImage() {
- return image;
- }
- /**
- * Set the path of the image.
- *
- * @param image
- * the Image to set
- */
- public void setImage(String image) {
- this.image = image;
- }
- /**
- * List of all existing connections.
- *
- * @return the connections ArrayList
- */
- public ArrayList<CpsEdge> getConnections() {
- return connections;
- }
- /**
- * Set a new ArrayList of connections (Update).
- *
- * @param arrayList
- * the connections to set
- */
- public void setConnections(ArrayList<CpsEdge> arrayList) {
- this.connections = arrayList;
- }
- /**
- * List of all existing connections.
- *
- * @return the connections ArrayList
- */
- public ArrayList<CpsEdge> getConnectedTo() {
- return connections;
- }
- /**
- * Add a new connection to the selected Object.
- *
- * @param toConnect
- * Edge
- */
- public void addConnection(CpsEdge toConnect) {
- connections.add(toConnect);
- }
- /**
- * Set the position of the Object in the canvas.
- *
- * @param x
- * X-Coord
- * @param y
- * Y-Coord
- */
- public void setPosition(int x, int y) {
- setPosition(new Position(x, y));
- }
- /**
- * Get the actual position of the Object.
- *
- * @return Position Position of this Object
- */
- public Position getPosition() {
- return position;
- }
- /**
- * Set the position of the Object in the canvas.
- *
- * @param pos Coordinates
- */
- public void setPosition(Position pos) {
- this.position = pos;
- }
- /**
- * For save purpose.
- *
- * @return the stored
- */
- public String getSav() {
- return sav;
- }
- /**
- * For save purpose.
- *
- * @param sav
- * the stored to set
- */
- public void setSav(String sav) {
- this.sav = sav;
- }
- /**
- * Get the color of the border.
- *
- * @return the BorderColor
- */
- public Color getBorderColor() {
- return borderColor;
- }
- /**
- * Set the Border Color of this CpsObject.
- *
- * @param c
- * the BorderColor
- */
- public void setBorderColor(Color c) {
- this.borderColor = c;
- }
- /**
- * For internal purpose (energy flow).
- *
- * @param tag
- * for internal purpose
- */
- public void addTag(int tag) {
- if (!(tags.contains(tag))) {
- this.tags.add(tag);
- }
- }
- public void addAllTags(ArrayList<Integer> tags) {
- for (Integer tag : tags) {
- addTag(tag);
- }
- }
- /**
- * Get the actual tags.
- *
- * @return ArrayList
- */
- public ArrayList<Integer> getTag() {
- return tags;
- }
- /**
- * Rest the tags to Null.
- */
- public void resetTags() {
- this.tags = new ArrayList<>();
- this.pseudoTags = new ArrayList<>();
- }
- /**
- * For internal purpose (energy flow).
- *
- * @param tags
- * for internal purpose
- */
- public void setTags(ArrayList<Integer> tags) {
- this.tags = tags;
- }
- /**
- * Get the pseudo tags.
- *
- * @return ArrayList
- */
- public ArrayList<Integer> getPseudoTags() {
- return this.pseudoTags;
- }
- /**
- * For internal purpose (energy flow).
- *
- * @param tags for internal purpose
- */
- public void setPseudoTags(ArrayList<Integer> tags) {
- this.pseudoTags = tags;
- }
- /**
- * add a pseudo tag.
- *
- * @return ArrayList
- */
- public void addPseudoTag(int tag) {
- if (!pseudoTags.contains(tag)) {
- pseudoTags.add(tag);
- }
- }
- /**
- * adds all given pseudotags to the tags
- *
- * @param pseudoTags
- */
- public void addAllPseudoTags(ArrayList<Integer> pseudoTags) {
- for (Integer tag : pseudoTags) {
- addPseudoTag(tag);
- }
- }
- /**
- * adds All pseudoTags to tags without duplicates
- */
- public void recalculateTags() {
- for (Integer tag : pseudoTags) {
- if (!tags.contains(tag)) {
- tags.add(tag);
- }
- }
- }
- }
|