예제 #1
0
 /// <summary>
 /// Коструктор
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="id"></param>
 /// <param name="name"></param>
 /// <param name="type"></param>
 /// <param name="header"></param>
 /// <param name="pkIndex"></param>
 /// <param name="fieldEncoding">Кодировка для CLOB полей</param>
 public Field(SQLCursor owner, Int32 id, String name, Type type, String header, String pkIndex, FieldEncoding fieldEncoding = FieldEncoding.UTF8) {
   this.FieldID = id;
   this._owner = owner;
   this.FieldName = name.ToUpper();
   this.DataType = ftypeHelper.ConvertTypeToFType(type);
   this.Encoding = fieldEncoding;
   this.FieldCaption = header;
   this.FieldPkIndex = pkIndex;
 }
예제 #2
0
        public IoElement DecodeIoElement(FieldEncoding encoding)
        {
            var count = _reader.ReadByte();

            var properties = new List <IoProperty>(count);

            for (var i = 0; i < count; i++)
            {
                properties.Add(DecodeProperty(encoding));
            }
            return(IoElement.Create(0, properties.Count(), properties));
        }
예제 #3
0
        public IoProperty DecodeProperty(FieldEncoding encoding)
        {
            // read ID
            var propertyId = (int)_reader.ReadByte();

            switch (encoding)
            {
            case FieldEncoding.Int8:
                return(IoProperty.Create(propertyId, _reader.ReadSByte()));

            case FieldEncoding.Int16:
                return(IoProperty.Create(propertyId, _reader.ReadInt16()));

            case FieldEncoding.Int32:
                return(IoProperty.Create(propertyId, _reader.ReadInt32()));

            default:
                throw new NotSupportedException(string.Format("The field encoding \"{0}\" is not supported.", encoding));
            }
        }
예제 #4
0
        internal FMPro3IOPropertyEncoding(FieldEncoding encoding)
            : base(encoding)
        {
            switch (encoding)
            {
            case FieldEncoding.Int8:
                break;

            case FieldEncoding.Int16:
                break;

            case FieldEncoding.Int32:
                break;

            case FieldEncoding.Int64:
                break;

            default:
                throw new NotSupportedException(string.Format("The field encoding ({0}) is not supported.", encoding));
            }
        }
예제 #5
0
        public IEnumerable <IoProperty> GetProperties(GlobalMaskCodec7 maskCodec7, GlobalMaskCodec7 flag, FieldEncoding encoding)
        {
            if (maskCodec7.HasFlag(flag))
            {
                return(DecodeIoElement(encoding).Properties.ToList());
            }

            return(null);
        }
 private GhIoElementEncoding(FieldEncoding encoding) => _fieldEncoding = encoding;
예제 #7
0
파일: InputSource.cs 프로젝트: sp0x/donut
        /// <summary>
        /// Create a new integration from an object instance
        /// </summary>
        /// <param name="firstInstance"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        protected Data.DataIntegration CreateIntegrationFromObj(dynamic firstInstance, string name)
        {
            Data.DataIntegration typeDef = null;
            if (firstInstance != null)
            {
                typeDef                = new Data.DataIntegration();
                typeDef.PublicKey      = ApiAuth.Generate();
                typeDef.DataEncoding   = Encoding.CodePage;
                typeDef.DataFormatType = Formatter.Name;
                typeDef.SetFieldsFromType(firstInstance);
            }
            //Apply field options
            foreach (var fieldOpPair in FieldOptions)
            {
                FieldDefinition targetField = typeDef.Fields.FirstOrDefault(x => x.Name == fieldOpPair.Key);
                var             fieldOp     = fieldOpPair.Value;
                if (targetField == null)
                {
                    if (fieldOp.ValueEvaluater != null)
                    {
                        var targetType = fieldOp.ValueEvaluater.ReturnType;
                        var virtField  = targetField = new FieldDefinition(fieldOpPair.Key, targetType);
                        virtField.Extras = new FieldExtras()
                        {
                            IsFake = true
                        };
                        typeDef.Fields.Add(virtField);
                    }
                    else
                    {
                        continue; //Maybe throw?
                    }
                }
                if (fieldOp.IgnoreField)
                {
                    typeDef.Fields.Remove(targetField);
                    continue;
                }
                var ops        = fieldOp;
                var stringName = typeof(String).Name;
                if (ops.IsString)
                {
                    targetField.Type = stringName;
                }
                if (ops.Encoding != null)
                {
                    FieldEncoding.SetEncoding(typeDef, targetField, ops.Encoding);
                }
                if (targetField.Type == stringName && targetField.Extras == null)
                {
                    targetField.DataEncoding = FieldDataEncoding.BinaryIntId;
                    targetField.Extras       = new FieldExtras();
                    //targetField.Extras.Field = targetField;
                }

                if (ops.Duplicates.Count > 0)
                {
                    foreach (var duplicate in ops.Duplicates)
                    {
                        var dupField = new FieldDefinition(duplicate, targetField.Type);
                        typeDef.Fields.Add(dupField);
                    }
                }
            }
            return(typeDef);
        }