コード例 #1
0
        public ActionResult Save(MetadataStructureModel metadataStructureModel)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            try
            {
                if (ModelState.IsValid)
                {
                    MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(metadataStructureModel.Id);
                    metadataStructure = updateMetadataStructure(metadataStructure, metadataStructureModel);
                    metadataStructureManager.Update(metadataStructure);


                    return(Json(true));
                }

                return(Json(false));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message));
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
コード例 #2
0
ファイル: AdminController.cs プロジェクト: navabpourn/Core
        public ActionResult LoadMetadataStructureTab(long Id)
        {
            #region load Model

            DatasetManager datasetManager = new DatasetManager();
            try
            {
                // retrieves all the dataset version IDs which are in the checked-in state
                datasetVersionIds = datasetManager.GetDatasetVersionLatestIds();

                MetadataStructure metadataStructure = this.GetUnitOfWork().GetReadOnlyRepository <MetadataStructure>().Get(Id);

                MetadataStructureModel model = new MetadataStructureModel(
                    metadataStructure.Id,
                    metadataStructure.Name,
                    metadataStructure.Description,
                    getDatasetVersionsDic(metadataStructure, datasetVersionIds),
                    IsExportAvailable(metadataStructure)
                    );

                #endregion

                return(PartialView("_metadataStructureView", model));
            }
            finally
            {
                datasetManager.Dispose();
            }
        }
コード例 #3
0
        public ActionResult Save(MetadataStructureModel metadataStructureModel)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            DatasetManager           datasetManager           = new DatasetManager();

            try
            {
                if (ModelState.IsValid)
                {
                    MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(metadataStructureModel.Id);

                    metadataStructure = updateMetadataStructure(metadataStructure, metadataStructureModel);
                    metadataStructureManager.Update(metadataStructure);

                    //update dsv title and description if there is a change
                    //ToDo check if there is a change in the xpaths
                    // update datasetversion

                    // get all datasetIds which using the metadata structure
                    var datasetIds = datasetManager.DatasetRepo.Query().Where(d => d.MetadataStructure.Id.Equals(metadataStructure.Id)).Select(d => d.Id);

                    if (datasetIds.Any())
                    {
                        //get all datasetversions of the dataset ids
                        var datasetVersionIds = datasetManager.DatasetVersionRepo.Query().Where(dsv => datasetIds.Contains(dsv.Dataset.Id)).Select(dsv => dsv.Id).ToList();

                        //load all titles & descriptions from versions
                        var allTitles       = xmlDatasetHelper.GetInformationFromVersions(datasetVersionIds, metadataStructure.Id, NameAttributeValues.title);
                        var allDescriptions = xmlDatasetHelper.GetInformationFromVersions(datasetVersionIds, metadataStructure.Id, NameAttributeValues.description);


                        // update each datasetversion
                        foreach (var datasetVersionId in datasetVersionIds)
                        {
                            // load dataset version
                            var datasetVersion = datasetManager.GetDatasetVersion(datasetVersionId);

                            datasetVersion.Title       = allTitles.ContainsKey(datasetVersion.Id) ? allTitles[datasetVersion.Id] : string.Empty;
                            datasetVersion.Description = allDescriptions.ContainsKey(datasetVersion.Id) ? allDescriptions[datasetVersion.Id] : string.Empty;

                            datasetManager.UpdateDatasetVersion(datasetVersion);
                        }
                    }

                    return(Json(true));
                }

                return(Json(false));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message));
            }
            finally
            {
                metadataStructureManager.Dispose();
                datasetManager.Dispose();
            }
        }
