1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2011 Association for Decentralized Information Management in
\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
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.graph.tests;
\r
14 import java.util.ArrayList;
\r
15 import java.util.List;
\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
28 public class TestTGResourceUtil {
\r
31 public @Test void test() throws Exception {
\r
33 _ResourceRVIPart part1 = new _ResourceRVIPart();
\r
35 part1.role = _Role.CHILD;
\r
37 _StringRVIPart part2 = new _StringRVIPart();
\r
38 part2.string = "Value";
\r
39 part2.role = _Role.PROPERTY;
\r
41 _RVI rvi = new _RVI();
\r
42 rvi.parts = new _RVIPart[] { part1, part2 };
\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
49 TGResourceUtil util = new TGResourceUtil();
\r
50 util.addType( b1.type() );
\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
57 TGResourceUtil.LongAdapter la = new TGResourceUtil.LongAdapter() {
\r
59 public long adapt(long in) {
\r
63 util.adaptValue(b1, rvi, la);
\r
65 System.out.println("rvi = "+b1.toString(rvi));
\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
80 public long resource;
\r
82 static class _StringRVIPart implements _RVIPart {
\r
84 public String string;
\r
86 public Object variant;
\r