X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Fimpl%2FHashMapBinding.java;h=d8c63e34d15b8b72e03b9c216dc63877a06cd8fa;hp=76241a0c7f3eaebd2e7f51d699c5e983d43cbb3b;hb=c69064f9e740eb4abe8448a63d306a085e036e1c;hpb=80d69fc3f7a2e14c5b9e44a601ba15b0434454a8 diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/HashMapBinding.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/HashMapBinding.java index 76241a0c7..d8c63e34d 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/HashMapBinding.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/HashMapBinding.java @@ -1,35 +1,35 @@ -/******************************************************************************* - * Copyright (c) 2010 Association for Decentralized Information Management in - * Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ +/******************************************************************************* + * Copyright (c) 2010 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ package org.simantics.databoard.binding.impl; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.adapter.AdaptException; -import org.simantics.databoard.adapter.Adapter; -import org.simantics.databoard.adapter.AdapterConstructionException; -import org.simantics.databoard.binding.ArrayBinding; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.MapBinding; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.type.MapType; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.adapter.AdaptException; +import org.simantics.databoard.adapter.Adapter; +import org.simantics.databoard.adapter.AdapterConstructionException; +import org.simantics.databoard.binding.ArrayBinding; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.MapBinding; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.type.MapType; /** * Binds Databoard's MapType to java.util.Map and instantiates java.util.HashMap. @@ -53,11 +53,11 @@ public class HashMapBinding extends MapBinding { super(mapType, keyBinding, valueBinding); } - @Override - public Object create() { - return new HashMap(); - } - + @Override + public Object create() { + return new HashMap(); + } + @Override public Object create(Object[] keys, Object[] values) { if (keys.length!=values.length) @@ -95,9 +95,9 @@ public class HashMapBinding extends MapBinding { } @Override - public Object create(Map initialMap) throws BindingException { - if (initialMap instanceof HashMap) - return initialMap; + public Object create(Map initialMap) throws BindingException { + if (initialMap instanceof HashMap) + return initialMap; // Replace with TreeMap. Create comparator from binding. HashMap result = new HashMap(); @@ -157,62 +157,62 @@ public class HashMapBinding extends MapBinding { public void getKeys(Object map, Set keys) throws BindingException { Map m = ((Map )map); keys.addAll(m.keySet()); - } - - @SuppressWarnings("unchecked") - @Override - public int getEntries(Object src, Object from, boolean fromInclusive, Object end, boolean endInclusive, ArrayBinding dstKeyArrayBinding, Object dstKeyArray, ArrayBinding dstValueArrayBinding, Object dstValueArray, int limit) throws BindingException { - // Assert end > from - if (keyBinding.compare(from, end)>0) return 0; - - try { - int dkc = dstKeyArrayBinding.size(dstKeyArray); - int dvc = dstValueArrayBinding.size(dstValueArray); - Adapter ka = Bindings.getTypeAdapter(keyBinding, dstKeyArrayBinding.getComponentBinding()); - Adapter va = Bindings.getTypeAdapter(valueBinding, dstValueArrayBinding.getComponentBinding()); - HashMap m = ((HashMap)src); - int i = 0; - for (Entry e : m.entrySet()) { - if (limit>=0 && i>=limit) break; - Object k = e.getKey(); - int fk = keyBinding.compare(from, k); - int ek = keyBinding.compare(k, end); - boolean fromMatches = fromInclusive ? fk<=0 : fk<0; - boolean endMatches = endInclusive ? ek<=0 : ek <0; - if ( fromMatches && endMatches ) { - Object dk = ka.adapt( e.getKey() ); - Object dv = va.adapt( e.getValue() ); - if (i from - if (keyBinding.compare(from, end)>0) return 0; - - int result = 0; - HashMap m = ((HashMap)src); - for (Object k : m.keySet()) { - int fk = keyBinding.compare(from, k); - int ek = keyBinding.compare(k, end); - boolean fromMatches = fromInclusive ? fk<=0 : fk<0; - boolean endMatches = endInclusive ? ek<=0 : ek <0; - if ( fromMatches && endMatches ) result++; - } - return result; - } + } + + @SuppressWarnings("unchecked") + @Override + public int getEntries(Object src, Object from, boolean fromInclusive, Object end, boolean endInclusive, ArrayBinding dstKeyArrayBinding, Object dstKeyArray, ArrayBinding dstValueArrayBinding, Object dstValueArray, int limit) throws BindingException { + // Assert end > from + if (keyBinding.compare(from, end)>0) return 0; + + try { + int dkc = dstKeyArrayBinding.size(dstKeyArray); + int dvc = dstValueArrayBinding.size(dstValueArray); + Adapter ka = Bindings.getTypeAdapter(keyBinding, dstKeyArrayBinding.getComponentBinding()); + Adapter va = Bindings.getTypeAdapter(valueBinding, dstValueArrayBinding.getComponentBinding()); + HashMap m = ((HashMap)src); + int i = 0; + for (Entry e : m.entrySet()) { + if (limit>=0 && i>=limit) break; + Object k = e.getKey(); + int fk = keyBinding.compare(from, k); + int ek = keyBinding.compare(k, end); + boolean fromMatches = fromInclusive ? fk<=0 : fk<0; + boolean endMatches = endInclusive ? ek<=0 : ek <0; + if ( fromMatches && endMatches ) { + Object dk = ka.adapt( e.getKey() ); + Object dv = va.adapt( e.getValue() ); + if (i from + if (keyBinding.compare(from, end)>0) return 0; + + int result = 0; + HashMap m = ((HashMap)src); + for (Object k : m.keySet()) { + int fk = keyBinding.compare(from, k); + int ek = keyBinding.compare(k, end); + boolean fromMatches = fromInclusive ? fk<=0 : fk<0; + boolean endMatches = endInclusive ? ek<=0 : ek <0; + if ( fromMatches && endMatches ) result++; + } + return result; + } @Override public Object[] getValues(Object map) { @@ -260,7 +260,7 @@ public class HashMapBinding extends MapBinding { } } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public void getAll(Object mapFrom, Map to) { Map m = ((Map)mapFrom); @@ -291,7 +291,7 @@ public class HashMapBinding extends MapBinding { @SuppressWarnings("unchecked") @Override public Object remove(Object map, Object key) { - Map m = ((Map)map); + Map m = ((Map)map); Binding kb = getKeyBinding(); for (Entry e : (Set>) m.entrySet()) { @@ -311,7 +311,7 @@ public class HashMapBinding extends MapBinding { return obj instanceof HashMap; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public int deepHashValue(Object map, IdentityHashMap hashedObjects) throws BindingException { int result = 0; @@ -325,7 +325,7 @@ public class HashMapBinding extends MapBinding { return result; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getCeilingKey(Object map, Object key) { Map m = ((Map)map); @@ -343,7 +343,7 @@ public class HashMapBinding extends MapBinding { return pivot; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getFirstKey(Object map) { Map m = (Map) map; @@ -361,7 +361,7 @@ public class HashMapBinding extends MapBinding { return result; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getFloorKey(Object map, Object key) { Map m = ((Map)map); @@ -382,7 +382,7 @@ public class HashMapBinding extends MapBinding { return pivot; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getHigherKey(Object map, Object key) { Map m = ((Map)map); @@ -400,7 +400,7 @@ public class HashMapBinding extends MapBinding { return pivot; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getLastKey(Object map) { Map m = (Map) map; @@ -418,7 +418,7 @@ public class HashMapBinding extends MapBinding { return result; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") @Override public Object getLowerKey(Object map, Object key) { Map m = ((Map)map);