1 | package weka.clusterers.forMetisMQI.util; |
---|
2 | |
---|
3 | import java.util.HashMap; |
---|
4 | import java.util.HashSet; |
---|
5 | import java.util.Iterator; |
---|
6 | import java.util.Map; |
---|
7 | import java.util.Set; |
---|
8 | import java.util.Map.Entry; |
---|
9 | |
---|
10 | import org.apache.commons.collections15.Transformer; |
---|
11 | |
---|
12 | import weka.clusterers.forMetisMQI.graph.Node; |
---|
13 | |
---|
14 | public class ContractedVertexTransformer implements Transformer<Node, String> { |
---|
15 | Map<Node,Set<Node>> mapContracted = null; |
---|
16 | |
---|
17 | public ContractedVertexTransformer(CoarserGraphElement cge) { |
---|
18 | mapContracted = new HashMap<Node,Set<Node>>(); |
---|
19 | Iterator<Entry<Node,Node>> entryIterator = cge.getMap().entrySet().iterator(); |
---|
20 | while(entryIterator.hasNext()) { |
---|
21 | Entry<Node, Node> entry = entryIterator.next(); |
---|
22 | Node prevNode = entry.getKey(); |
---|
23 | Node mappedNode = entry.getValue(); |
---|
24 | if(!mapContracted.containsKey(mappedNode)) |
---|
25 | mapContracted.put(mappedNode, new HashSet<Node>()); |
---|
26 | mapContracted.get(mappedNode).add(prevNode); |
---|
27 | } |
---|
28 | } |
---|
29 | |
---|
30 | public String transform(Node n) { |
---|
31 | StringBuffer buffer = new StringBuffer(); |
---|
32 | Iterator<Node> contracted = mapContracted.get(n).iterator(); |
---|
33 | buffer.append("["); |
---|
34 | while(contracted.hasNext()) { |
---|
35 | buffer.append(contracted.next().getId() + ", "); |
---|
36 | } |
---|
37 | if(buffer.length() > 1) |
---|
38 | buffer.setLength(buffer.length() - 2); |
---|
39 | buffer.append("]"); |
---|
40 | return buffer.toString(); |
---|
41 | } |
---|
42 | |
---|
43 | } |
---|