Exemple #1
0
        public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            var message = (Message)value;

            return(message.Template.Encode(message, context));
        }
Exemple #2
0
        public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            if (HasTypeReference)
            {
                context.CurrentApplicationType = TypeReference;
            }
            if (value == null)
            {
                return(_length.Encode(null, encodeTemplate, context, presenceMapBuilder));
            }

            var buffer = new MemoryStream();
            var val    = (SequenceValue)value;
            int len    = val.Length;

            try
            {
                byte[] tmp = _length.Encode(new IntegerValue(len), encodeTemplate, context, presenceMapBuilder);
                buffer.Write(tmp, 0, tmp.Length);

                foreach (GroupValue v in val.Elements)
                {
                    tmp = _group.Encode(v, encodeTemplate, context);
                    buffer.Write(tmp, 0, tmp.Length);
                }
            }
            catch (IOException e)
            {
                Global.ErrorHandler.OnError(e, DynError.IoError, "An IO error occurred while encoding {0}", this);
            }

            return(buffer.ToArray());
        }
Exemple #3
0
 public QueryNode(string fieldName, IFieldValue fieldValue, QueryLogic logic, QueryType type)
 {
     this.FieldName = fieldName;
     this.FieldValue = fieldValue;
     this.Logic = logic;
     this.Type = type;
 }
        public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            if (value == null)
            {
                // Only encode null in the first field.
                return(_fields[0].Encode(null, encodeTemplate, context, presenceMapBuilder));
            }
            var buffer = new MemoryStream(_fields.Length * 8);

            IFieldValue[] values = _valueConverter.Split(value);
            for (int i = 0; i < _fields.Length; i++)
            {
                try
                {
                    byte[] tempByteArray = _fields[i].Encode(values[i], encodeTemplate, context, presenceMapBuilder);
                    buffer.Write(tempByteArray, 0, tempByteArray.Length);
                }
                catch (IOException e)
                {
                    throw new RuntimeException(e);
                }
            }
            return(buffer.ToArray());
        }
Exemple #5
0
        public override byte[] Encode(IFieldValue fieldValue, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            IDictionary dict = context.GetDictionary(Dictionary);

            ScalarValue priorValue = context.Lookup(dict, encodeTemplate, Key);
            var         value      = (ScalarValue)fieldValue;

            if (!_operatorCodec.CanEncode(value, this))
            {
                Global.ErrorHandler.OnError(null, DynError.CantEncodeValue,
                                            "The scalar {0} cannot encode the value {1}", this, value);
            }
            ScalarValue valueToEncode = _operatorCodec.GetValueToEncode(value, priorValue, this,
                                                                        presenceMapBuilder);

            if (_operator.ShouldStoreValue(value))
            {
                context.Store(dict, encodeTemplate, Key, value);
            }
            if (valueToEncode == null)
            {
                return(ByteUtil.EmptyByteArray);
            }
            byte[] encoding = _typeCodec.Encode(valueToEncode);
            if (context.TraceEnabled && encoding.Length > 0)
            {
                context.EncodeTrace.Field(this, fieldValue, valueToEncode, encoding, presenceMapBuilder.Index);
            }
            return(encoding);
        }
Exemple #6
0
 public PartialController(IUser iUser, IField iField, IFieldValue iFieldValue, ILibrary iLibrary, ICommon iCommon)
 {
     _iUser       = iUser;
     _iField      = iField;
     _iFieldValue = iFieldValue;
     _iLibrary    = iLibrary;
     _iCommon     = iCommon;
 }
 public IFieldValue Compose(IFieldValue[] values)
 {
     if (values[0] == null)
         return null;
     if (values[0] == ScalarValue.Undefined)
         return ScalarValue.Undefined;
     return new DecimalValue(((ScalarValue)values[1]).ToLong(), ((ScalarValue)values[0]).ToInt());
 }
