public abstract void UpdateProject(ISpecIfMetadataWriter metadataWriter, SpecIF.DataModels.SpecIF project);
        protected void IntegrateProjectData(ISpecIfMetadataWriter metadataWriter,
                                            SpecIF.DataModels.SpecIF project,
                                            string integrationID = null)
        {
            string projectID = integrationID;

            if (project.DataTypes != null)
            {
                foreach (DataType dataType in project.DataTypes)
                {
                    dataType.ProjectID = projectID;
                    metadataWriter.AddDataType(dataType);
                }
            }

            if (project.PropertyClasses != null)
            {
                foreach (PropertyClass propertyClass in project.PropertyClasses)
                {
                    propertyClass.ProjectID = projectID;
                    metadataWriter.AddPropertyClass(propertyClass);
                }
            }

            if (project.ResourceClasses != null)
            {
                foreach (ResourceClass resourceClass in project.ResourceClasses)
                {
                    resourceClass.ProjectID = projectID;
                    metadataWriter.AddResourceClass(resourceClass);
                }
            }

            if (project.StatementClasses != null)
            {
                foreach (StatementClass statementClass in project.StatementClasses)
                {
                    statementClass.ProjectID = projectID;
                    metadataWriter.AddStatementClass(statementClass);
                }
            }

            // data
            if (project.Resources != null)
            {
                foreach (Resource resource in project.Resources)
                {
                    AddResource(resource);
                }
            }

            if (project.Statements != null)
            {
                foreach (Statement statement in project.Statements)
                {
                    AddStatement(statement);
                }
            }

            if (project.Hierarchies != null)
            {
                foreach (Node data in project.Hierarchies)
                {
                    AddHierarchy(data);
                }
            }
        }
 public abstract void AddProject(ISpecIfMetadataWriter metadataWriter, SpecIF.DataModels.SpecIF project, string integrationID = null);