Beispiel #1
0
        public Table SelectRecords(FilterExpressionGroup filter, string[] fieldList, string[] orderByList)
        {
            int length;

            FwNs.Data.FyleDbNs.Fields fields = new FwNs.Data.FyleDbNs.Fields(this._fields.Count);
            if (fieldList != null)
            {
                length = fieldList.Length;
                for (int i = 0; i < length; i++)
                {
                    string fieldName = fieldList[i];
                    if (!this._fields.ContainsKey(fieldName))
                    {
                        throw new Exception(string.Format("Invalid field name - {0}", fieldName));
                    }
                    Field field = this._fields[fieldName];
                    fields.Add(new Field(fieldName, field.DataType, i));
                }
            }
            else
            {
                length = this._fields.Count;
                for (int i = 0; i < length; i++)
                {
                    Field field2 = this._fields[i];
                    fields.Add(new Field(field2.Name, field2.DataType, i));
                }
            }
            Records records = new Records(Math.Min(10, base.Count));

            foreach (Record record in this)
            {
                if (FileDbEngine.evaluate(filter, record.Values.ToArray(), this._fields))
                {
                    object[] values = new object[length];
                    if (fieldList != null)
                    {
                        for (int i = 0; i < length; i++)
                        {
                            string str2 = fieldList[i];
                            values[i] = record[str2];
                        }
                    }
                    else
                    {
                        for (int i = 0; i < length; i++)
                        {
                            values[i] = record[i];
                        }
                    }
                    Record item = new Record(fields, values);
                    records.Add(item);
                }
            }
            if (orderByList != null)
            {
                this.orderBy(records, fieldList, orderByList);
            }
            return(new Table(fields, records, false));
        }
Beispiel #2
0
 public Table(FwNs.Data.FyleDbNs.Fields fields, Records records, bool copyFields) : base(records.Count)
 {
     this.initFields(fields, copyFields);
     if (records != null)
     {
         foreach (Record record in records)
         {
             base.Add(record);
         }
     }
 }
Beispiel #3
0
 internal void Create(FwNs.Data.FyleDbNs.Fields fields, object[][] records, bool copyFields)
 {
     base.Clear();
     this.initFields(fields, copyFields);
     if (records != null)
     {
         for (int i = 0; i < records.Length; i++)
         {
             object[] values = records[i];
             Record   item   = new Record(this._fields, values);
             base.Add(item);
         }
     }
 }
Beispiel #4
0
 private void initFields(FwNs.Data.FyleDbNs.Fields fields, bool copyFields)
 {
     if (copyFields)
     {
         this._fields = new FwNs.Data.FyleDbNs.Fields(fields.Count);
         int num = 0;
         using (List <Field> .Enumerator enumerator = fields.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 Field field = enumerator.Current.Clone();
                 field.Ordinal = num++;
                 this._fields.Add(field);
             }
             return;
         }
     }
     this._fields = fields;
 }
Beispiel #5
0
        private Record createRecord(object[] record, string[] fieldList, bool includeIndex)
        {
            Record record2 = null;

            if (record == null)
            {
                return(record2);
            }
            int num = includeIndex ? 1 : 0;

            FwNs.Data.FyleDbNs.Fields fields = null;
            if (fieldList != null)
            {
                fields = new FwNs.Data.FyleDbNs.Fields(fieldList.Length + num);
                for (int i = 0; i < fieldList.Length; i++)
                {
                    string fieldName = fieldList[i];
                    if (fields.ContainsKey(fieldName))
                    {
                        throw new FileDbException(string.Format("Field name cannot be specified twice in list - {0}", fieldName), FileDbExceptionsEnum.FieldSpecifiedTwice);
                    }
                    fields.Add(this._db.Fields[fieldName]);
                }
            }
            else
            {
                fields = new FwNs.Data.FyleDbNs.Fields(this._db.Fields.Count + num);
                foreach (Field field in this._db.Fields)
                {
                    fields.Add(field);
                }
            }
            if (includeIndex)
            {
                fields.Add(new Field("index", DataTypeEnum.Int, fields.Count));
            }
            return(new Record(fields, record));
        }
Beispiel #6
0
        private T createT <T>(object[] record, string[] fieldList, bool includeIndex) where T : class, new()
        {
            T local = default(T);

            if (record != null)
            {
                int num = includeIndex ? 1 : 0;
                FwNs.Data.FyleDbNs.Fields fields = null;
                if (fieldList != null)
                {
                    fields = new FwNs.Data.FyleDbNs.Fields(fieldList.Length + num);
                    for (int j = 0; j < fieldList.Length; j++)
                    {
                        string fieldName = fieldList[j];
                        if (fields.ContainsKey(fieldName))
                        {
                            throw new FileDbException(string.Format("Field name cannot be specified twice in list - {0}", fieldName), FileDbExceptionsEnum.FieldSpecifiedTwice);
                        }
                        fields.Add(this._db.Fields[fieldName]);
                    }
                }
                else
                {
                    fields = new FwNs.Data.FyleDbNs.Fields(this._db.Fields.Count + num);
                    foreach (Field field in this._db.Fields)
                    {
                        fields.Add(field);
                    }
                }
                if (includeIndex)
                {
                    fields.Add(new Field("index", DataTypeEnum.Int, fields.Count));
                }
                local = Activator.CreateInstance <T>();
                PropertyInfo[] properties = typeof(T).GetProperties(~BindingFlags.Static);
                new Dictionary <string, PropertyInfo>(properties.Length);
                for (int i = 0; i < fields.Count; i++)
                {
Beispiel #7
0
 public Table(FwNs.Data.FyleDbNs.Fields fields, object[][] records, bool copyFields)
 {
     this.Create(fields, records, copyFields);
 }
Beispiel #8
0
 public Table(FwNs.Data.FyleDbNs.Fields fields, bool copyFields)
 {
     this.Create(fields, null, copyFields);
 }
Beispiel #9
0
 public Table(FwNs.Data.FyleDbNs.Fields fields)
 {
     this.Create(fields, null, true);
 }