Exemple #8
0
 public TraceField(Field field, IFieldValue value, IFieldValue encoded, int pmapIndex, byte[] encoding)
 {
     _field     = field;
     _value     = value;
     _encoded   = encoded;
     _pmapIndex = pmapIndex;
     _encoding  = encoding;
 }
 public void Field(Field field, IFieldValue value, IFieldValue decodedValue, byte[] encoding, int pmapIndex)
 {
     var scalarDecode = new StringBuilder();
     scalarDecode.Append(field.Name).Append(": ");
     scalarDecode.Append(ByteUtil.ConvertByteArrayToBitString(encoding));
     scalarDecode.Append(" -> ").Append(value).Append('(').Append(decodedValue).Append(')');
     Print(scalarDecode);
 }
 public IFieldValue[] Split(IFieldValue value)
 {
     if (value == null)
         return NullSet;
     if (value == ScalarValue.Undefined)
         return UndefinedSet;
     var decValue = (DecimalValue) value;
     return new IFieldValue[] {new IntegerValue(decValue.Exponent), new LongValue(decValue.Mantissa)};
 }
Exemple #11
0
        public void Field(Field field, IFieldValue value, IFieldValue decodedValue, byte[] encoding, int pmapIndex)
        {
            var scalarDecode = new StringBuilder();

            scalarDecode.Append(field.Name).Append(": ");
            scalarDecode.Append(ByteUtil.ConvertByteArrayToBitString(encoding));
            scalarDecode.Append(" -> ").Append(value).Append('(').Append(decodedValue).Append(')');
            Print(scalarDecode);
        }
Exemple #12
0
        public virtual IFieldValue Clone()
        {
            var copies = new IFieldValue[_values.Length];

            for (int i = 0; i < copies.Length; i++)
            {
                copies[i] = _values[i].Clone();
            }
            return(new GroupValue(_group, copies));
        }
Exemple #13
0
        public void SetFieldValue(string fieldName, IFieldValue value)
        {
            Field fld;

            if (!_group.TryGetField(fieldName, out fld))
            {
                throw new ArgumentOutOfRangeException("fieldName", fieldName,
                                                      "Field does not exist in group " + _group);
            }

            SetFieldValue(_group.GetFieldIndex(fld), value);
        }
Exemple #14
0
        public bool TryGetValue(string fieldName, out IFieldValue value)
        {
            int index;

            if (_group.TryGetFieldIndex(fieldName, out index))
            {
                value = _values[index];
                return(true);
            }
            value = null;
            return(false);
        }
Exemple #15
0
        public IFieldValue[] Split(IFieldValue value)
        {
            if (value == null)
            {
                return(NullSet);
            }
            if (value == ScalarValue.Undefined)
            {
                return(UndefinedSet);
            }
            var decValue = (DecimalValue)value;

            return(new IFieldValue[] { new IntegerValue(decValue.Exponent), new LongValue(decValue.Mantissa) });
        }
        public override IFieldValue Decode(Stream inStream, Group decodeTemplate, Context context,
                                           BitVectorReader presenceMapReader)
        {
            var values = new IFieldValue[_fields.Length];

            for (int i = 0; i < _fields.Length; i++)
            {
                values[i] = _fields[i].Decode(inStream, decodeTemplate, context, presenceMapReader);
                if (i == 0 && values[0] == null)
                {
                    return(null);
                }
            }
            return(_valueConverter.Compose(values));
        }
        public static Message Convert(Group group, Message groupMsg, ConversionContext context)
        {
            SetNameAndId(group, groupMsg);
            if (group.TypeReference != null && !FastConstants.AnyType.Equals(group.TypeReference))
            {
                var typeRef =
                    new GroupValue(
                        (Group)SessionControlProtocol11
                        .TypeRef
                        .GetField(new QName("TypeRef", SessionControlProtocol11.Namespace)));

                SetName(typeRef, group.TypeReference);
                groupMsg.SetFieldValue("TypeRef", typeRef);
            }

            var instructions = new SequenceValue(
                SessionControlProtocol11.TemplateDefinition.GetSequence("Instructions"));

            if (group.TypeReference != null && !FastConstants.AnyType.Equals(group.TypeReference))
            {
                var typeRef =
                    new GroupValue(
                        (Group)
                        SessionControlProtocol11
                        .TypeRef
                        .GetField(new QName("TypeRef", SessionControlProtocol11.Namespace)));

                SetName(typeRef, group.TypeReference);
                groupMsg.SetFieldValue("TypeRef", typeRef);
            }

            Field[] fields = group.FieldDefinitions;
            for (int i = group is MessageTemplate ? 1 : 0; i < fields.Length; i++)
            {
                Field field = fields[i];

                IFieldInstructionConverter converter = context.GetConverter(field);
                if (converter == null)
                {
                    throw new InvalidOperationException("No converter found for type " + field.GetType());
                }

                IFieldValue v = converter.Convert(field, context);
                instructions.Add(new[] { v });
            }
            groupMsg.SetFieldValue("Instructions", instructions);
            return(groupMsg);
        }