コード例 #4
0
        public ActionResult Edit(long id)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            try
            {
                MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(id);

                MetadataStructureModel model = convertToMetadataStructureModel(metadataStructure, metadataStructureManager);

                return(PartialView("_editMetadataStructureView", model));
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
コード例 #5
0
ファイル: AdminController.cs プロジェクト: navabpourn/Core
        public ActionResult ConvertSelectedDatasetVersion(string Id, string SelectedDatasetIds)
        {
            #region load Model

            DatasetManager datasetManager = new DatasetManager();
            try
            {
                datasetVersionIds = datasetManager.GetDatasetVersionLatestIds();

                MetadataStructure metadataStructure = this.GetUnitOfWork().GetReadOnlyRepository <MetadataStructure>().Get(Convert.ToInt64(Id));

                MetadataStructureModel model = new MetadataStructureModel(
                    metadataStructure.Id,
                    metadataStructure.Name,
                    metadataStructure.Description,
                    getDatasetVersionsDic(metadataStructure, datasetVersionIds),
                    IsExportAvailable(metadataStructure)

                    );

                #endregion

                #region convert

                if (SelectedDatasetIds != null && SelectedDatasetIds != "")
                {
                    string[] ids = SelectedDatasetIds.Split(',');

                    foreach (string id in ids)
                    {
                        string path = Export(Convert.ToInt64(id));
                        model.AddMetadataPath(Convert.ToInt64(id), path);
                    }
                }

                #endregion

                return(PartialView("_metadataStructureView", model));
            }
            finally
            {
                datasetManager.Dispose();
            }
        }
コード例 #6
0
        private MetadataStructure updateMetadataStructure(MetadataStructure metadataStructure,
                                                          MetadataStructureModel metadataStructureModel)
        {
            if (metadataStructure.Id.Equals(metadataStructureModel.Id))
            {
                metadataStructure.Name = metadataStructureModel.Name;
                XmlDocument xmlDocument = new XmlDocument();
                if (metadataStructure.Extra != null)
                {
                    if (metadataStructure.Extra as XmlDocument != null)
                    {
                        xmlDocument = metadataStructure.Extra as XmlDocument;
                    }
                    else
                    {
                        xmlDocument.AppendChild(metadataStructure.Extra);
                    }
                }
                else
                {
                    xmlDocument = new XmlDocument();
                }

                metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructure.Id);

                //set title & description
                string titleXPath =
                    metadataStructureModel.MetadataNodes
                    .Where(e => e.DisplayName.Equals(metadataStructureModel.TitleNode))
                    .FirstOrDefault()
                    .XPath;

                XmlNode tmp = null;
                try
                {
                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement,
                                                           nodeNames.nodeRef.ToString(), AttributeNames.name.ToString(),
                                                           NameAttributeValues.title.ToString());
                    tmp.Attributes[AttributeNames.value.ToString()].Value = titleXPath;
                }
                catch
                {
                    xmlDocument = xmlDatasetHelper.AddReferenceToXml(xmlDocument, NameAttributeValues.title.ToString(),
                                                                     titleXPath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef");
                }

                string descriptionXPath =
                    metadataStructureModel.MetadataNodes
                    .Where(e => e.DisplayName.Equals(metadataStructureModel.DescriptionNode))
                    .FirstOrDefault()
                    .XPath;

                try
                {
                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.nodeRef.ToString(),
                                                           AttributeNames.name.ToString(), NameAttributeValues.description.ToString());
                    tmp.Attributes[AttributeNames.value.ToString()].Value = descriptionXPath;
                }
                catch
                {
                    xmlDocument = xmlDatasetHelper.AddReferenceToXml(xmlDocument, NameAttributeValues.description.ToString(),
                                                                     descriptionXPath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef");
                }

                //set entity
                tmp = XmlUtility.GetXmlNodeByName(xmlDocument.DocumentElement, nodeNames.entity.ToString());
                if (tmp != null)
                {
                    tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Entity.ClassPath;
                    tmp.Attributes[AttributeNames.name.ToString()].Value  = metadataStructureModel.Entity.Name;
                }
                else
                {
                    xmlDocument = xmlDatasetHelper.AddReferenceToXml(xmlDocument, nodeNames.entity.ToString(),
                                                                     metadataStructureModel.Entity.ClassPath, AttributeType.entity.ToString(), "extra/entity");
                }

                //set active
                tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.parameter.ToString(),
                                                       AttributeNames.name.ToString(), NameAttributeValues.active.ToString());
                if (tmp != null)
                {
                    tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Active.ToString();
                }
                else
                {
                    xmlDocument = xmlDatasetHelper.AddReferenceToXml(xmlDocument,
                                                                     NameAttributeValues.active.ToString(),
                                                                     metadataStructureModel.Active.ToString(), AttributeType.parameter.ToString(),
                                                                     "extra/parameters/parameter");
                }

                metadataStructure.Extra = xmlDocument;
            }
            return(metadataStructure);
        }
