Beispiel #1
0
        protected override void CopyFrom(Metadata other)
        {
            if (other == null)
            {
                throw new ArgumentNullException("other");
            }

            base.CopyFrom(other);

            ComponentMetadata metadata = (ComponentMetadata)other;

            m_IOSpec                        = metadata.m_IOSpec.Clone();
            m_configWrapper                 = metadata.m_configWrapper.Clone();
            m_experimentLocationRoot        = metadata.m_experimentLocationRoot;
            m_componentMetadataDefinition   = metadata.m_componentMetadataDefinition;
            m_componentMetadataDefinitionID = metadata.m_componentMetadataDefinitionID;

            HasDeserializationError = metadata.HasDeserializationError;
            if (HasDeserializationError)
            {
                DeserializationErrorMessage = metadata.DeserializationErrorMessage;
            }

            m_tempConfigWrapper = metadata.m_tempConfigWrapper;
            m_tempIoSpec        = metadata.m_tempIoSpec;
            m_tempLabel         = metadata.m_tempLabel;
        }
Beispiel #2
0
        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public override Metadata Clone()
        {
            var clone = new ComponentMetadata(this);

            clone.CopyFrom(this);

            return(clone);
        }
 /// <summary>
 /// Prevents a default instance of the <see cref="ComponentMetadata"/> class from being created.
 /// </summary>
 /// <param name="other">The other.</param>
 private ComponentMetadata(ComponentMetadata other)
 {
     m_experimentLocationRoot = other.m_experimentLocationRoot;
     m_IOSpec = other.m_IOSpec.Clone();
     m_componentMetadataDefinition = other.m_componentMetadataDefinition;
     m_componentMetadataDefinitionID = other.m_componentMetadataDefinitionID;
     m_configWrapper = other.m_configWrapper.Clone();
     m_tempConfigWrapper = other.m_tempConfigWrapper;
     m_tempIoSpec = other.m_tempIoSpec;
     m_tempLabel = other.m_tempLabel;
 }
Beispiel #4
0
 /// <summary>
 /// Prevents a default instance of the <see cref="ComponentMetadata"/> class from being created.
 /// </summary>
 /// <param name="other">The other.</param>
 private ComponentMetadata(ComponentMetadata other)
 {
     m_experimentLocationRoot = other.m_experimentLocationRoot;
     m_IOSpec = other.m_IOSpec.Clone();
     m_componentMetadataDefinition   = other.m_componentMetadataDefinition;
     m_componentMetadataDefinitionID = other.m_componentMetadataDefinitionID;
     m_configWrapper     = other.m_configWrapper.Clone();
     m_tempConfigWrapper = other.m_tempConfigWrapper;
     m_tempIoSpec        = other.m_tempIoSpec;
     m_tempLabel         = other.m_tempLabel;
 }
Beispiel #5
0
        /// <summary>
        /// Determines whether the specified <see cref="System.Object"/> is equal to this s_instance.
        /// </summary>
        /// <param name="obj">The <see cref="System.Object"/> to compare with this s_instance.</param>
        /// <returns>
        ///   <c>true</c> if the specified <see cref="System.Object"/> is equal to this s_instance; otherwise, <c>false</c>.
        /// </returns>
        public override bool Equals(object obj)
        {
            ComponentMetadata other = obj as ComponentMetadata;

            if (other == null)
            {
                return(false);
            }

            bool isEqual = true;

            isEqual &= object.Equals(IOSpec, other.IOSpec);
            isEqual &= object.Equals(ComponentMetadataDefinitionID, other.ComponentMetadataDefinitionID);
            isEqual &= object.Equals(ConfigWrapper, other.ConfigWrapper);
            isEqual &= object.Equals(Label, other.Label);
            isEqual &= object.Equals(ComponentMetadataDefinition, other.ComponentMetadataDefinition);

            return(isEqual);
        }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ComponentLoader"/> class.
 /// 
 /// Note, that this component loader is constructed in the secondary App Domain via CreateInstanceAndUnwrap.
 /// (See LoadComponent method in the ComponentsLibrary).
 /// It is essential that this is done in another App Domain, so that the assembly can be unloaded, after
 /// experiment execution is completed. 
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="workspace">The workspace.</param>
 public ComponentLoader(ComponentMetadata metadata, IWorkspaceInternal workspace)
 {
     m_metadata = metadata;
     m_workspace = workspace;
 }
        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public override Metadata Clone()
        {
            var clone = new ComponentMetadata(this);
            clone.CopyFrom(this);

            return clone;
        }
        /// <summary>
        /// Checks the output mappings format for illegal characters.
        /// In particular it assures that mappings do not contain Workspace Namespace_Delimiter character.
        /// </summary>
        /// <param name="componentMetadata">The component metadata.</param>
        /// <param name="errorMessage">The error message, if method returns false</param>
        /// <returns>true, if there are no errors, otherwise false.</returns>
        private static bool CheckOutputMappingFormat(ComponentMetadata componentMetadata, out string errorMessage)
        {
            bool noErrors = true;

            StringBuilder error = new StringBuilder();

            //validate also if mappings do not contain illegal characters (in particular workspace namespace delimiter)
            foreach (IOItem item in componentMetadata.IOSpec.Output.Values)
            {
                if (item.MappedTo.Contains(TraceLab.Core.Workspaces.Workspace.NAMESPACE_DELIMITER))
                {
                    noErrors = false;
                    error.AppendLine(String.Format("Output mapping '{0}' cannot contain character '{1}'", item.MappedTo, TraceLab.Core.Workspaces.Workspace.NAMESPACE_DELIMITER));
                }
            }

            errorMessage = error.ToString();

            return noErrors;
        }
 /// <summary>
 /// Creates the workspace wrapper, which ensures that loading and storing of workspace items has been declared by the component.
 /// </summary>
 /// <param name="originalComponentMetadata">The component metadata.</param>
 /// <param name="workspaceInstance">The workspace instance.</param>
 /// <returns>created workspace wrapper</returns>
 public static WorkspaceWrapper CreateWorkspaceWrapper(ComponentMetadata componentMetadata, IWorkspaceInternal workspaceInstance)
 {
     return new WorkspaceWrapper(componentMetadata.IOSpec, workspaceInstance);
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ComponentLoader"/> class.
 ///
 /// Note, that this component loader is constructed in the secondary App Domain via CreateInstanceAndUnwrap.
 /// (See LoadComponent method in the ComponentsLibrary).
 /// It is essential that this is done in another App Domain, so that the assembly can be unloaded, after
 /// experiment execution is completed.
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="workspace">The workspace.</param>
 public ComponentLoader(ComponentMetadata metadata, IWorkspaceInternal workspace)
 {
     m_metadata  = metadata;
     m_workspace = workspace;
 }