Exemple #18
0
        ////////////////////////////////////////////////////////

        /// <summary>
        /// 附加值
        /// </summary>
        public bool appendValue()
        {
            if (_decriptor == null)
            {
                return(false);
            }

            var valueFctry = valueFactroyManager.getFactory(_decriptor.typeCode);

            if (valueFctry != null)
            {
                _value = valueFctry.createValue(_decriptor.modifier);
                return(true);
            }

            return(false);
        }
Exemple #19
0
 public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                               BitVectorBuilder presenceMapBuilder)
 {
     byte[] encoding = Encode(value, encodeTemplate, context);
     if (IsOptional)
     {
         if (encoding.Length != 0)
         {
             presenceMapBuilder.Set();
         }
         else
         {
             presenceMapBuilder.Skip();
         }
     }
     return(encoding);
 }
        public GroupValue(Group group, IFieldValue[] values)
        {
            if (group == null) throw new ArgumentNullException("group");
            if (values == null) throw new ArgumentNullException("values");

            _group = group;
            _values = values;

            Field[] flds = group.Fields;
            for (int i = 0; i < flds.Length; i++)
            {
                var scalar = flds[i] as Scalar;
                if (scalar != null && scalar.Operator.Equals(Operator.Constant) && !scalar.IsOptional)
                {
                    values[i] = scalar.DefaultValue;
                }
            }
        }
Exemple #21
0
        private static void addDocumentNode(Dictionary <string, object> imgDatas, List <object> listData, IField documentNode)
        {
            IFieldValue value = documentNode.Value;

            if (value != null)
            {
                var key = documentNode.Name;
                var val = value.AsString;
                imgDatas.Add(key, val);
            }
            if (documentNode.Instances != null)
            {
                addDocumentNodeInstances(tempDatas, listData, documentNode.Instances);
            }
            else if (documentNode.Children != null)
            {
                //addDocumentNodeChildren(treeNode, documentNode.Children);
            }
        }
Exemple #22
0
        protected IFieldValue[] DecodeFieldValues(Stream inStream, Group template,
                                                  BitVectorReader pmapReader, Context context)
        {
            var values = new IFieldValue[_fields.Length];
            int start  = this is MessageTemplate ? 1 : 0;

            for (int fieldIndex = start; fieldIndex < _fields.Length; fieldIndex++)
            {
                Field field = _fields[fieldIndex];
                values[fieldIndex] = field.Decode(inStream, field.MessageTemplate ?? template, context, pmapReader);
            }

            if (pmapReader.HasMoreBitsSet)
            {
                Global.ErrorHandler.OnError(null, RepError.PmapTooManyBits,
                                            "The presence map {0} has too many bits for the group {1}", pmapReader, this);
            }

            return(values);
        }
 public ViewController(
     ILogger <ViewController> logger,
     ILibrary iLibrary,
     IUser iUser,
     ILibraryType iLibraryType,
     IItem iItem,
     IField iField,
     IDefaultField iDefaultField,
     IFieldValue iFieldValue,
     ICommon iCommon)
 {
     _logger        = logger;
     _iLibrary      = iLibrary;
     _iLibraryType  = iLibraryType;
     _iUser         = iUser;
     _iItem         = iItem;
     _iField        = iField;
     _iDefaultField = iDefaultField;
     _iFieldValue   = iFieldValue;
     _iCommon       = iCommon;
 }
