1 /*******************************************************************************
2 * Copyright (c) 2010 Association for Decentralized Information Management in
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.databoard.binding;
14 import java.util.IdentityHashMap;
17 import org.simantics.databoard.accessor.reference.ChildReference;
18 import org.simantics.databoard.binding.error.BindingException;
19 import org.simantics.databoard.binding.error.RuntimeBindingException;
20 import org.simantics.databoard.binding.impl.BindingPrintContext;
21 import org.simantics.databoard.binding.impl.BooleanBindingDefault;
22 import org.simantics.databoard.binding.mutable.MutableBooleanBinding;
23 import org.simantics.databoard.type.BooleanType;
24 import org.simantics.databoard.util.IdentityPair;
27 * This is a binding of Boolean Type and a Java Object.
29 * @see BooleanBindingDefault
30 * @see MutableBooleanBinding
32 * @author Toni Kalajainen <toni.kalajainen@vtt.fi>
34 public abstract class BooleanBinding extends Binding {
36 public BooleanBinding(BooleanType type) {
40 public abstract Object create(boolean value) throws BindingException;
41 public abstract Object create(Boolean value) throws BindingException;
42 public abstract void setValue(Object obj, Boolean newValue) throws BindingException;
43 public abstract void setValue(Object obj, boolean newValue) throws BindingException;
44 public abstract Boolean getValue(Object o) throws BindingException;
45 public abstract boolean getValue_(Object o) throws BindingException;
47 public Object createUnchecked(Boolean value) throws RuntimeBindingException {
50 } catch (BindingException e) {
51 throw new RuntimeBindingException(e);
56 public void readFrom(Binding srcBinding, Object src, Object dst)
57 throws BindingException {
58 boolean v = ((BooleanBinding)srcBinding).getValue_(src);
63 public BooleanType type() {
64 return (BooleanType) super.type();
68 public void accept(Visitor1 v, Object obj) {
73 public <T> T accept(Visitor<T> v) {
78 public void assertInstaceIsValid(Object obj, Set<Object> validInstances) throws BindingException {
79 if (!isInstance(obj)) throw new BindingException("Not a boolean instance");
83 public int deepHashValue(Object value, IdentityHashMap<Object, Object> hashedObjects) throws BindingException {
84 boolean b = getValue_(value);
85 return b ? 1231 : 1237;
89 public int deepCompare(Object o1, Object o2,
90 Set<IdentityPair<Object, Object>> compareHistory)
91 throws BindingException {
93 boolean v1 = getValue_(o1);
94 boolean v2 = getValue_(o2);
95 return (v2 == v1 ? 0 : (v1 ? 1 : -1));
99 protected void toString(Object value, BindingPrintContext ctx) throws BindingException {
100 ctx.b.append(getValue_(value));
104 public Binding getComponentBinding(ChildReference path) {
105 if (path==null) return this;
106 throw new IllegalArgumentException();
110 public int getComponentCount() {
115 public Binding getComponentBinding(int index) {
116 throw new IllegalArgumentException();