Exemplo n.º 1
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);
 }
        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);
        }
Exemplo n.º 3
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;
		}