Exemple #24
0
        public override IFieldValue Decode(Stream inStream, Group decodeTemplate, Context context,
                                           BitVectorReader pmapReader)
        {
            var         sequenceValue = new SequenceValue(this);
            IFieldValue lengthValue   = _length.Decode(inStream, decodeTemplate, context, pmapReader);

            if ((lengthValue == ScalarValue.Null) || (lengthValue == null))
            {
                return(null);
            }

            int len = ((IntegerValue)lengthValue).Value;

            for (int i = 0; i < len; i++)
            {
                sequenceValue.Add(
                    (GroupValue)_group.Decode(inStream, decodeTemplate, context, BitVectorReader.InfiniteTrue));
            }

            return(sequenceValue);
        }
Exemple #25
0
        public void TestDecode()
        {
            const string actual = "10000010 11100000 10000001 10000010 11100000 10000011 10000100";
            Stream       stream = ByteUtil.CreateByteStream(actual);

            var firstNumber = new Scalar("First Number", FastType.I32, Operator.Copy, ScalarValue.Undefined, false);
            var lastNumber  = new Scalar("Second Number", FastType.I32, Operator.Copy, ScalarValue.Undefined, false);
            var sequence1   = new Sequence("Contants", new Field[] { firstNumber, lastNumber }, false);

            var sequenceValue = new SequenceValue(sequence1);

            sequenceValue.Add(new IFieldValue[]
            {
                new IntegerValue(1), new IntegerValue(2)
            });
            sequenceValue.Add(new IFieldValue[]
            {
                new IntegerValue(3), new IntegerValue(4)
            });

            IFieldValue result = sequence1.Decode(stream, _template, _context, BitVectorReader.InfiniteTrue);

            Assert.AreEqual(sequenceValue, result);
        }
Exemple #26
0
 public SimpleField(IFieldValue fieldValue, string mp3tagFormat)
 {
     this.fieldValue   = fieldValue;
     this.mp3tagFormat = mp3tagFormat;
 }
Exemple #27
0
        protected IFieldValue[] DecodeFieldValues(Stream inStream, Group template,
                                                  BitVectorReader pmapReader, Context context)
        {
            var values = new IFieldValue[_fields.Length];
            int start = this is MessageTemplate ? 1 : 0;

            for (int fieldIndex = start; fieldIndex < _fields.Length; fieldIndex++)
            {
                Field field = _fields[fieldIndex];
                values[fieldIndex] = field.Decode(inStream, field.MessageTemplate ?? template, context, pmapReader);
            }

            if (pmapReader.HasMoreBitsSet)
            {
                Global.ErrorHandler.OnError(null, RepError.PmapTooManyBits,
                                            "The presence map {0} has too many bits for the group {1}", pmapReader, this);
            }

            return values;
        }
        public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            if (HasTypeReference)
                context.CurrentApplicationType = TypeReference;
            if (value == null)
                return _length.Encode(null, encodeTemplate, context, presenceMapBuilder);

            var buffer = new MemoryStream();
            var val = (SequenceValue) value;
            int len = val.Length;

            try
            {
                byte[] tmp = _length.Encode(new IntegerValue(len), encodeTemplate, context, presenceMapBuilder);
                buffer.Write(tmp, 0, tmp.Length);

                foreach (GroupValue v in val.Elements)
                {
                    tmp = _group.Encode(v, encodeTemplate, context);
                    buffer.Write(tmp, 0, tmp.Length);
                }
            }
            catch (IOException e)
            {
                Global.ErrorHandler.OnError(e, DynError.IoError, "An IO error occurred while encoding {0}", this);
            }

            return buffer.ToArray();
        }