コード例 #7
0
        private MetadataStructureModel convertToMetadataStructureModel(MetadataStructure metadataStructure, MetadataStructureManager metadataStructureManager)
        {
            MetadataStructureModel metadataStructureModel = new MetadataStructureModel();

            metadataStructureModel.Id   = metadataStructure.Id;
            metadataStructureModel.Name = metadataStructure.Name;

            try
            {
                metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructure.Id);

                //get all informaions from xml
                metadataStructureModel.EntityClasses = GetEntityModelList();
                string EntityClassName = xmlDatasetHelper.GetEntityNameFromMetadatStructure(metadataStructure.Id, metadataStructureManager);

                var entityModel =
                    metadataStructureModel.EntityClasses.Where(e => e.Name.Equals(EntityClassName))
                    .FirstOrDefault();
                if (entityModel != null)
                {
                    metadataStructureModel.Entity = entityModel;
                }

                string xpath = xmlDatasetHelper.GetInformationPath(metadataStructure.Id, NameAttributeValues.title);

                var searchMetadataNode =
                    metadataStructureModel.MetadataNodes.Where(e => e.XPath.Equals(xpath)).FirstOrDefault();
                if (searchMetadataNode != null)
                {
                    metadataStructureModel.TitleNode =
                        searchMetadataNode.DisplayName;
                }

                xpath = xmlDatasetHelper.GetInformationPath(metadataStructure.Id,
                                                            NameAttributeValues.description);

                //check if xsd exist
                string schemapath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata",
                                                 metadataStructure.Name);

                if (Directory.Exists(schemapath) && Directory.GetFiles(schemapath).Length > 0)
                {
                    metadataStructureModel.HasSchema = true;
                }

                var firstOrDefault =
                    metadataStructureModel.MetadataNodes.Where(e => e.XPath.Equals(xpath)).FirstOrDefault();
                if (firstOrDefault != null)
                {
                    metadataStructureModel.DescriptionNode =
                        firstOrDefault.DisplayName;
                }

                metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructureModel.Id);

                metadataStructureModel.Active = xmlDatasetHelper.IsActive(metadataStructure.Id);
            }
            catch (Exception exception)
            {
                metadataStructureModel      = new MetadataStructureModel();
                metadataStructureModel.Id   = metadataStructure.Id;
                metadataStructureModel.Name = metadataStructure.Name;
            }

            return(metadataStructureModel);
        }
