/// <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; }
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; }