Exemple #29
0
 public FieldRepo(DatabaseContext dbContext, IFieldValue iFieldValue)
 {
     _context     = dbContext;
     _iFieldValue = iFieldValue;
 }
Exemple #30
0
 public Message(MessageTemplate template, IFieldValue[] fieldValues)
     : base(template, fieldValues)
 {
     if (template == null) throw new ArgumentNullException("template");
     _template = template;
 }
Exemple #31
0
 private BetweenQuery(FieldType type, string name, IFieldValue greaterThanEqualTo, IFieldValue lessThanEqualTo)
 {
 }
Exemple #32
0
 public abstract byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                               BitVectorBuilder presenceMapBuilder);
Exemple #33
0
 public bool Equals(IFieldValue fieldVal)
 {
   return _name == fieldVal.Name && Extension.IsEqual(_value, fieldVal.Value);
 }
Exemple #34
0
 private static IFieldValue[] InitializeFieldValues(int fieldCount)
 {
     var fields = new IFieldValue[fieldCount];
     return fields;
 }
Exemple #35
0
        public byte[] Encode(IFieldValue value, Group template, Context context)
        {
            if (value == null)
            {
                return(ByteUtil.EmptyByteArray);
            }

            var groupValue = (GroupValue)value;

            if (context.TraceEnabled)
            {
                context.EncodeTrace.GroupStart(this);
            }
            var presenceMapBuilder = new BitVectorBuilder(template.MaxPresenceMapSize);

            try
            {
                var fieldEncodings = new byte[_fields.Length][];

                for (int fieldIndex = 0; fieldIndex < _fields.Length; fieldIndex++)
                {
                    IFieldValue fieldValue = groupValue.GetValue(fieldIndex);
                    Field       field      = _fields[fieldIndex];
                    if (!field.IsOptional && fieldValue == null)
                    {
                        Global.ErrorHandler.OnError(null, DynError.GeneralError, "Mandatory field {0} is null", field);
                        // BUG? error is ignored?
                    }
                    byte[] encoding = field.Encode(fieldValue, field.MessageTemplate ?? template, context,
                                                   presenceMapBuilder);
                    fieldEncodings[fieldIndex] = encoding;
                }
                var buffer = new MemoryStream();

                if (UsesPresenceMap)
                {
                    byte[] pmap = presenceMapBuilder.BitVector.TruncatedBytes;
                    if (context.TraceEnabled)
                    {
                        context.EncodeTrace.Pmap(pmap);
                    }
                    buffer.Write(pmap, 0, pmap.Length);
                }
                foreach (var t in fieldEncodings)
                {
                    if (t != null)
                    {
                        buffer.Write(t, 0, t.Length);
                    }
                }
                if (context.TraceEnabled)
                {
                    context.EncodeTrace.GroupEnd();
                }
                return(buffer.ToArray());
            }
            catch (IOException e)
            {
                throw new RuntimeException(e);
            }
        }
 public override byte[] Encode(IFieldValue value, Group encodeTemplate, Context context,
                               BitVectorBuilder presenceMapBuilder)
 {
     var message = (Message) value;
     return message.Template.Encode(message, context);
 }
        /// <summary>
        /// Validate this field.
        /// </summary>
        /// <param name="value">Value of field</param>
        /// <exception cref="InvalidFieldValueException">This extension field's value is invalid</exception>
        public void Validate(IFieldValue value)
        {
            if (value == null)
            {
                if (this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueCannotBeNull, this.Name));
            }
            else
            {
                EnumerationValueCollection selectedItems = value.Value as EnumerationValueCollection;
                if ((selectedItems == null || selectedItems.Count == 0) && this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.InvalidValueForSpecifiedField, this.Name));

                if (selectedItems != null && selectedItems.Count > 0)
                {
                    if (selectedItems.Count > 1 && this.SelectionMode == SelectionModes.Single)
                        throw new InvalidFieldValueException(string.Format(Resources.OnlySupportSingleSelectForSpecifiedField, this.Name));
                }

                List<string> allSelectionItemValues = this.Items.Select(i => i.Value).ToList();
                foreach (string selectionItemValue in selectedItems)
                    if (!allSelectionItemValues.Contains(selectionItemValue))
                        throw new InvalidFieldValueException(string.Format(Resources.OptionNotDefined, selectionItemValue));
            }
        }
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return false;
 }
