Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 4f50a73f

Přidáno uživatelem Martin Matas před téměř 6 roky(ů)

Introduced GraphFactory

Class prepares instance of Graph from data loaded by BaseDOTLoader

Zobrazit rozdíly:

sources/imiger-dot-converter/src/main/java/cz/zcu/kiv/imiger/plugin/dot/BaseGraphFactory.java
1
package cz.zcu.kiv.imiger.plugin.dot;
2

  
3
import cz.zcu.kiv.imiger.plugin.dot.dto.EdgeDTO;
4
import cz.zcu.kiv.imiger.plugin.dot.dto.VertexDTO;
5
import cz.zcu.kiv.imiger.plugin.dot.loader.BaseDOTLoader;
6
import cz.zcu.kiv.imiger.vo.*;
7

  
8
import java.util.*;
9

  
10
/**
11
 * Date: 31.03.2019
12
 *
13
 * @author Martin Matas
14
 */
15
public abstract class BaseGraphFactory<V extends VertexDTO, E extends EdgeDTO> {
16

  
17
	protected List<VertexArchetype> vertexArchetypes;
18
	protected List<EdgeArchetype> edgeArchetypes;
19
	protected List<AttributeType> attributeTypes;
20
	protected List<VertexDTO> vertices;
21
	protected List<EdgeDTO> edges;
22

  
23

  
24
	protected BaseGraphFactory(BaseDOTLoader<V, E> dotLoader) {
25
		loadData(dotLoader);
26
	}
27

  
28
	protected abstract void loadData(BaseDOTLoader<V, E> dotLoader);
29

  
30
	public abstract Graph createGraph();
31

  
32
}
sources/imiger-dot-converter/src/main/java/cz/zcu/kiv/imiger/plugin/dot/GraphFactory.java
1
package cz.zcu.kiv.imiger.plugin.dot;
2

  
3
import cz.zcu.kiv.imiger.plugin.dot.dto.EdgeDTO;
4
import cz.zcu.kiv.imiger.plugin.dot.dto.VertexDTO;
5
import cz.zcu.kiv.imiger.plugin.dot.loader.BaseDOTLoader;
6
import cz.zcu.kiv.imiger.vo.*;
7

  
8
import java.util.*;
9

  
10
/**
11
 * Date: 31.03.2019
12
 *
13
 * @author Martin Matas
14
 */
15
public class GraphFactory extends BaseGraphFactory<VertexDTO, EdgeDTO> {
16

  
17
	private static final String EDGE_ARCHETYPE_NAME = "Edge";
18
	private static final String VERTEX_ARCHETYPE_NAME = "Vertex";
19
	private static final String ARCHETYPE_TEXT = "";
20
	private static final int DEFAULT_ARCHETYPE_INDEX = 0;
21

  
22
	public GraphFactory(BaseDOTLoader<VertexDTO,EdgeDTO> dotLoader) {
23
		super(dotLoader);
24
		vertices = new ArrayList<>();
25
		edges = new ArrayList<>();
26
		attributeTypes = new ArrayList<>();
27
		prepareEdgeArchetypes();
28
		prepareVertexArchetypes();
29
	}
30

  
31
	@Override
32
	protected void loadData(BaseDOTLoader<VertexDTO,EdgeDTO> dotLoader) {
33
		List<VertexDTO> loadedVertices = dotLoader.getVertices();
34
		List<EdgeDTO> loadedEdges = dotLoader.getEdges();
35
		Set<AttributeType> loadedAttributeTypes = dotLoader.getAttributeTypes();
36

  
37
		if (loadedVertices != null) {
38
			vertices = new ArrayList<>(loadedVertices);
39
		}
40

  
41
		if (loadedVertices != null) {
42
			edges = new ArrayList<>(loadedEdges);
43
		}
44

  
45
		if (loadedVertices != null) {
46
			attributeTypes = new ArrayList<>(loadedAttributeTypes);
47
		}
48
	}
49

  
50
	@Override
51
	public Graph createGraph() {
52
		Graph graph = new Graph();
53

  
54
		graph.setEdgeArchetypes(edgeArchetypes);
55
		graph.setVertexArchetypes(vertexArchetypes);
56
		graph.setAttributeTypes(attributeTypes);
57
		addEdgesToGraph(graph, edges);
58
		addVerticesToGraph(graph, vertices);
59

  
60
		return graph;
61
	}
62

  
63
	private void addVerticesToGraph(Graph graph, List<VertexDTO> vertices) {
64
		for (VertexDTO v : vertices) {
65

  
66
			List<String[]> attributes = new ArrayList<>();
67
			attributes.add((String[]) v.getAttributes().values().toArray());
68
			Vertex vertex = new Vertex(v.getId(), v.getName(), DEFAULT_ARCHETYPE_INDEX, "", attributes);
69
			graph.getVertices().add(vertex);
70
		}
71
	}
72

  
73
	private void addEdgesToGraph(Graph graph, List<EdgeDTO> edges) {
74
		for (EdgeDTO e : edges) {
75

  
76
			List<String[]> attributes = new ArrayList<>();
77
			attributes.add((String[]) e.getAttributes().values().toArray());
78
			SubedgeInfo subedgeInfo = new SubedgeInfo(e.getId(), DEFAULT_ARCHETYPE_INDEX, attributes);
79

  
80
			List<SubedgeInfo> subedgeInfos = new ArrayList<>();
81
			subedgeInfos.add(subedgeInfo);
82

  
83
			Edge eddge = new Edge(e.getId(), e.getIdFrom(), e.getIdTo(), e.getName(), subedgeInfos);
84
			graph.getEdges().add(eddge);
85
		}
86
	}
87

  
88
	private void prepareEdgeArchetypes() {
89
		edgeArchetypes= new ArrayList<>();
90
		edgeArchetypes.add(new EdgeArchetype(EDGE_ARCHETYPE_NAME, ARCHETYPE_TEXT));
91
	}
92

  
93
	private void prepareVertexArchetypes() {
94
		vertexArchetypes = new ArrayList<>();
95
		vertexArchetypes.add(new VertexArchetype(VERTEX_ARCHETYPE_NAME, ARCHETYPE_TEXT));
96
	}
97

  
98
}

Také k dispozici: Unified diff