Class MapGraph

java.lang.Object
org.graphstream.graph.implementations.AbstractElement
org.graphstream.graph.implementations.AbstractGraph
org.graphstream.graph.implementations.AdjacencyListGraph
org.graphstream.graph.implementations.MultiGraph
org.unibl.etf.pj2.app.graph.MapGraph
All Implemented Interfaces:
Iterable<org.graphstream.graph.Node>, org.graphstream.graph.Element, org.graphstream.graph.Graph, org.graphstream.graph.Structure, org.graphstream.stream.AttributeSink, org.graphstream.stream.ElementSink, org.graphstream.stream.Pipe, org.graphstream.stream.Replayable, org.graphstream.stream.Sink, org.graphstream.stream.Source

public final class MapGraph extends org.graphstream.graph.implementations.MultiGraph
Klasa izvedenica od MultiGraph-a iz GraphStream biblioteke. Opisuje usmjeren graf koji moze da ima bilo koji broj ulaznih i izlaznih grana u jednom cvoru. Ulazne i izlazne grane opisuju polaske sa cvora i dolaske na cvor, respektivno.
Author:
Nikola Markovic
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.graphstream.graph.implementations.AdjacencyListGraph

    org.graphstream.graph.implementations.AdjacencyListGraph.EdgeIterator<T extends org.graphstream.graph.Edge>, org.graphstream.graph.implementations.AdjacencyListGraph.NodeIterator<T extends org.graphstream.graph.Node>

    Nested classes/interfaces inherited from class org.graphstream.graph.implementations.AbstractElement

    org.graphstream.graph.implementations.AbstractElement.AttributeChangeEvent

    Nested classes/interfaces inherited from interface org.graphstream.stream.Replayable

    org.graphstream.stream.Replayable.Controller
  • Field Summary

    Fields inherited from class org.graphstream.graph.implementations.AdjacencyListGraph

    DEFAULT_EDGE_CAPACITY, DEFAULT_NODE_CAPACITY, edgeArray, edgeCount, edgeMap, GROW_FACTOR, nodeArray, nodeCount, nodeMap

    Fields inherited from class org.graphstream.graph.implementations.AbstractElement

    attributes, attributesBeingRemoved, id
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.graphstream.graph.Node
    Metoda za dodavanje novih cvorova u graf sa vec ustanovljenim org.unibl.etf.pj2.app.ui.style atributom.
    void
    Metoda za uklanjanje svih grana u grafu.
    void
    connectAdjacent(String weightCriteria)
    Metoda koja povezuje logicki susjedne grane (gradove) koristeci pomocnu DepartureUtility klasu koja radi sa podacima iz ulaznog JSON-a.
    private void
    Metoda za podrazumijevanu distribuciju cvorova na grafickom prikazu.
    private void
    Prethodno koristena metoda za distribuciju cvorova.
    void
    setNodes(String[] cityNames, Map<String,org.graphstream.graph.Node> map)
    Metoda za generisanje i prvobitnu distribuciju cvorova grafa po ulasku u aplikaciju.
    void
    setSelected(String nodeId, boolean state, String type)
    Metoda za vizuelni prikaz selektovanja i deselektovanja nekog cvora.

    Methods inherited from class org.graphstream.graph.implementations.AdjacencyListGraph

    addEdgeCallback, addNodeCallback, clearCallback, edges, getEdge, getEdge, getEdgeCount, getNode, getNode, getNodeCount, nodes, removeEdgeCallback, removeNodeCallback

    Methods inherited from class org.graphstream.graph.implementations.AbstractGraph

    addAttributeSink, addEdge, addEdge, addElementSink, addSink, attributeChanged, attributeSinks, clear, clearAttributeSinks, clearElementSinks, clearSinks, display, display, edgeAdded, edgeAttributeAdded, edgeAttributeChanged, edgeAttributeRemoved, edgeFactory, edgeRemoved, elementSinks, getReplayController, getStep, graphAttributeAdded, graphAttributeChanged, graphAttributeRemoved, graphCleared, isAutoCreationEnabled, isStrict, iterator, nodeAdded, nodeAttributeAdded, nodeAttributeChanged, nodeAttributeRemoved, nodeFactory, nodeRemoved, removeAttributeSink, removeEdge, removeEdge, removeEdge, removeElementSink, removeNode, removeNode, removeSink, setAutoCreate, setEdgeFactory, setNodeFactory, setStrict, stepBegins, stepBegins

    Methods inherited from class org.graphstream.graph.implementations.AbstractElement

    attributeKeys, clearAttributes, clearAttributesWithNoEvent, getAttribute, getAttribute, getAttributeCount, getFirstAttributeOf, getFirstAttributeOf, getId, getIndex, hasAttribute, hasAttribute, removeAttribute, setAttribute, setIndex, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.graphstream.graph.Element

    attributeKeys, clearAttributes, getArray, getAttribute, getAttribute, getAttributeCount, getFirstAttributeOf, getFirstAttributeOf, getId, getIndex, getLabel, getMap, getNumber, getVector, hasArray, hasAttribute, hasAttribute, hasLabel, hasMap, hasNumber, hasVector, removeAttribute, setAttribute, setAttributes

    Methods inherited from interface org.graphstream.graph.Graph

    addEdge, addEdge, addEdge, addEdge, addEdge, read, read, removeEdge, removeEdge, removeEdge, removeEdge, removeNode, removeNode, write, write

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Constructor Details

    • MapGraph

      public MapGraph(String id)
      Parameters:
      id - Identifikator grafa
  • Method Details

    • setNodes

      public void setNodes(String[] cityNames, Map<String,org.graphstream.graph.Node> map)
      Metoda za generisanje i prvobitnu distribuciju cvorova grafa po ulasku u aplikaciju.
      Parameters:
      cityNames - Imena gradova iz ulazne JSON datoteke
      map - Mapa identifikatora cvorova i samih objekata cvorova
    • connectAdjacent

      public void connectAdjacent(String weightCriteria)
      Metoda koja povezuje logicki susjedne grane (gradove) koristeci pomocnu DepartureUtility klasu koja radi sa podacima iz ulaznog JSON-a. U zavisnosti od odabranog kriterijuma weightCriteria, tezine izmedju cvorova mogu da poprime sljedece vrijednosti:
      • "duration" - vremenska duzina puta izmedju dva cvora
      • "price" - cijena puta izmedju dva cvora
      • "vehicle" - konstantna vrijednost (x cvorova proputovanih -> x tezine)
      Parameters:
      weightCriteria - Kriterijum tezina grana
    • clearEdges

      public void clearEdges()
      Metoda za uklanjanje svih grana u grafu.
    • addNode

      public org.graphstream.graph.Node addNode(String id)
      Metoda za dodavanje novih cvorova u graf sa vec ustanovljenim org.unibl.etf.pj2.app.ui.style atributom.
      Specified by:
      addNode in interface org.graphstream.graph.Graph
      Overrides:
      addNode in class org.graphstream.graph.implementations.AbstractGraph
      Parameters:
      id - Identifikator novog cvora
      Returns:
      Objekat tipa Node novokreiranog cvora
    • setSelected

      public void setSelected(String nodeId, boolean state, String type)
      Metoda za vizuelni prikaz selektovanja i deselektovanja nekog cvora.
      Parameters:
      nodeId - Identifikator cvora za selekciju/deselekciju
      state - Novo stanje cvora nodeId - selektovan (true) ili deselektovan (false). Stanje false uvijek cvoru daje default izgled, bez obzira na vrijednost parametra type.
      type - Tip selekcije:
      • "A" - selektovan (izgled 1)
      • "B" - selektovan (izgled 2)
      • "C" - selektovan (izgled 3)
      Stanje koje nije jedno od ova 3 uvijek cvoru daje default izgled, bez obzira na vrijednost parametra org.unibl.etf.pj2.app.state.
    • distributeNodes

      private void distributeNodes()
      Metoda za podrazumijevanu distribuciju cvorova na grafickom prikazu. Cvorovi se distribuisu u grupe velicine sqrt(n * m), gdje svaka grupa sadrzi ~n cvorova poredanih jedan do drugog, slijeva nadesno. Svaka naredna grupa (na svakih ~m cvorova) je takodje pomjerena vertikalno nagore za neku konstantnu vrijednost.
    • distributeNodesLegacy

      private void distributeNodesLegacy()
      Prethodno koristena metoda za distribuciju cvorova. Cvorovi se distribuisu nasumicno tako da se postigne sto je veca moguca vidljivost pojedinacnih cvorova, odnosno sto je manje moguce preklopljenih cvorova.