Exemple #39
0
 public IFieldValue Copy(IFieldValue Source)
 {
     throw new NotImplementedException();
 }
 public void SetFieldValue(Field field, IFieldValue value)
 {
     SetFieldValue(_group.GetFieldIndex(field), value);
 }
Exemple #41
0
 public abstract bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue);
 public virtual void SetFieldValue(int fieldIndex, IFieldValue value)
 {
     _values[fieldIndex] = value;
 }
Exemple #43
0
 public bool SetField(eRecordBuffer Buffer, long Record, long Field, bool Original, IFieldValue Value)
 {
     throw new NotImplementedException();
 }
        public void SetFieldValue(string fieldName, IFieldValue value)
        {
            Field fld;
            if (!_group.TryGetField(fieldName, out fld))
                throw new ArgumentOutOfRangeException("fieldName", fieldName,
                                                      "Field does not exist in group " + _group);

            SetFieldValue(_group.GetFieldIndex(fld), value);
        }
Exemple #45
0
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return(_operatorCodec.IsPresenceMapBitSet(encoding, fieldValue));
 }
 public bool TryGetValue(string fieldName, out IFieldValue value)
 {
     int index;
     if (_group.TryGetFieldIndex(fieldName, out index))
     {
         value = _values[index];
         return true;
     }
     value = null;
     return false;
 }
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return(false);
 }
Exemple #48
0
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return _operatorCodec.IsPresenceMapBitSet(encoding, fieldValue);
 }
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return _length.IsPresenceMapBitSet(encoding, fieldValue);
 }
Exemple #50
0
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return(_length.IsPresenceMapBitSet(encoding, fieldValue));
 }
Exemple #51
0
 public override bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return encoding.Length != 0;
 }
 private BetweenQuery(FieldType type, string name, IFieldValue greaterThanEqualTo, IFieldValue lessThanEqualTo)
 {
 }
Exemple #53
0
        public override byte[] Encode(IFieldValue fieldValue, Group encodeTemplate, Context context,
                                      BitVectorBuilder presenceMapBuilder)
        {
            IDictionary dict = context.GetDictionary(Dictionary);

            ScalarValue priorValue = context.Lookup(dict, encodeTemplate, Key);
            var value = (ScalarValue) fieldValue;
            if (!_operatorCodec.CanEncode(value, this))
            {
                Global.ErrorHandler.OnError(null, DynError.CantEncodeValue,
                                            "The scalar {0} cannot encode the value {1}", this, value);
            }
            ScalarValue valueToEncode = _operatorCodec.GetValueToEncode(value, priorValue, this,
                                                                        presenceMapBuilder);
            if (_operator.ShouldStoreValue(value))
            {
                context.Store(dict, encodeTemplate, Key, value);
            }
            if (valueToEncode == null)
            {
                return ByteUtil.EmptyByteArray;
            }
            byte[] encoding = _typeCodec.Encode(valueToEncode);
            if (context.TraceEnabled && encoding.Length > 0)
            {
                context.EncodeTrace.Field(this, fieldValue, valueToEncode, encoding, presenceMapBuilder.Index);
            }
            return encoding;
        }
 public virtual IFieldValue Clone()
 {
     var copies = new IFieldValue[_values.Length];
     for (int i = 0; i < copies.Length; i++)
         copies[i] = _values[i].Clone();
     return new GroupValue(_group, copies);
 }
 private BetweenQuery(Field field, IFieldValue greaterThanEqualTo, IFieldValue lessThanEqualTo)
 {
     this.Field = field;
     this.GreaterThanEqualTo = greaterThanEqualTo;
     this.LessThanEqualTo = lessThanEqualTo;
 }
