]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.graph/tests/org/simantics/graph/tests/TestTGResourceUtil.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graph / tests / org / simantics / graph / tests / TestTGResourceUtil.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
3  * Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.graph.tests;\r
13 \r
14 import java.util.ArrayList;\r
15 import java.util.List;\r
16 \r
17 import org.junit.Test;\r
18 import org.simantics.databoard.Bindings;\r
19 import org.simantics.databoard.annotations.Union;\r
20 import org.simantics.databoard.binding.Binding;\r
21 import org.simantics.databoard.binding.RecordBinding;\r
22 import org.simantics.graph.tests._RVI._RVIPart;\r
23 import org.simantics.graph.tests._RVI._ResourceRVIPart;\r
24 import org.simantics.graph.tests._RVI._Role;\r
25 import org.simantics.graph.tests._RVI._StringRVIPart;\r
26 import org.simantics.graph.utils.TGResourceUtil;\r
27 \r
28 public class TestTGResourceUtil {\r
29         \r
30         \r
31         public @Test void test() throws Exception {\r
32                 \r
33                 _ResourceRVIPart part1 = new _ResourceRVIPart();\r
34                 part1.resource = 5;\r
35                 part1.role = _Role.CHILD;\r
36                 \r
37                 _StringRVIPart part2 = new _StringRVIPart();\r
38                 part2.string = "Value";\r
39                 part2.role = _Role.PROPERTY;\r
40                 \r
41                 _RVI rvi = new _RVI();\r
42                 rvi.parts = new _RVIPart[] { part1, part2 };\r
43                 rvi.variant = 3L;\r
44                 \r
45                 Binding b1 = Bindings.getBinding( _RVI.class );\r
46                 RecordBinding b2 = Bindings.getBinding( _ResourceRVIPart.class );\r
47                 b2.componentBindings[1].type().metadata.put("resource", "true");\r
48                 \r
49                 TGResourceUtil util = new TGResourceUtil();\r
50                 util.addType( b1.type() );\r
51                 \r
52                 List<Long> resources = new ArrayList<Long>();\r
53                 util.findResources(b1, rvi, resources);\r
54                 for (Long l : resources) System.out.println("Found resource: "+l);\r
55                 \r
56                 // adapt resources\r
57                 TGResourceUtil.LongAdapter la = new TGResourceUtil.LongAdapter() {\r
58                         @Override\r
59                         public long adapt(long in) {\r
60                                 return in;\r
61                         }\r
62                 };\r
63                 util.adaptValue(b1, rvi, la);\r
64                 \r
65                 System.out.println("rvi = "+b1.toString(rvi));          \r
66         }\r
67         \r
68         \r
69 \r
70 }\r
71 \r
72 class _RVI {\r
73         \r
74         static enum _Role { CHILD, PROPERTY }   \r
75         public _RVIPart[] parts;\r
76         @Union({_ResourceRVIPart.class, _StringRVIPart.class})\r
77         interface _RVIPart {}\r
78         static class _ResourceRVIPart implements _RVIPart {\r
79                 public _Role role;\r
80                 public long resource;\r
81         }\r
82         static class _StringRVIPart implements _RVIPart {\r
83                 public _Role role;\r
84                 public String string;\r
85         }       \r
86         public Object variant;\r
87 \r
88 }