public static NeoDatis.Tool.Wrappers.OdbComparable BuildIndexKey(string indexName , NeoDatis.Odb.Core.Layers.Layer2.Meta.AttributeValuesMap values, string[] fields ) { if (fields.Length == 1) { return(new NeoDatis.Odb.Core.Query.SimpleCompareKey(values.GetComparable(fields[0 ]))); } NeoDatis.Tool.Wrappers.OdbComparable[] keys = new NeoDatis.Tool.Wrappers.OdbComparable [fields.Length]; System.IComparable @object = null; for (int i = 0; i < fields.Length; i++) { // Todo : can we assume that the object is a Comparable try { @object = (System.IComparable)values[fields[i]]; // JDK1.4 restriction: Boolean is not Comparable in jdk1.4 if (@object is bool) { bool b = (bool)@object; if (b) { @object = (byte)1; } else { @object = (byte)0; } } keys[i] = new NeoDatis.Odb.Core.Query.SimpleCompareKey(@object); } catch (System.Exception) { throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.IndexKeysMustImplementComparable .AddParameter(indexName).AddParameter(fields[i]).AddParameter(values[fields[i]]. GetType().FullName)); } } NeoDatis.Odb.Core.Query.ComposedCompareKey key = new NeoDatis.Odb.Core.Query.ComposedCompareKey (keys); return(key); }
public override int CompareTo(object o) { if (o == null || o.GetType() != typeof(NeoDatis.Odb.Core.Query.ComposedCompareKey )) { return(-1); } NeoDatis.Odb.Core.Query.ComposedCompareKey ckey = (NeoDatis.Odb.Core.Query.ComposedCompareKey )o; int result = 0; for (int i = 0; i < keys.Length; i++) { result = keys[i].CompareTo(ckey.keys[i]); if (result != 0) { return(result); } } return(0); }
public static NeoDatis.Tool.Wrappers.OdbComparable BuildIndexKey(string indexName , NeoDatis.Odb.Core.Layers.Layer2.Meta.AttributeValuesMap values, string[] fields ) { if (fields.Length == 1) { return new NeoDatis.Odb.Core.Query.SimpleCompareKey(values.GetComparable(fields[0 ])); } NeoDatis.Tool.Wrappers.OdbComparable[] keys = new NeoDatis.Tool.Wrappers.OdbComparable [fields.Length]; System.IComparable @object = null; for (int i = 0; i < fields.Length; i++) { // Todo : can we assume that the object is a Comparable try { @object = (System.IComparable)values[fields[i]]; // JDK1.4 restriction: Boolean is not Comparable in jdk1.4 if (@object is bool) { bool b = (bool)@object; if (b) { @object = (byte)1; } else { @object = (byte)0; } } keys[i] = new NeoDatis.Odb.Core.Query.SimpleCompareKey(@object); } catch (System.Exception) { throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.IndexKeysMustImplementComparable .AddParameter(indexName).AddParameter(fields[i]).AddParameter(values[fields[i]]. GetType().FullName)); } } NeoDatis.Odb.Core.Query.ComposedCompareKey key = new NeoDatis.Odb.Core.Query.ComposedCompareKey (keys); return key; }