Exemple #56
0
 public FieldValue(IFieldValue orig)
 {
   _name = orig.Name;
   _value = orig.Value;
 }
        /// <summary>
        /// Validate this field.
        /// </summary>
        /// <param name="value">Value of field</param>
        /// <exception cref="InvalidFieldValueException">This extension field's value is invalid</exception>
        public void Validate(IFieldValue value)
        {
            if (value == null)
            {
                if (this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueCannotBeNull, this.Name));
            }
            else
            {
                int argumentValue = (int)value.Value;
                if (this.MaxValueSpecified && argumentValue > this.MaxValue)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueGreaterThanMaximalValue, this.Name, MaxValue));

                if (this.MinValueSpecified && argumentValue < this.MinValue)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueLessThanMinimalValue, this.Name, MinValue));
            }
        }
Exemple #58
0
 public virtual bool IsPresenceMapBitSet(byte[] encoding, IFieldValue fieldValue)
 {
     return(encoding.Length != 0);
 }
        /// <summary>
        /// Validate this field.
        /// </summary>
        /// <param name="value">Value of field</param>
        /// <exception cref="InvalidFieldValueException">This extension field's value is invalid</exception>
        public void Validate(IFieldValue value)
        {
            if (value == null)
            {
                if (this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueCannotBeNull, this.Name));
            }
            else
            {
                HierarchyNodeValueCollection selectedHierarchyNodes = value.Value as HierarchyNodeValueCollection;
                if ((selectedHierarchyNodes == null || selectedHierarchyNodes.Count == 0) && this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.InvalidValueForSpecifiedField, this.Name));

                if (selectedHierarchyNodes != null && selectedHierarchyNodes.Count > 0)
                {
                    if (selectedHierarchyNodes.Count > 1 && this.SelectionMode == SelectionModes.Single)
                        throw new InvalidFieldValueException(string.Format(Resources.OnlySupportSingleSelectForSpecifiedField, this.Name));
                }

                HashSet<string> hierarchyNodeValueHashSet = new HashSet<string>(GetAllDefinedHierarchyNodeValues(this.Node).Distinct());
                foreach (string hierarchyNodeValue in selectedHierarchyNodes)
                    if (!hierarchyNodeValueHashSet.Contains(hierarchyNodeValue))
                        throw new InvalidFieldValueException(string.Format(Resources.NoteValueNotDefinedInHierarchy, hierarchyNodeValue));
            }
        }
        /// <summary>
        /// Validate this field.
        /// </summary>
        /// <param name="value">Value of field</param>
        /// <exception cref="InvalidFieldValueException">This extension field's value is invalid</exception>
        public void Validate(IFieldValue value)
        {
            if (value == null)
            {
                if (this.IsRequired)
                    throw new InvalidFieldValueException(string.Format(Resources.FieldValueCannotBeNull, this.Name));
            }
            else
            {
                DateTime argumentDateTime = (DateTime)value.Value;
                if (this.MaxValue != null)
                {
                    DateTime maxDateTime = GetDateTimeValue(this.MaxValue);
                    if (argumentDateTime > maxDateTime)
                        throw new InvalidFieldValueException(string.Format(Resources.FieldValueGreaterThanMaximalValue, this.Name, maxDateTime));
                }

                if (this.MinValue != null)
                {
                    DateTime minDateTime = GetDateTimeValue(this.MinValue);
                    if (argumentDateTime < minDateTime)
                        throw new InvalidFieldValueException(string.Format(Resources.FieldValueLessThanMinimalValue, this.Name, minDateTime));
                }
            }
        }