/// <summary>
        /// Parse out extension field collection from extension object's extension field (ExtensionData).
        /// </summary>
        /// <param name="extensionObject"></param>
        /// <returns></returns>
        public IDictionary<string, object> Deserialize(IExtensionObject extensionObject)
        {
            if (Kit.IsEmpty(extensionObject.ExtensionData)) return new Dictionary<string, object>();
            StringBuilder output = new StringBuilder();

            XmlWriterSettings settings = new XmlWriterSettings()
            {
                Encoding = Encoding.UTF8,
                Indent = true
            };

            using (StringReader stringReader = new StringReader(extensionObject.ExtensionData))
            using (XmlReader xmlReader = XmlReader.Create(stringReader))
            {
                FieldCollection fieldValues = serializer.ReadObject(xmlReader) as FieldCollection;
                return fieldValues.ToDictionary(kvp => kvp.Name, kvp =>
                    {
                        // convert Utc datetime into client timezone for Date/DateTime fields.
                        IFieldValue fieldValue = kvp.Value;
                        DateTimeFieldValue dateTimeFieldValue = fieldValue as DateTimeFieldValue;
                        if (dateTimeFieldValue == null) return fieldValue.Value;

                        return LocalizationUtility.ConvertUtcTimeToClientTime(dateTimeFieldValue.Value);
                    });
            }
        }
 /// <summary>
 /// Writes <see cref="ILocalizedText" /> using the provided encoder <see cref="IBinaryEncoder" />.
 /// </summary>
 /// <param name="encoder">The encoder - an object implementing the <see cref="IBinaryEncoder" /> interface.</param>
 /// <param name="value">The value to be encoded.</param>
 public abstract void Write(IBinaryEncoder encoder, IExtensionObject value);
 public bool HandleCannotAddExtensionObject(IExtensionObjectsModule module, IExtensionObject extensionObject,
     Exception exception)
 {
     logger.Info(string.Format("({0}:{1}) -> {2}", module.Name, extensionObject.DataObject, exception));
     return true;
 }
Beispiel #4
0
 public void Write(IBinaryEncoder encoder, IExtensionObject value)
 {
     _encoder.Write(this, value);
 }
 public MissingRepositoryException(IExtensionObject extensionObject)
 {
     ExtensionObject = extensionObject;
 }
 public override void Write(IBinaryEncoder encoder, IExtensionObject value)
 {
     throw new NotImplementedException();
 }
 public void UnregisterLease(IExtensionObject eo)
 {
     _clientSponsor.Unregister((MarshalByRefObject)(object)eo);
 }
 public ExtensionObjectLoadingErrorInfo(IExtensionObject extensionObject, Exception exception)
 {
     ExtensionObject = extensionObject;
     Exception = exception;
 }
        /// <summary>
        /// Save extension field serilized into extension field (ExtensionData)
        /// </summary>
        /// <param name="extensionObject"></param>
        public void Serialize(IExtensionObject extensionObject)
        {
            FieldCollection fieldValues = new FieldCollection();
            IEnumerator<KeyValuePair<string, object>> fieldNameValueEnumerator = extensionObject.GetFieldEnumerator();
            while (fieldNameValueEnumerator.MoveNext())
            {
                KeyValuePair<string, object> fieldNameValuePair = fieldNameValueEnumerator.Current;

                using (ValidationScope validationScope = new ValidationScope())
                {
                    try
                    {
                        IFieldValue fieldValue = ConvertToFieldValueInterface(extensionObject.ExtensionDataTypeId, fieldNameValuePair.Key, fieldNameValuePair.Value);
                        if (fieldValue != null) fieldValues.Add(new FieldNameValuePair(fieldNameValuePair.Key, fieldValue));
                    }
                    catch (InvalidFieldValueException exp)
                    {
                        validationScope.Error(exp.Message);
                    }
                    catch (NotSupportedException exp)
                    {
                        validationScope.Error(exp.Message);
                    }
                }
            }

            StringBuilder output = new StringBuilder();

            XmlWriterSettings settings = new XmlWriterSettings()
            {
                Encoding = Encoding.UTF8,
                Indent = true
            };

            using (XmlWriter writer = XmlWriter.Create(output, settings))
            {
                serializer.WriteObject(writer, fieldValues);
            }

            extensionObject.ExtensionData = output.ToString();
        }
 /// <summary>
 /// Set properties of the extension object from controls.
 /// </summary>
 /// <param name="extensionObject"></param>
 public void SetObjectPropertiesFromControlValues(IExtensionObject extensionObject)
 {
     Dictionary<string, IFieldMetadata> fieldMetadataDictionary = fieldMetadataControlBuilders.Keys.ToDictionary(kvp => kvp.Name, kvp => kvp);
     foreach (string fieldName in fieldMetadataDictionary.Keys)
     {
         IFieldMetadata fieldMetadata = fieldMetadataDictionary[fieldName];
         IExtensionFieldControlBuilder fieldControlBuilder = this.fieldMetadataControlBuilders[fieldMetadata];
         extensionObject[fieldName] = fieldControlBuilder.Value;
     }
 }
 /// <summary>
 /// Set control value from extension object.
 /// </summary>
 /// <param name="extensionObject"></param>
 public void SetControlValuesFromObjectProperties(IExtensionObject extensionObject)
 {
     Dictionary<string, IFieldMetadata> fieldMetadataDictionary = this.fieldMetadataControlBuilders.Keys.ToDictionary(kvp => kvp.Name, kvp => kvp);
     IEnumerator<KeyValuePair<string, object>> iterator = extensionObject.GetFieldEnumerator();
     while (iterator.MoveNext())
     {
         KeyValuePair<string, object> property = iterator.Current;
         if (!fieldMetadataDictionary.ContainsKey(property.Key)) continue;
         IFieldMetadata fieldMetadata = fieldMetadataDictionary[property.Key];
         IExtensionFieldControlBuilder fieldControlBuilder = this.fieldMetadataControlBuilders[fieldMetadata];
         fieldControlBuilder.Value = property.Value;
     }
 }
 public override void Write(IBinaryEncoder encoder, IExtensionObject value)
 {
     throw new NotImplementedException();
 }
        private void RemoveExtensionObject(IExtensionObject extObject)
        {
            var repo = repositories.FirstOrDefault(r => r.Identifier.Equals(extObject.RepositoryIdentifier));

            if (repo == null)
                throw new MissingRepositoryException(extObject);

            repo.Remove(extObject.DataObject);
        }
 /// <summary>
 /// Parse extension properties of extensionObject into current extension object.
 /// </summary>
 /// <param name="extensionObject"></param>
 public void ParseExtensionPropertiesFrom(IExtensionObject extensionObject)
 {
     this.ExtensionDataTypeId = extensionObject.ExtensionDataTypeId;
     IEnumerator<KeyValuePair<string, object>> properties = extensionObject.GetFieldEnumerator();
     while (properties.MoveNext())
         this[properties.Current.Key] = properties.Current.Value;
 }