コード例 #8
0
        private MetadataStructure updateMetadataStructure(MetadataStructure metadataStructure,
            MetadataStructureModel metadataStructureModel)
        {
            if (metadataStructure.Id.Equals(metadataStructureModel.Id))
            {
                metadataStructure.Name = metadataStructureModel.Name;

                if (metadataStructure.Extra != null)
                {
                    XmlDocument xmlDocument = new XmlDocument();
                    if (metadataStructure.Extra as XmlDocument != null)
                        xmlDocument = metadataStructure.Extra as XmlDocument;
                    else
                    {
                        xmlDocument.AppendChild(metadataStructure.Extra);
                    }

                    metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructure.Id);

                    //set title & description
                    string titleXPath =
                        metadataStructureModel.MetadataNodes
                            .Where(e => e.DisplayName.Equals(metadataStructureModel.TitleNode))
                            .FirstOrDefault()
                            .XPath;

                    XmlNode tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement,
                        nodeNames.nodeRef.ToString(), AttributeNames.name.ToString(),
                        NameAttributeValues.title.ToString());

                    tmp.Attributes[AttributeNames.value.ToString()].Value = titleXPath;

                    string descriptionXPath =
                        metadataStructureModel.MetadataNodes
                            .Where(e => e.DisplayName.Equals(metadataStructureModel.DescriptionNode))
                            .FirstOrDefault()
                            .XPath;

                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.nodeRef.ToString(),
                        AttributeNames.name.ToString(), NameAttributeValues.description.ToString());
                    tmp.Attributes[AttributeNames.value.ToString()].Value = descriptionXPath;

                    //set entity
                    tmp = XmlUtility.GetXmlNodeByName(xmlDocument.DocumentElement, nodeNames.entity.ToString());
                    if (tmp != null)
                        tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Entity.ClassPath;
                    else
                    {
                        xmlDocument = XmlDatasetHelper.AddReferenceToXml(xmlDocument, nodeNames.entity.ToString(),
                            metadataStructureModel.Entity.ClassPath, AttributeType.entity.ToString(), "extra/entity");
                    }

                    //set active
                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.parameter.ToString(),
                        AttributeNames.name.ToString(), NameAttributeValues.active.ToString());
                    if (tmp != null)
                        tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Active.ToString();
                    else
                    {
                        xmlDocument = XmlDatasetHelper.AddReferenceToXml(xmlDocument,
                            NameAttributeValues.active.ToString(),
                            metadataStructureModel.Active.ToString(), AttributeType.parameter.ToString(),
                            "extra/parameters/parameter");

                    }

                    metadataStructure.Extra = xmlDocument;
                }

            }
            return metadataStructure;
        }
コード例 #9
0
        private MetadataStructureModel convertToMetadataStructureModel(MetadataStructure metadataStructure)
        {
            MetadataStructureModel metadataStructureModel = new MetadataStructureModel();
            metadataStructureModel.Id = metadataStructure.Id;
            metadataStructureModel.Name = metadataStructure.Name;

            try
            {
                metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructure.Id);

                //get all informaions from xml
                metadataStructureModel.EntityClasses = GetEntityModelList();
                string EntityClassPath = XmlDatasetHelper.GetEntityTypeFromMetadatStructure(metadataStructure.Id);
                var entityModel =
                    metadataStructureModel.EntityClasses.Where(e => e.ClassPath.Equals(EntityClassPath))
                        .FirstOrDefault();
                if (entityModel != null) metadataStructureModel.Entity = entityModel;

                string xpath = XmlDatasetHelper.GetInformationPath(metadataStructure, NameAttributeValues.title);

                var searchMetadataNode =
                    metadataStructureModel.MetadataNodes.Where(e => e.XPath.Equals(xpath)).FirstOrDefault();
                if (searchMetadataNode != null)
                    metadataStructureModel.TitleNode =
                        searchMetadataNode.DisplayName;

                xpath = XmlDatasetHelper.GetInformationPath(metadataStructure,
                    NameAttributeValues.description);

                //check if xsd exist
                string schemapath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata",
                    metadataStructure.Name);

                if (Directory.Exists(schemapath) && Directory.GetFiles(schemapath).Length > 0)
                    metadataStructureModel.HasSchema = true;

                var firstOrDefault =
                    metadataStructureModel.MetadataNodes.Where(e => e.XPath.Equals(xpath)).FirstOrDefault();
                if (firstOrDefault != null)
                    metadataStructureModel.DescriptionNode =
                        firstOrDefault.DisplayName;

                metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructureModel.Id);

                metadataStructureModel.Active = XmlDatasetHelper.IsActive(metadataStructure.Id);
            }
            catch(Exception exception)
            {
                metadataStructureModel = new MetadataStructureModel();
                metadataStructureModel.Id = metadataStructure.Id;
                metadataStructureModel.Name = metadataStructure.Name;
            }

            return metadataStructureModel;
        }
コード例 #10
0
        public ActionResult Save(MetadataStructureModel metadataStructureModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                    MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(metadataStructureModel.Id);
                    metadataStructure = updateMetadataStructure(metadataStructure, metadataStructureModel);
                    metadataStructureManager.Update(metadataStructure);

                }
                catch (Exception ex)
                {

                    return Json(ex.Message);
                }

                return Json(true);
            }

            return Json(false);
        }