Skip to content
Arc.java 1.21 KiB
Newer Older
Javier Costa's avatar
Javier Costa committed
package tfm.arcs;
Javier Costa's avatar
Javier Costa committed

Javier Costa's avatar
Javier Costa committed
import org.jgrapht.graph.DefaultEdge;;
Javier Costa's avatar
Javier Costa committed
import tfm.nodes.GraphNode;
Javier Costa's avatar
Javier Costa committed

import java.util.Objects;
Javier Costa's avatar
Javier Costa committed
import java.util.Optional;
Javier Costa's avatar
Javier Costa committed
public abstract class Arc extends DefaultEdge {
Javier Costa's avatar
Javier Costa committed

Javier Costa's avatar
Javier Costa committed
    private String variable;

    public Arc() {

    }

    public Arc(String variable) {
        this.variable = variable;
Javier Costa's avatar
Javier Costa committed
    }

    public abstract boolean isControlFlowArrow();

    public abstract boolean isControlDependencyArrow();

    public abstract boolean isDataDependencyArrow();

Javier Costa's avatar
Javier Costa committed
    public Optional<String> getVariable() {
        return Optional.ofNullable(this.variable);
Javier Costa's avatar
Javier Costa committed
    }

Javier Costa's avatar
Javier Costa committed
    @Override
    public String toString() {
        GraphNode<?> from = (GraphNode<?>) getSource();
        GraphNode<?> to = (GraphNode<?>) getTarget();
Javier Costa's avatar
Javier Costa committed
        return String.format("%s -> %s",
                from.getId(),
                to.getId()
        );
Javier Costa's avatar
Javier Costa committed
    }
Javier Costa's avatar
Javier Costa committed
    public String toGraphvizRepresentation() {
        return toString();
    }

    @Override
    public boolean equals(Object o) {
Javier Costa's avatar
Javier Costa committed
        if (this != o) {
            return false;
Javier Costa's avatar
Javier Costa committed
        }
Javier Costa's avatar
Javier Costa committed
        return Objects.equals(variable, ((Arc) o).variable);
    }
Javier Costa's avatar
Javier Costa committed
    @Override
    public int hashCode() {
        return Objects.hash(variable, getSource(), getTarget());
Javier Costa's avatar
Javier Costa committed
}