OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 17 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17 Rev 61
Line 17... Line 17...
17
import org.openconcerto.sql.model.SQLTable;
17
import org.openconcerto.sql.model.SQLTable;
18
 
18
 
19
import java.util.Iterator;
19
import java.util.Iterator;
20
import java.util.Set;
20
import java.util.Set;
21
 
21
 
-
 
22
import net.jcip.annotations.GuardedBy;
-
 
23
import net.jcip.annotations.ThreadSafe;
-
 
24
 
22
import org.jgrapht.DirectedGraph;
25
import org.jgrapht.DirectedGraph;
23
import org.jgrapht.Graph;
26
import org.jgrapht.Graph;
24
import org.jgrapht.UndirectedGraph;
27
import org.jgrapht.UndirectedGraph;
25
import org.jgrapht.alg.ConnectivityInspector;
28
import org.jgrapht.alg.ConnectivityInspector;
26
 
29
 
27
/**
30
/**
28
 * Classe de base entre les graphes.
31
 * Classe de base entre les graphes.
29
 * 
32
 * 
30
 * @author ILM Informatique 22 décembre 2004
33
 * @author ILM Informatique 22 décembre 2004
31
 */
34
 */
-
 
35
@ThreadSafe
32
public abstract class BaseGraph {
36
public abstract class BaseGraph {
33
 
37
 
-
 
38
    @GuardedBy("this")
34
    private Graph<SQLTable, Link> graph;
39
    private final Graph<SQLTable, Link> graph;
35
 
40
 
36
    protected BaseGraph(DirectedGraph<SQLTable, Link> g) {
41
    protected BaseGraph(DirectedGraph<SQLTable, Link> g) {
37
        this.graph = g;
42
        this.graph = g;
38
    }
43
    }
39
 
44
 
Line 54... Line 59...
54
     * 
59
     * 
55
     * Utile pour visualiser le graphe de la table dans JGraphPad.
60
     * Utile pour visualiser le graphe de la table dans JGraphPad.
56
     * 
61
     * 
57
     * @return une représentation de ce graphe.
62
     * @return une représentation de ce graphe.
58
     */
63
     */
59
    public String dump() {
64
    public synchronized String dump() {
60
        StringBuffer sb = new StringBuffer();
65
        StringBuffer sb = new StringBuffer();
61
 
66
 
62
        Set vertices = this.graph.vertexSet();
67
        Set vertices = this.graph.vertexSet();
63
        Iterator i = vertices.iterator();
68
        Iterator i = vertices.iterator();
64
        while (i.hasNext()) {
69
        while (i.hasNext()) {
Line 84... Line 89...
84
     * Retourne toutes les tables qui sont liées de près ou de loin à la table passée.
89
     * Retourne toutes les tables qui sont liées de près ou de loin à la table passée.
85
     * 
90
     * 
86
     * @param table la table source.
91
     * @param table la table source.
87
     * @return toutes les tables qui sont liées à la table passée.
92
     * @return toutes les tables qui sont liées à la table passée.
88
     */
93
     */
89
    public Set<SQLTable> getConnectedSet(SQLTable table) {
94
    public synchronized Set<SQLTable> getConnectedSet(SQLTable table) {
90
        final ConnectivityInspector<SQLTable, Link> insp;
95
        final ConnectivityInspector<SQLTable, Link> insp;
91
        if (this.graph instanceof DirectedGraph)
96
        if (this.graph instanceof DirectedGraph)
92
            insp = new ConnectivityInspector<SQLTable, Link>((DirectedGraph<SQLTable, Link>) this.graph);
97
            insp = new ConnectivityInspector<SQLTable, Link>((DirectedGraph<SQLTable, Link>) this.graph);
93
        else
98
        else
94
            insp = new ConnectivityInspector<SQLTable, Link>((UndirectedGraph<SQLTable, Link>) this.graph);
99
            insp = new ConnectivityInspector<SQLTable, Link>((UndirectedGraph<SQLTable, Link>) this.graph);
95
        return insp.connectedSetOf(table);
100
        return insp.connectedSetOf(table);
96
    }
101
    }
97
 
102
 
98
    public final Set<SQLTable> getAllTables() {
103
    public synchronized final Set<SQLTable> getAllTables() {
99
        return this.graph.vertexSet();
104
        return this.graph.vertexSet();
100
    }
105
    }
101
 
106
 
102
    protected Graph<SQLTable, Link> getGraph() {
107
    protected synchronized final Graph<SQLTable, Link> getGraph() {
103
        return this.graph;
108
        return this.graph;
104
    }
109
    }
105
}
110
}