public List <ListViewItem> LoadMetadataStructureViewList()
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            try
            {
                IEnumerable <MetadataStructure> metadataStructureList = metadataStructureManager.Repo.Get();

                List <ListViewItem> temp = new List <ListViewItem>();

                foreach (MetadataStructure metadataStructure in metadataStructureList)
                {
                    if (xmlDatasetHelper.IsActive(metadataStructure.Id) &&
                        xmlDatasetHelper.HasEntityType(metadataStructure.Id, "bexis.dlm.entities.data.dataset"))
                    {
                        string title = metadataStructure.Name;

                        temp.Add(new ListViewItem(metadataStructure.Id, title, metadataStructure.Description));
                    }
                }

                return(temp.OrderBy(p => p.Title).ToList());
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
Exemple #2
0
        public static List <LinkElementRootListItem> LoadSelectionList()
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            try
            {
                List <LinkElementRootListItem> tmp = new List <LinkElementRootListItem>();

                //load System
                LinkElementRootListItem li = new LinkElementRootListItem(0, "System", LinkElementType.System);

                tmp.Add(li);

                //load Metadata Strutcure
                IEnumerable <MetadataStructure> metadataStructures = metadataStructureManager.Repo.Get();

                foreach (var metadataStructure in metadataStructures)
                {
                    li = new LinkElementRootListItem(
                        metadataStructure.Id,
                        metadataStructure.Name,
                        LinkElementType.MetadataStructure
                        );

                    tmp.Add(li);
                }

                return(tmp);
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
Exemple #3
0
        /// It is called once prior to executing any of the tests in a fixture.
        /// Multiple methods can be marked. Order is not preserved.
        /// Inheritance is supported, call sequence form the parents
        public void OneTimeSetUp()
        {
            helper = new TestSetupHelper(WebApiConfig.Register, false);
            var dsHelper = new DatasetHelper();

            dsHelper.PurgeAllDatasets();
            dsHelper.PurgeAllDataStructures();
            dsHelper.PurgeAllResearchPlans();

            // gerenate datasets
            var mdm = new MetadataStructureManager();

            StructuredDataStructure dataStructure = dsHelper.CreateADataStructure();

            dataStructure.Should().NotBeNull("Failed to meet a precondition: a data strcuture is required.");

            var rp = dsHelper.CreateResearchPlan();

            rp.Should().NotBeNull("Failed to meet a precondition: a research plan is required.");

            var mds = mdm.Repo.Query().First();

            mds.Should().NotBeNull("Failed to meet a precondition: a metadata strcuture is required.");

            DatasetManager datasetManager = new DatasetManager();

            // because these tests are working on in-memory objects (datasets) only, there is no need to do the test app setup
            _numberOfDatasets = 1000;

            for (int i = 0; i < _numberOfDatasets; i++)
            {
                datasetManager.CreateEmptyDataset(dataStructure, rp, mds);
            }
        }
Exemple #4
0
        /// <summary>
        /// Return a value of the attribute from the incoming metadata
        /// </summary>
        /// <param name="datasetid"></param>
        /// <param name="metadata"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public string GetInformation(long datasetid, XmlDocument metadata, NameAttributeValues name)
        {
            using (var unitOfWork = this.GetUnitOfWork())
                using (DatasetManager dm = new DatasetManager())
                    using (MetadataStructureManager msm = new MetadataStructureManager())
                    {
                        if (datasetid <= 0)
                        {
                            return(String.Empty);
                        }

                        var dataset = dm.GetDataset(datasetid);


                        MetadataStructure metadataStructure = msm.Repo.Get(dataset.MetadataStructure.Id);

                        if ((XmlDocument)metadataStructure.Extra == null)
                        {
                            return(string.Empty);
                        }

                        XDocument xDoc = XmlUtility.ToXDocument((XmlDocument)metadataStructure.Extra);
                        XElement  temp = XmlUtility.GetXElementByAttribute(nodeNames.nodeRef.ToString(), "name", name.ToString(),
                                                                           xDoc);

                        string xpath = temp.Attribute("value").Value.ToString();
                        string value = metadata.SelectSingleNode(xpath).InnerText;

                        return(string.IsNullOrWhiteSpace(value) ? "not available" : value);
                    }
        }
Exemple #5
0
        /// <summary>
        /// Information in metadata is stored as xml
        /// get back the vale of an attribute
        /// e.g. title  = "dataset title"
        /// /// </summary>
        /// <param name="datasetVersion"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public string GetInformationFromVersion(long datasetVersionId, long metadataStructureId, NameAttributeValues name)
        {
            using (var unitOfWork = this.GetUnitOfWork())
                using (DatasetManager dm = new DatasetManager())
                    using (MetadataStructureManager msm = new MetadataStructureManager())
                    {
                        if (datasetVersionId <= 0)
                        {
                            return(String.Empty);
                        }
                        if (metadataStructureId <= 0)
                        {
                            return(String.Empty);
                        }

                        MetadataStructure metadataStructure = msm.Repo.Get(metadataStructureId);

                        if ((XmlDocument)metadataStructure.Extra == null)
                        {
                            return(string.Empty);
                        }

                        XDocument xDoc = XmlUtility.ToXDocument((XmlDocument)metadataStructure.Extra);
                        XElement  temp = XmlUtility.GetXElementByAttribute(nodeNames.nodeRef.ToString(), "name", name.ToString(),
                                                                           xDoc);

                        string xpath = temp.Attribute("value").Value.ToString();

                        return(dm.GetMetadataValueFromDatasetVersion(datasetVersionId, xpath));
                    }
        }
Exemple #6
0
        public static string GetSchemaDirectoryPath(long datasetId)
        {
            using (DatasetManager datasetManager = new DatasetManager())
                using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager())
                {
                    try
                    {
                        DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId);

                        MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(datasetVersion.Dataset.MetadataStructure.Id);

                        string path = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata",
                                                   metadataStructure.Name);

                        if (!String.IsNullOrEmpty(path) && Directory.Exists(path))
                        {
                            return(path);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }

            return(String.Empty);
        }
Exemple #7
0
        public static GFBIOPangaeaFormularObject GetGFBIOPangaeaFormularObject(long datasetId)
        {
            DatasetManager datasetManager = new DatasetManager();

            try
            {
                Dataset        dataset        = datasetManager.GetDataset(datasetId);
                DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId);

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure        metadataStructure        = metadataStructureManager.Repo.Get(dataset.MetadataStructure.Id);

                GFBIOPangaeaFormularObject gfbioPangaeaFormularObject = new GFBIOPangaeaFormularObject();

                XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper();

                string title       = xmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.title);
                string description = xmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.description);

                return(gfbioPangaeaFormularObject);
            }
            finally
            {
                datasetManager.Dispose();
            }
        }
Exemple #8
0
        public List <SearchMetadataNode> GetMetadataNodes()
        {
            if (_metadataNodes.Count > 0)
            {
                return(_metadataNodes);
            }
            else
            {
                using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager())
                {
                    List <long> ids = new List <long>();

                    ids = metadataStructureManager.Repo.Query().Select(p => p.Id).ToList();

                    foreach (long id in ids)
                    {
                        _metadataNodes.AddRange(GetAllXPathsOfSimpleAttributes(id));
                    }

                    _metadataNodes = _metadataNodes.Distinct().ToList();
                    _metadataNodes.Sort((x, y) => String.Compare(x.DisplayName, y.DisplayName));
                    return(_metadataNodes);
                }
            }
        }
Exemple #9
0
        public List <ListItem> GetMetadataStructureList()
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            XmlDatasetHelper         xmlDatasetHelper         = new XmlDatasetHelper();

            try
            {
                IEnumerable <MetadataStructure> metadataStructureList = metadataStructureManager.Repo.Get();

                List <ListItem> temp = new List <ListItem>();

                foreach (MetadataStructure metadataStructure in metadataStructureList)
                {
                    if (xmlDatasetHelper.IsActive(metadataStructure.Id) &&
                        xmlDatasetHelper.HasEntityType(metadataStructure.Id, "BExIS.Emm.Entities.Event.Event"))
                    {
                        string title = metadataStructure.Name;

                        temp.Add(new ListItem(metadataStructure.Id, title));
                    }
                }

                return(temp.OrderBy(p => p.Name).ToList());
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
        public static string GetMappingFileName(long id, TransmissionType transmissionType, string name)
        {
            using (MetadataStructureManager msm = new MetadataStructureManager())
            {
                MetadataStructure metadataStructure = msm.Repo.Get(id);

                // get MetadataStructure
                XDocument xDoc = XmlUtility.ToXDocument((XmlDocument)metadataStructure.Extra);



                List <XElement> tmpList =
                    XmlUtility.GetXElementsByAttribute(nodeNames.convertRef.ToString(), new Dictionary <string, string>()
                {
                    { AttributeNames.name.ToString(), name },
                    { AttributeNames.type.ToString(), transmissionType.ToString() }
                }, xDoc).ToList();

                if (tmpList.Count >= 1)
                {
                    return(tmpList.FirstOrDefault().Attribute("value").Value.ToString());
                }

                return(null);
            }
        }
Exemple #11
0
        public ActionResult DownloadSchema(long id)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

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

                string path = OutputMetadataManager.GetSchemaDirectoryPathFromMetadataStructure(id, metadataStructureManager);

                ZipFile zip = new ZipFile();
                if (Directory.Exists(path))
                {
                    zip.AddDirectory(path);
                }

                MemoryStream stream = new MemoryStream();
                zip.Save(stream);
                stream.Position = 0;
                var result = new FileStreamResult(stream, "application/zip")
                {
                    FileDownloadName = name + ".zip"
                };

                return(result);
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
        public List<SearchMetadataNode> GetAllXPathsOfSimpleAttributes()
        {
            List<SearchMetadataNode> list = new List<SearchMetadataNode>();

               TaskManager = (ImportMetadataStructureTaskManager)Session["TaskManager"];

            // load metadatastructure with all packages and attributes

               if (TaskManager.Bus.ContainsKey(ImportMetadataStructureTaskManager.METADATASTRUCTURE_ID))
               {
               long metadataStrutureId = Convert.ToInt64(TaskManager.Bus[ImportMetadataStructureTaskManager.METADATASTRUCTURE_ID]);
               MetadataStructureManager msd = new MetadataStructureManager();
               string title = msd.Repo.Get(metadataStrutureId).Name;

               XmlMetadataWriter xmlMetadatWriter = new XmlMetadataWriter(XmlNodeMode.xPath);
               XDocument metadataXml = xmlMetadatWriter.CreateMetadataXml(metadataStrutureId);

               List<XElement> elements = metadataXml.Root.Descendants().Where(e=>e.HasElements.Equals(false)).ToList();

               foreach(XElement element in elements )
               {
                   list.Add(
                     new SearchMetadataNode(title, XExtentsions.GetAbsoluteXPath(element).Substring(1))
                     );
               }
               }

               return list;
        }
Exemple #13
0
        private string getStorePath(long datasetVersionId, string exportTo)
        {
            using (DatasetManager datasetManager = new DatasetManager())
                using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager())
                {
                    DatasetVersion datasetVersion = datasetManager.GetDatasetVersion(datasetVersionId);

                    Dataset dataset = datasetManager.GetDataset(datasetVersionId);

                    string md_title = metadataStructureManager.Repo.Get(datasetVersion.Dataset.MetadataStructure.Id).Name;

                    string path;

                    int versionNr = datasetManager.GetDatasetVersionNr(datasetVersion);

                    if (string.IsNullOrEmpty(exportTo) || exportTo.ToLower().Equals("generic"))
                    {
                        path = IOHelper.GetDynamicStorePath(datasetVersion.Dataset.Id, versionNr, "metadata", ".xml");
                    }
                    else
                    {
                        path = IOHelper.GetDynamicStorePath(datasetVersion.Dataset.Id, versionNr, "metadata_" + exportTo, ".xml");
                    }

                    return(path);
                }
        }
Exemple #14
0
        private MetadataStructureManagerModel GetDefaultModel()
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            try
            {
                MetadataStructureManagerModel tmp = new MetadataStructureManagerModel();

                //load all metadatastructure
                IEnumerable <MetadataStructure> metadataStructures = metadataStructureManager.Repo.Get();

                foreach (var metadataStructure in metadataStructures)
                {
                    tmp.MetadataStructureModels.Add(convertToMetadataStructureModel(metadataStructure, metadataStructureManager));
                }

                if (tmp.MetadataStructureModels.Any())
                {
                    tmp.MetadataStructureModels = tmp.MetadataStructureModels.OrderBy(m => m.Id).ToList();
                }

                return(tmp);
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
Exemple #15
0
        public ActionResult Delete(long id)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();


            try
            {
                MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(id);
                // delete local files
                if (XmlSchemaManager.Delete(metadataStructure))
                {
                    metadataStructureManager.Delete(metadataStructure);
                }

                if (metadataStructureManager.Repo.Get(id) == null)
                {
                    return(Json(true));
                }

                return(Json(false));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message));
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
        public ActionResult CancelUpload()
        {
            TaskManager = (ImportMetadataStructureTaskManager)Session["Taskmanager"];

            // delete created metadatastructure
            #region delete mds

            if (TaskManager.Bus.ContainsKey(ImportMetadataStructureTaskManager.SCHEMA_NAME))
            {
                string schemaName = TaskManager.Bus[ImportMetadataStructureTaskManager.SCHEMA_NAME].ToString();
                MetadataStructureManager msm = new MetadataStructureManager();

                if (msm.Repo.Query(m => m.Name.Equals(schemaName)).Any())
                {
                    MetadataStructure ms = msm.Repo.Query(m => m.Name.Equals(schemaName)).FirstOrDefault();
                    msm.Delete(ms);
                }
            }

            #endregion
            Session["Taskmanager"] = null;
            TaskManager = null;

            return RedirectToAction("ImportMetadataStructureWizard", "ImportMetadataStructure", new RouteValueDictionary { { "area", "DCM" } });
        }
Exemple #17
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();
            }
        }
Exemple #18
0
        public ActionResult SheetSelectMetaData(int index)
        {
            MetadataStructureManager msm = new MetadataStructureManager();

            try
            {
                TaskManager = (EasyUploadTaskManager)Session["TaskManager"];

                //set current stepinfo based on index
                if (TaskManager != null)
                {
                    TaskManager.SetCurrent(index);

                    // remove if existing
                    TaskManager.RemoveExecutedStep(TaskManager.Current());
                }

                SelectMetaDataModel model = new SelectMetaDataModel();

                //Load available metadata structures
                IEnumerable <MetadataStructure> metadataStructureList = msm.Repo.Get();

                foreach (MetadataStructure metadataStructure in metadataStructureList)
                {
                    if (xmlDatasetHelper.IsActive(metadataStructure.Id) &&
                        xmlDatasetHelper.HasEntityType(metadataStructure.Id, "bexis.dlm.entities.data.dataset"))
                    {
                        model.AvailableMetadata.Add(new Tuple <long, string>(metadataStructure.Id, metadataStructure.Name));
                    }
                }
                //Sort the metadata structures
                model.AvailableMetadata.Sort((md1, md2) => md1.Item1.CompareTo(md2.Item1));

                //If there's already a selected Metadata schema, load its id into the model
                if (TaskManager.Bus.ContainsKey(EasyUploadTaskManager.SCHEMA))
                {
                    model.SelectedMetaDataId = Convert.ToInt64(TaskManager.Bus[EasyUploadTaskManager.SCHEMA]);
                }

                //if the title was changed at some point during the upload, load the title into the model
                if (TaskManager.Bus.ContainsKey(EasyUploadTaskManager.DESCRIPTIONTITLE))
                {
                    model.DescriptionTitle = Convert.ToString(TaskManager.Bus[EasyUploadTaskManager.DESCRIPTIONTITLE]);
                }
                //if it wasn't changed yet, the default title is the filename
                else
                {
                    model.DescriptionTitle = Convert.ToString(TaskManager.Bus[EasyUploadTaskManager.FILENAME]);
                }

                model.StepInfo = TaskManager.Current();

                return(PartialView(model));
            }
            finally
            {
                msm.Dispose();
            }
        }
        public ActionResult LoadMetaDataForm(SetupModel model)
        {
            if (model.SelectedMetadataStructureId == -1)
            {
                ModelState.AddModelError("SelectedMetadataStructureId", "Please select a metadata structure.");
            }

            if (ModelState.IsValid)
            {
                using (var metadataStructureManager = new MetadataStructureManager())
                    using (var entityManager = new EntityManager())
                        using (var researchPlanManager = new ResearchPlanManager())
                        {
                            var md = metadataStructureManager.Repo.Get(a => a.Id == model.SelectedMetadataStructureId).FirstOrDefault();

                            //get entitytype
                            var entityType = entityManager.FindByName("Publication");

                            if (md != null)
                            {
                                CreateTaskmanager taskManager = new CreateTaskmanager();
                                taskManager.AddToBus(CreateTaskmanager.METADATASTRUCTURE_ID, md.Id);

                                taskManager.AddToBus(CreateTaskmanager.SAVE_WITH_ERRORS, true);
                                taskManager.AddToBus(CreateTaskmanager.NO_IMPORT_ACTION, true);

                                taskManager.AddToBus(CreateTaskmanager.INFO_ON_TOP_TITLE, "Edit Publication");
                                taskManager.AddToBus(CreateTaskmanager.INFO_ON_TOP_DESCRIPTION, "<p>Here you can enter metadata for your new dataset. The form varies according to the metadata structure you selected in the first step. Mandatory fields are indicated with an red asterisk. You can add, remove, or re - order elements(e.g.multiple Creators) using the buttons at the right.</p>");

                                // get existing researchPlan
                                string       researchPlanName = "Research plan";
                                ResearchPlan researchPlan     = researchPlanManager.Repo.Get(r => researchPlanName.Equals(r.Title)).FirstOrDefault();
                                taskManager.AddToBus(CreateTaskmanager.RESEARCHPLAN_ID, researchPlan.Id);

                                //create unstructured datastructure
                                DataStructure dataStructure = CreateDataStructure("Publication") as UnStructuredDataStructure;
                                taskManager.AddToBus(CreateTaskmanager.DATASTRUCTURE_ID, dataStructure.Id);

                                HttpContext.Session["CreateDatasetTaskmanager"] = taskManager;
                                setAdditionalFunctions();

                                var view = this.Render("DCM", "Form", "StartMetadataEditor", new RouteValueDictionary()
                                {
                                });

                                return(Content(view.ToHtmlString(), "text/html"));
                            }

                            else
                            {
                                return(Content("Metadata structure not exsits"));
                            }
                        }
            }
            else
            {
                return(Content("Metadata structure not exsits"));
            }
        }
        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();
            }
        }
Exemple #21
0
        public ActionResult CreateTestDatasets(int n)
        {
            DatasetManager           datasetManager           = new DatasetManager();
            DataStructureManager     dataStructureManager     = new DataStructureManager();
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            ResearchPlanManager      researchPlanManager      = new ResearchPlanManager();


            try
            {
                var structure         = dataStructureManager.UnStructuredDataStructureRepo.Get(1);
                var metadatastructure = metadataStructureManager.Repo.Get(1);
                var researchplan      = researchPlanManager.Repo.Get(1);
                var xmlDatasetHelper  = new XmlDatasetHelper();

                var xmlMetadatWriter = new XmlMetadataWriter(XmlNodeMode.xPath);
                var metadataXml      = xmlMetadatWriter.CreateMetadataXml(metadatastructure.Id);

                for (int i = 0; i < n; i++)
                {
                    var dataset = datasetManager.CreateEmptyDataset(structure, researchplan, metadatastructure);


                    if (datasetManager.IsDatasetCheckedOutFor(dataset.Id, "test") || datasetManager.CheckOutDataset(dataset.Id, "test"))
                    {
                        DatasetVersion workingCopy = datasetManager.GetDatasetWorkingCopy(dataset.Id);

                        datasetManager.EditDatasetVersion(workingCopy, null, null, null);
                        datasetManager.CheckInDataset(dataset.Id, "", "test", ViewCreationBehavior.None);


                        workingCopy.Metadata = Xml.Helpers.XmlWriter.ToXmlDocument(metadataXml);

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

                        workingCopy.Metadata.SelectSingleNode(xpath).InnerText = i.ToString();
                        workingCopy.Title = i.ToString();

                        datasetManager.EditDatasetVersion(workingCopy, null, null, null);
                        datasetManager.CheckInDataset(dataset.Id, "", "test", ViewCreationBehavior.None);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                datasetManager.Dispose();
                dataStructureManager.Dispose();
                metadataStructureManager.Dispose();
                researchPlanManager.Dispose();
            }


            return(View("Index"));
        }
        //copy of BExIS.Modules.Ddm.UI.Controllers.DataController.Show (unchanged)
        public ActionResult Show(long id, long version = 0)
        {
            //get the researchobject (cuurently called dataset) to get the id of a metadata structure
            Dataset researcobject       = this.GetUnitOfWork().GetReadOnlyRepository <Dataset>().Get(id);
            long    metadataStrutcureId = researcobject.MetadataStructure.Id;

            using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager())
            {
                string entityName = xmlDatasetHelper.GetEntityNameFromMetadatStructure(metadataStrutcureId, metadataStructureManager);
                string entityType = xmlDatasetHelper.GetEntityTypeFromMetadatStructure(metadataStrutcureId, metadataStructureManager);

                //ToDo in the entity table there must be the information
                using (EntityManager entityManager = new EntityManager())
                {
                    var entity = entityManager.Entities.Where(e => e.Name.Equals(entityName)).FirstOrDefault();

                    string moduleId = "";
                    Tuple <string, string, string> action = null;
                    string defaultAction = "ShowData";

                    if (entity != null && entity.Extra != null)
                    {
                        var node = entity.Extra.SelectSingleNode("extra/modules/module");

                        if (node != null)
                        {
                            moduleId = node.Attributes["value"].Value;
                        }

                        string modus = "show";

                        action = EntityViewerHelper.GetEntityViewAction(entityName, moduleId, modus);
                    }
                    if (action == null)
                    {
                        RedirectToAction(defaultAction, new { id, version });
                    }

                    try
                    {
                        if (version == 0)
                        {
                            return(RedirectToAction(action.Item3, action.Item2, new { area = action.Item1, id }));
                        }
                        else
                        {
                            return(RedirectToAction(action.Item3, action.Item2, new { area = action.Item1, id, version }));
                        }
                    }
                    catch
                    {
                        return(RedirectToAction(defaultAction, new { id, version }));
                    }
                }
            }
        }
Exemple #23
0
        public static string CreateConvertedMetadata(long datasetId, TransmissionType type)
        {
            XmlDocument              newXml;
            DatasetManager           datasetManager = new DatasetManager();
            MetadataStructureManager metadataMetadataStructureManager = new MetadataStructureManager();

            try
            {
                DatasetVersion    datasetVersion    = datasetManager.GetDatasetLatestVersion(datasetId);
                MetadataStructure metadataStructure = metadataMetadataStructureManager.Repo.Get(datasetVersion.Dataset.MetadataStructure.Id);
                XmlDatasetHelper  xmlDatasetHelper  = new XmlDatasetHelper();

                int    versionNr   = datasetManager.GetDatasetVersionNr(datasetVersion);
                string mappingName = metadataStructure.Name;

                string mappingFileName = xmlDatasetHelper.GetTransmissionInformation(datasetVersion.Id, type, mappingName);
                //if mapping file not exist
                if (string.IsNullOrEmpty(mappingFileName))
                {
                    return("");
                }
                string pathMappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), mappingFileName);

                XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.InternToExtern);
                xmlMapperManager.Load(pathMappingFile, "exporttest");

                newXml = xmlMapperManager.Export(datasetVersion.Metadata, datasetVersion.Id, mappingName, true);

                string title = datasetVersion.Title;

                // store in content descriptor
                string filename = "metadata";
                if (String.IsNullOrEmpty(mappingName) || mappingName.ToLower() == "generic")
                {
                    storeGeneratedFilePathToContentDiscriptor(datasetId, datasetVersion, filename, ".xml");
                }
                else
                {
                    filename = "metadata_" + mappingName;
                    storeGeneratedFilePathToContentDiscriptor(datasetId, datasetVersion, filename,
                                                              ".xml");
                }

                return(OutputDatasetManager.GetDynamicDatasetStorePath(datasetId, versionNr, filename, ".xml"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                datasetManager.Dispose();
                metadataMetadataStructureManager.Dispose();
            }
        }
Exemple #24
0
        public string Convert(long datasetVersionId)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            DatasetManager           datasetManager           = new DatasetManager();


            SubmissionManager  submissionManager  = new SubmissionManager();
            PublicationManager publicationManager = new PublicationManager();


            try
            {
                DatasetVersion datasetVersion = datasetManager.GetDatasetVersion(datasetVersionId);

                _broker   = publicationManager.GetBroker(_broker.Id);
                _dataRepo = publicationManager.GetRepository(_dataRepo.Id);


                long   datasetId = datasetVersion.Dataset.Id;
                string name      = datasetManager.GetDatasetVersion(datasetVersionId).Dataset.MetadataStructure.Name;

                XmlDocument metadata = OutputMetadataManager.GetConvertedMetadata(datasetId,
                                                                                  TransmissionType.mappingFileExport, name, false);

                // create links to the api calls of the primary data?



                //add all to a zip


                //save document  and return filepath for download


                string path     = submissionManager.GetDirectoryPath(datasetId, _broker.Name);
                string filename = submissionManager.GetFileNameForDataRepo(datasetId, datasetVersionId, _dataRepo.Name, "xml");

                string filepath = Path.Combine(path, filename);

                FileHelper.CreateDicrectoriesIfNotExist(path);

                metadata.Save(filepath);


                return(filepath);
            }
            finally
            {
                datasetManager.Dispose();
                metadataStructureManager.Dispose();
                publicationManager.Dispose();
            }
        }
Exemple #25
0
        public bool SchemaNameExist(string SchemaName)
        {
            MetadataStructureManager msm = new MetadataStructureManager();

            if (msm.Repo.Get().Where(m => m.Name.ToLower().Equals(SchemaName.ToLower())).Count() > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #26
0
        private static List <LinkElementModel> getChildrenFromMetadataPackageUsage(LinkElementModel model)
        {
            MetadataStructureManager msm = new MetadataStructureManager();

            try
            {
                MetadataPackageUsage metadataPackageUsage = msm.PackageUsageRepo.Get(model.ElementId);

                return(getChildrenFromMetadataPackage(metadataPackageUsage.MetadataPackage.Id, model.Position));
            }
            finally
            {
                msm.Dispose();
            }
        }
Exemple #27
0
        public static GFBIODataCenterFormularObject GetGFBIODataCenterFormularObject(long datasetId)
        {
            DatasetManager datasetManager = new DatasetManager();

            try
            {
                Dataset          dataset          = datasetManager.GetDataset(datasetId);
                DatasetVersion   datasetVersion   = datasetManager.GetDatasetLatestVersion(datasetId);
                XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper();

                GFBIODataCenterFormularObject gfbioDataCenterFormularObject = new GFBIODataCenterFormularObject();

                //gfbioDataCenterFormularObject.ProjectId = 1;
                //gfbioDataCenterFormularObject.ProjectTitle = "Test Poject title";
                //gfbioDataCenterFormularObject.ProjectLabel = "Test Poject label";
                //gfbioDataCenterFormularObject.ProjectAbstract = "";
                //gfbioDataCenterFormularObject.ProjectPi = "ProjectPi";

                //gfbioDataCenterFormularObject.UserId = 1;
                //gfbioDataCenterFormularObject.UserName = "******";
                //gfbioDataCenterFormularObject.UserEmail = "testEmail";
                //gfbioDataCenterFormularObject.DatasetAuthor = "TestAuthor";

                gfbioDataCenterFormularObject.DatasetId          = datasetId;
                gfbioDataCenterFormularObject.DatasetVersion     = datasetVersion.Id;
                gfbioDataCenterFormularObject.License            = "";
                gfbioDataCenterFormularObject.DatasetTitle       = xmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.title);
                gfbioDataCenterFormularObject.DatasetLabel       = xmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.title);
                gfbioDataCenterFormularObject.DatasetDescription = xmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.description);
                //gfbioDataCenterFormularObject.DatasetAuthors = new List<string>();



                gfbioDataCenterFormularObject.DatasetCollectionTime = datasetVersion.Dataset.LastCheckIOTimestamp;

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure        metadataStructure        = metadataStructureManager.Repo.Get(dataset.MetadataStructure.Id);

                gfbioDataCenterFormularObject.MetadataSchemaName = metadataStructure.Name;


                return(gfbioDataCenterFormularObject);
            }
            finally
            {
                datasetManager.Dispose();
            }
        }
        public void CreateDatasetVersionTest()
        {
            long numberOfTuples = 1000;
            var  dm             = new DatasetManager();
            var  rsm            = new ResearchPlanManager();
            var  mdm            = new MetadataStructureManager();

            try
            {
                var dsHelper = new DatasetHelper();
                StructuredDataStructure dataStructure = dsHelper.CreateADataStructure();
                dataStructure.Should().NotBeNull("Failed to meet a precondition: a data strcuture is required.");

                var rp = dsHelper.CreateResearchPlan();
                rp.Should().NotBeNull("Failed to meet a precondition: a research plan is required.");

                var mds = mdm.Repo.Query().First();
                mds.Should().NotBeNull("Failed to meet a precondition: a metadata strcuture is required.");

                Dataset dataset = dm.CreateEmptyDataset(dataStructure, rp, mds);
                dataset = dsHelper.GenerateTuplesForDataset(dataset, dataStructure, numberOfTuples, "Javad");
                dataset.Should().NotBeNull("The dataset tuple generation has failed!");

                dm.CheckInDataset(dataset.Id, "for testing purposes 2", "Javad", ViewCreationBehavior.None);
                //dm.SyncView(ds.Id, ViewCreationBehavior.Create);
                //dm.SyncView(ds.Id, ViewCreationBehavior.Refresh);
                dm.SyncView(dataset.Id, ViewCreationBehavior.Create | ViewCreationBehavior.Refresh);

                dataset.Id.Should().BeGreaterThan(0, "Dataset was not persisted.");
                dataset.LastCheckIOTimestamp.Should().NotBeAfter(DateTime.UtcNow, "The dataset's timestamp is wrong.");
                dataset.DataStructure.Should().NotBeNull("Dataset must have a data structure.");
                dataset.Status.Should().Be(DatasetStatus.CheckedIn, "Dataset must be in the CheckedIn status.");
                dm.GetDatasetLatestVersionEffectiveTupleCount(dataset.Id).Should().Be(numberOfTuples);

                dm.DatasetVersionRepo.Evict();
                dm.DataTupleRepo.Evict();
                dm.DatasetRepo.Evict();
                dm.PurgeDataset(dataset.Id, true);

                dsHelper.PurgeAllDataStructures();
            }
            finally
            {
                dm.Dispose();
                rsm.Dispose();
                mdm.Dispose();
            }
        }
Exemple #29
0
        public static LinkElementRootModel LoadFromMetadataStructure(long id, LinkElementPostion rootModelType, MappingManager mappingManager)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

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

                LinkElementRootModel model = new LinkElementRootModel(LinkElementType.MetadataStructure, id, metadataStructure.Name, rootModelType);

                if (metadataStructure != null)
                {
                    LinkElement metadataStructureLinkElement = mappingManager.GetLinkElement(metadataStructure.Id,
                                                                                             LinkElementType.MetadataStructure);

                    long metadataStructureLinkElementId = 0;
                    if (metadataStructureLinkElement != null)
                    {
                        metadataStructureLinkElementId = metadataStructureLinkElement.Id;
                    }


                    LinkElementModel LEModel = new LinkElementModel(
                        metadataStructureLinkElementId,
                        metadataStructure.Id,
                        LinkElementType.MetadataStructure,
                        metadataStructure.Name, "Metadata",
                        rootModelType,
                        LinkElementComplexity.Complex,
                        metadataStructure.Description);


                    foreach (var pUsage in metadataStructure.MetadataPackageUsages)
                    {
                        addUsageAsLinkElement(pUsage, "Metadata", model, LEModel);
                    }

                    model    = CreateLinkElementContainerModels(model);
                    model.Id = id;
                }
                return(model);
            }
            finally
            {
                metadataStructureManager.Dispose();
            }
        }
Exemple #30
0
        /// <summary>
        /// </summary>
        /// <param name="id"></param>
        /// <param name="titlePath"></param>
        /// <param name="descriptionPath"></param>
        /// <param name="mappingFilePath"></param>
        /// <param name="direction"></param>
        private void StoreParametersToMetadataStruture(long id, string titlePath, string descriptionPath, string entity, string mappingFilePathImport, string mappingFilePathExport)
        {
            MetadataStructureManager mdsManager    = new MetadataStructureManager();
            EntityManager            entityManager = new EntityManager();

            try
            {
                MetadataStructure metadataStructure = this.GetUnitOfWork().GetReadOnlyRepository <MetadataStructure>().Get(id);

                XmlDocument xmlDoc = new XmlDocument();

                if (metadataStructure.Extra != null)
                {
                    xmlDoc = (XmlDocument)metadataStructure.Extra;
                }

                // add title Node
                xmlDoc = AddReferenceToMetadatStructure("title", titlePath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef", xmlDoc);
                // add Description
                xmlDoc = AddReferenceToMetadatStructure("description", descriptionPath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef", xmlDoc);


                if (entityManager.EntityRepository.Get().Any(e => { return(e.Name != null && e.Name.Equals(entity)); }))
                {
                    Entity e = entityManager.EntityRepository.Get().FirstOrDefault(x => x.Name != null && x.Name.Equals(entity));
                    if (e != null)
                    {
                        xmlDoc = AddReferenceToMetadatStructure(e.Name, e.EntityType.FullName, AttributeType.entity.ToString(), "extra/entity", xmlDoc);
                    }
                }

                // add mappingFilePath
                xmlDoc = AddReferenceToMetadatStructure(metadataStructure.Name, mappingFilePathImport, "mappingFileImport", "extra/convertReferences/convertRef", xmlDoc);
                xmlDoc = AddReferenceToMetadatStructure(metadataStructure.Name, mappingFilePathExport, "mappingFileExport", "extra/convertReferences/convertRef", xmlDoc);

                //set active
                xmlDoc = AddReferenceToMetadatStructure(NameAttributeValues.active.ToString(), true.ToString(), AttributeType.parameter.ToString(), "extra/parameters/parameter", xmlDoc);

                metadataStructure.Extra = xmlDoc;
                mdsManager.Update(metadataStructure);
            }
            finally
            {
                mdsManager.Dispose();
                entityManager.Dispose();
            }
        }
        private void createMetadataStructureRepoMaps()
        {
            PublicationManager publicationManager = new PublicationManager();

            try
            {
                //set MetadataStructureToRepository for gbif and pensoft
                long metadataStrutcureId = 0;
                long repositoryId        = 0;

                //get id of metadatstructure
                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                string metadatStrutcureName = "gbif";
                if (metadataStructureManager.Repo.Get().Any(m => m.Name.ToLower().Equals(metadatStrutcureName)))
                {
                    MetadataStructure metadataStructure =
                        metadataStructureManager.Repo.Get()
                        .FirstOrDefault(m => m.Name.ToLower().Equals(metadatStrutcureName));
                    if (metadataStructure != null)
                    {
                        metadataStrutcureId = metadataStructure.Id;
                    }
                }

                //get id of metadatstructure
                string repoName = "pensoft";
                if (publicationManager.RepositoryRepo.Get().Any(m => m.Name.ToLower().Equals(repoName)))
                {
                    Repository repository =
                        publicationManager.RepositoryRepo.Get().FirstOrDefault(m => m.Name.ToLower().Equals(repoName));
                    if (repository != null)
                    {
                        repositoryId = repository.Id;
                    }
                }

                if (metadataStrutcureId > 0 && repositoryId > 0)
                {
                    publicationManager.CreateMetadataStructureToRepository(metadataStrutcureId, repositoryId);
                }
            }
            finally
            {
                publicationManager.Dispose();
            }
        }
Exemple #32
0
        public string GetEntityNameFromMetadatStructure(long metadataStructureId, MetadataStructureManager metadataStructureManager)
        {
            MetadataStructure metadataStructure = this.GetUnitOfWork().GetReadOnlyRepository <MetadataStructure>().Get(metadataStructureId);

            // get MetadataStructure
            if (metadataStructure != null && metadataStructure.Extra != null)
            {
                XDocument xDoc             = XmlUtility.ToXDocument((XmlDocument)metadataStructure.Extra);
                IEnumerable <XElement> tmp = XmlUtility.GetXElementByNodeName(nodeNames.entity.ToString(), xDoc);
                if (tmp.Any())
                {
                    return(tmp.First().Attribute("name").Value);
                }
            }

            return(string.Empty);
        }
        public ActionResult DownloadSchema(long id)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(id);
            string name = metadataStructure.Name;

            string path = OutputMetadataManager.GetSchemaDirectoryPathFromMetadataStructure(id);

            ZipFile zip = new ZipFile();
            if (Directory.Exists(path))
                zip.AddDirectory(path);

            MemoryStream stream = new MemoryStream();
            zip.Save(stream);
            stream.Position = 0;
            var result = new FileStreamResult(stream, "application/zip")
            { FileDownloadName = name+".zip" };

            return result;
        }
Exemple #34
0
        public ActionResult ConvertSelectedDatasetVersion(string Id, string SelectedDatasetIds)
        {
            #region load Model

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

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure metadataStructure = metadataStructureManager.Repo.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);
        }
Exemple #35
0
        public List<SearchMetadataNode> GetMetadataNodes()
        {
            if (_metadataNodes.Count > 0)
                return _metadataNodes;
            else
            {

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                List<long> ids = new List<long>();

                ids = metadataStructureManager.Repo.Query().Select(p => p.Id).ToList();

                foreach (long id in ids)
                {
                    _metadataNodes.AddRange(GetAllXPathsOfSimpleAttributes(id));
                    }

                _metadataNodes = _metadataNodes.Distinct().ToList();
                _metadataNodes.Sort((x,y)=>String.Compare(x.DisplayName,y.DisplayName));
                return _metadataNodes;
            }
        }
Exemple #36
0
        //ToDo set this function to a other place because of reading a metadata structure ad create a list of all simple attribute with xpath and displayname is also important for other places as search designer
        public List<SearchMetadataNode> GetAllXPathsOfSimpleAttributes(long id)
        {
            List<SearchMetadataNode> list = new List<SearchMetadataNode>();

            // load metadatastructure with all packages and attributes

                MetadataStructureManager msd = new MetadataStructureManager();
                string title = msd.Repo.Get(id).Name;

                XmlMetadataWriter xmlMetadatWriter = new XmlMetadataWriter(XmlNodeMode.xPath);
                XDocument metadataXml = xmlMetadatWriter.CreateMetadataXml(id);

                List<XElement> elements = metadataXml.Root.Descendants().Where(e => e.HasElements.Equals(false)).ToList();

                foreach (XElement element in elements)
                {
                    list.Add(
                        new SearchMetadataNode(title, XExtentsions.GetAbsoluteXPath(element).Substring(1))
                        );
                }

            return list;
        }
        public static string GetMappingFileName(long id, TransmissionType transmissionType, string name)
        {
            MetadataStructureManager msm = new MetadataStructureManager();
            MetadataStructure metadataStructure = msm.Repo.Get(id);

            // get MetadataStructure
            XDocument xDoc = XmlUtility.ToXDocument((XmlDocument)metadataStructure.Extra);

            List<XElement> tmpList =
                XmlUtility.GetXElementsByAttribute(nodeNames.convertRef.ToString(), new Dictionary<string, string>()
                {
                    {AttributeNames.name.ToString(), name},
                    {AttributeNames.type.ToString(), transmissionType.ToString()}

                }, xDoc).ToList();

            if (tmpList.Count >= 1)
            {
                return tmpList.FirstOrDefault().Attribute("value").Value.ToString();
            }

            return null;
        }
Exemple #38
0
        public static string GetSchemaDirectoryPath(long datasetId)
        {
            try
            {
                DatasetManager datasetManager = new DatasetManager();
                DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId);

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure metadataStructure =
                    metadataStructureManager.Repo.Get(datasetVersion.Dataset.MetadataStructure.Id);

                string path = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata",
                    metadataStructure.Name);

                if(!String.IsNullOrEmpty(path) && Directory.Exists(path))
                    return path;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return String.Empty;
        }
        public ActionResult Delete(long id)
        {
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(id);

            try
            {
                // delete local files
                if (XmlSchemaManager.Delete(metadataStructure))
                {
                    metadataStructureManager.Delete(metadataStructure);
                }
            }
            catch (Exception ex)
            {
                return Json(ex.Message);
            }

            // delete links from search index

            if (metadataStructureManager.Repo.Get(id) == null) return Json(true);

            return Json(false);
        }
Exemple #40
0
        //private StepModelHelper GetStepModelhelper(long usageId, int number)
        //{
        //    TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];
        //    if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_STEP_MODEL_HELPER))
        //    {
        //        return ((List<StepModelHelper>)TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER]).Where(s => s.Usage.Id.Equals(usageId) && s.Number.Equals(number)).FirstOrDefault();
        //    }
        //    return null;
        //}
        //private int GetNumberOfUsageInStepModelHelper(long usageId)
        //{
        //    TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];
        //    if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_STEP_MODEL_HELPER))
        //    {
        //        return ((List<StepModelHelper>)TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER]).Where(s => s.Usage.Id.Equals(usageId)).Count() - 1;
        //    }
        //    return 0;
        //}
        //private void GenerateModelsForChildrens(StepModelHelper modelHelper, long metadataStructureId)
        //{
        //    foreach (StepModelHelper item in modelHelper.Childrens)
        //    {
        //        if (item.Childrens.Count() > 0)
        //        {
        //            GenerateModelsForChildrens(item, metadataStructureId);
        //        }
        //        if (item.Model == null)
        //        {
        //            BaseUsage u = LoadUsage(item.Usage);
        //            if (u is MetadataAttributeUsage || u is MetadataNestedAttributeUsage)
        //            {
        //                item.Model = MetadataCompoundAttributeModel.ConvertToModel(u, item.Number);
        //                ((MetadataCompoundAttributeModel)item.Model).ConvertMetadataAttributeModels(u, metadataStructureId, item.StepId);
        //            }
        //            if (u is MetadataPackageUsage)
        //            {
        //                item.Model = MetadataPackageModel.Convert(u, item.Number);
        //                ((MetadataPackageModel)item.Model).ConvertMetadataAttributeModels(u, metadataStructureId, item.StepId);
        //            }
        //        }
        //    }
        //}
        //private StepModelHelper GenerateModelsForChildrens(StepInfo stepInfo, long metadataStructureId)
        //{
        //    StepModelHelper stepModelHelper = GetStepModelhelper(stepInfo.Id);
        //    if (stepModelHelper.Model == null)
        //    {
        //        if (stepModelHelper.Usage is MetadataPackageUsage)
        //            stepModelHelper.Model = CreatePackageModel(stepInfo.Id, false);
        //        if (stepModelHelper.Usage is MetadataNestedAttributeUsage)
        //            stepModelHelper.Model = CreateCompoundModel(stepInfo.Id, false);
        //        getChildModelsHelper(stepModelHelper);
        //    }
        //    return stepModelHelper;
        //}
        private BaseUsage LoadUsage(BaseUsage usage)
        {
            if (usage is MetadataPackageUsage)
            {
                MetadataStructureManager msm = new MetadataStructureManager();
                return msm.PackageUsageRepo.Get(usage.Id);
            }

            if (usage is MetadataNestedAttributeUsage)
            {
                MetadataAttributeManager mam = new MetadataAttributeManager();

                var x = from c in mam.MetadataCompoundAttributeRepo.Get()
                        from u in c.Self.MetadataNestedAttributeUsages
                        where u.Id == usage.Id //&& c.Id.Equals(parentId)
                        select u;

                return x.FirstOrDefault();
            }

            if (usage is MetadataAttributeUsage)
            {
                MetadataPackageManager mpm = new MetadataPackageManager();

                var q = from p in mpm.MetadataPackageRepo.Get()
                        from u in p.MetadataAttributeUsages
                        where u.Id == usage.Id // && p.Id.Equals(parentId)
                        select u;

                return q.FirstOrDefault();
            }

            return usage;
        }
Exemple #41
0
 private BaseUsage GetPackageUsage(long Id)
 {
     MetadataStructureManager mpm = new MetadataStructureManager();
     return mpm.PackageUsageRepo.Get(Id);
 }
Exemple #42
0
        private MetadataPackageModel CreatePackageModel(int stepId, bool validateIt)
        {
            StepInfo stepInfo = TaskManager.Get(stepId);
            StepModelHelper stepModelHelper = GetStepModelhelper(stepId);

            long metadataPackageId = stepModelHelper.Usage.Id;
            long metadataStructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID]);

            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MetadataPackageManager mdpManager = new MetadataPackageManager();
            MetadataPackageUsage mpu = (MetadataPackageUsage)LoadUsage(stepModelHelper.Usage);
            MetadataPackageModel model = new MetadataPackageModel();

            model = MetadataPackageModel.Convert(mpu, stepModelHelper.Number);
            model.ConvertMetadataAttributeModels(mpu, metadataStructureId, stepId);

            if (stepInfo.IsInstanze == false)
            {
                //get Instance
                if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_XML))
                {
                    XDocument xMetadata = (XDocument)TaskManager.Bus[CreateTaskmanager.METADATA_XML];
                    model.ConvertInstance(xMetadata, stepModelHelper.XPath);
                }
            }
            else
            {
                if (stepModelHelper.Model != null)
                {
                    model = (MetadataPackageModel)stepModelHelper.Model;
                }
                else
                {
                    stepModelHelper.Model = model;
                }
            }

            //if (validateIt)
            //{
            //    //validate packages
            //    List<Error> errors = validateStep(stepModelHelper.Model);
            //    if (errors != null)
            //        model.ErrorList = errors;
            //    else
            //        model.ErrorList = new List<Error>();

            //}

            model.StepInfo = stepInfo;

            return model;
        }
Exemple #43
0
        private void AdvanceTaskManagerBasedOnExistingMetadata(long MetadataStructureId)
        {
            TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];

            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();

            List<MetadataPackageUsage> metadataPackageList = metadataStructureManager.GetEffectivePackages(MetadataStructureId).ToList();

            List<StepModelHelper> stepModelHelperList = new List<StepModelHelper>();
            if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_STEP_MODEL_HELPER))
            {
                TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER] = stepModelHelperList;
            }
            else
            {
                TaskManager.Bus.Add(CreateTaskmanager.METADATA_STEP_MODEL_HELPER, stepModelHelperList);
            }

            TaskManager.StepInfos = new List<StepInfo>();

            foreach (MetadataPackageUsage mpu in metadataPackageList)
            {
                //only add none optional usages
                StepInfo si = new StepInfo(mpu.Label)
                {
                    Id = TaskManager.GenerateStepId(),
                    parentTitle = mpu.MetadataPackage.Name,
                    Parent = TaskManager.Root,
                    IsInstanze = false,
                };

                TaskManager.StepInfos.Add(si);
                StepModelHelper stepModelHelper = new StepModelHelper(si.Id, 1, mpu, "Metadata//" + mpu.Label.Replace(" ", string.Empty) + "[1]", null);

                stepModelHelperList.Add(stepModelHelper);

                si = LoadStepsBasedOnUsage(mpu, si, "Metadata//" + mpu.Label.Replace(" ", string.Empty) + "[1]", stepModelHelper);
                TaskManager.Root.Children.Add(si);

                TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER] = stepModelHelperList;

            }

            TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER] = stepModelHelperList;
            Session["CreateDatasetTaskmanager"] = TaskManager;
        }
Exemple #44
0
        public ActionResult ValidateExternalXml()
        {
            string validationMessage = "";

            if (TaskManager == null) TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];

            if (TaskManager != null &&
                TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATASTRUCTURE_ID) &&
                TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_IMPORT_XML_FILEPATH))
            {

                //xml metadata for import
                string metadataForImportPath = (string)TaskManager.Bus[CreateTaskmanager.METADATA_IMPORT_XML_FILEPATH];

                if (FileHelper.FileExist(metadataForImportPath))
                {
                    XmlDocument metadataForImport = new XmlDocument();
                    metadataForImport.Load(metadataForImportPath);

                    // metadataStructure DI
                    long metadataStructureId = (Int64)TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID];
                    MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                    string metadataStructrueName = metadataStructureManager.Repo.Get(metadataStructureId).Name;

                    // loadMapping file
                    string path_mappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), XmlMetadataImportHelper.GetMappingFileName(metadataStructureId, TransmissionType.mappingFileImport, metadataStructrueName));

                    // XML mapper + mapping file
                    XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.ExternToIntern);
                    xmlMapperManager.Load(path_mappingFile, "IDIV");

                    validationMessage = xmlMapperManager.Validate(metadataForImport);
                }
            }

            return Content(validationMessage);
        }
Exemple #45
0
        private string Export(long datasetVersionId)
        {
            DatasetManager datasetManager = new DatasetManager();
            DatasetVersion datasetVersion = datasetManager.GetDatasetVersion(datasetVersionId);
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(datasetVersion.Dataset.MetadataStructure.Id);

            string fileName = getMappingFileName(datasetVersion, TransmissionType.mappingFileExport, metadataStructure.Name);
            string path_mapping_file = "";
            try
            {
                    path_mapping_file = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), fileName);

                    xmlMapperManager = new XmlMapperManager(TransactionDirection.InternToExtern);

                    xmlMapperManager.Load(path_mapping_file, GetUsernameOrDefault());

                    return xmlMapperManager.Export(datasetVersion.Metadata,datasetVersion.Id, fileName);
            }
            catch(Exception ex)
            {
                return ex.Message;
            }

            return "";
        }
Exemple #46
0
        private Dataset createDataset()
        {
            DataStructureManager dsManager = new DataStructureManager();
            ResearchPlanManager rpManager = new ResearchPlanManager();
            DatasetManager dm = new DatasetManager();

            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MDS.MetadataStructure mds = mdsManager.Repo.Query().First();

            Dataset ds = dm.CreateEmptyDataset(dsManager.StructuredDataStructureRepo.Get(1), rpManager.Repo.Get(1), mds);
            return ds;
        }
Exemple #47
0
        public long GenerateMetadataStructure(string nameOfStartNode,string schemaName)
        {
            if (!String.IsNullOrEmpty(schemaName))
                SchemaName = schemaName;

            string rootElementName = nameOfStartNode;

            newXsdFilePath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata", schemaName, FileName);

            #region prepare mappingFiles

            #region intern to extern
                // add schema to mappingfile
                mappingFileInternalToExternal.Header.AddToSchemas(schemaName, "Metadata/" + schemaName + "/" + FileName);
            #endregion

            #region extern to intern
                mappingFileExternalToInternal.Header.AddToDestination("Metadata");
                mappingFileExternalToInternal.Header.AddToSchemas(schemaName, "Metadata/" + schemaName + "/" + FileName);

            // id and name of metadatastructure fehlt

            #endregion

            #endregion

            //List<MetadataAttribute> metadataAttributes = new List<MetadataAttribute>();
            //metadataAttributes = GenerateAllMetadataAttributes();
            List<XmlSchemaElement> elementsWithSimpleType = GetAllElementsTypeIsSimpleType();
            List<XmlSchemaComplexType> complexTypesWithSimpleTypesAsChildrensOnly = GetAllComplextTypesWithSimpleTypesAsChildrens();

            // create default
            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MetadataPackageManager mdpManager = new MetadataPackageManager();

             // create default metadataStructure
            MetadataStructure test = null; //mdsManager.Repo.Get(p => p.Name == SchemaName).FirstOrDefault();
            if (test == null) test = mdsManager.Create(SchemaName, SchemaName, "", "", null);

            XmlSchemaObject root = new XmlSchemaElement();
            string xpathFromRoot = "";

            int count = 0;
            foreach(XmlSchemaObject obj in Schema.Items)
            {
                if (obj is XmlSchemaElement)
                {
                    count++;
                    if (count > 1)
                    {
                        throw new Exception("Root node is not able to declare");
                    }
                }
            }

            foreach(XmlSchemaObject obj in Schema.Items)
            {
                if (obj is XmlSchemaElement)
                    root = (XmlSchemaElement)obj;
            }

            if (String.IsNullOrEmpty(nameOfStartNode))
            {
                XmlSchemaElement rootElement = (XmlSchemaElement)root;
                mappingFileInternalToExternal.Header.AddToDestination(rootElement.Name, rootElement.Name);

                rootElementName = rootElement.Name;
                xpathFromRoot = rootElementName;
            }
            else
            {
                //XXX finde path from rootnode the defined root node
                //XPath in mapping file needs to be complete based on the original xsd
                xpathFromRoot = findPathFromRoot((XmlSchemaElement)root, nameOfStartNode, "");

                root = Elements.Where(e => e.Name.ToLower().Equals(nameOfStartNode.ToLower())).FirstOrDefault();
                if (root == null)
                {
                    root = Groups.Where(g => g.Name.ToLower().Equals(nameOfStartNode.ToLower())).FirstOrDefault();
                }

                if (nameOfStartNode != "")
                {
                    XmlSchemaElement rootElement = (XmlSchemaElement)root;
                    mappingFileInternalToExternal.Header.AddToDestination(nameOfStartNode, rootElement.Name);
                }
            }

                List<XmlSchemaElement> childrenOfRoot = XmlSchemaUtility.GetAllElements(root, false, Elements);
                List<XmlSchemaElement> packages = new List<XmlSchemaElement>();

                if (XmlSchemaUtility.IsAllSimpleType(childrenOfRoot))
                {
                    #region root with only simple type childrens

                    XmlSchemaGroup rootAsGroup = (XmlSchemaGroup)root;

                    MetadataPackage package = getExistingMetadataPackage(rootAsGroup.Name);

                    if (package == null)
                    {
                        package = mdpManager.Create(rootAsGroup.Name, GetDescription(rootAsGroup.Annotation), true);
                        createdPackagesDic.Add(package.Id, package.Name);
                    }

                    if (test.MetadataPackageUsages.Where(p => p.MetadataPackage == package).Count() <= 0)
                    {
                        string xpath = "Metadata/" + rootAsGroup.Name;

                        foreach (XmlSchemaElement child in childrenOfRoot)
                        {
                            //Debug.Writeline("packageChild : " + child.Name);
                            //Debug.Writeline("-->");

                            if (XmlSchemaUtility.IsSimpleType(child))
                            {
                                addMetadataAttributeToMetadataPackageUsage(package, child, xpath, rootAsGroup.Name);
                            }
                            else
                            {
                                List<string> parents = new List<string>();
                                parents.Add(rootAsGroup.Name);

                                MetadataCompoundAttribute compoundAttribute = get(child, parents, xpath, rootAsGroup.Name);

                                // add compound to package
                                addUsageFromMetadataCompoundAttributeToPackage(package, compoundAttribute, child);

                            }

                        }

                        mdsManager.AddMetadataPackageUsage(test, package, rootAsGroup.Name, GetDescription(rootAsGroup.Annotation), 1, 1);
                    }

                    #endregion
                }
                else
                {
                    packages.AddRange(childrenOfRoot);

                    #region packages with complext types

                    #region create a basic package of SimpleAttributes from Root Node

                    // get all simpleTypes
                    // for the main package
                    List<XmlSchemaElement> simpleElements = XmlSchemaUtility.GetAllSimpleElements(packages);
                    string rootNodePackageUsage = "Basic";
                    string rootNodePackage = "BasicType";

                    string rootNodePackageDescription = "Attributes from the root node";

                    if (simpleElements.Count > 0)
                    {
                        MetadataPackage package = getExistingMetadataPackage(rootNodePackage);// = mdpManager.MetadataPackageRepo.Get(p => p.Name == rootNodePackage).FirstOrDefault();
                        if (package == null)
                        {
                            package = mdpManager.Create(rootNodePackage, rootNodePackageDescription, true);
                            createdPackagesDic.Add(package.Id, package.Name);
                        }

                        if (test.MetadataPackageUsages.Where(p => p.MetadataPackage == package).Count() <= 0)
                        {

                            foreach (XmlSchemaElement child in simpleElements)
                            {
                                if (XmlSchemaUtility.IsSimpleType(child))
                                {
                                    addMetadataAttributeToMetadataPackageUsage(package, child,"Metadata/Basic/BasicType", xpathFromRoot);
                                }
                            }

                            mdsManager.AddMetadataPackageUsage(test, package, rootNodePackageUsage, rootNodePackageDescription, 1, 1);
                        }

                    }

                    #endregion

                    #region create Packages
                    List<XmlSchemaElement> otherElements = XmlSchemaUtility.GetAllComplexElements(packages);

                    foreach (XmlSchemaElement element in otherElements)
                    {
                       //Debug.Writeline("package : " + element.Name);
                        //Debug.Writeline("--------------------------");

                        string typeName = GetTypeOfName(element.Name);
                        string rootName = ((XmlSchemaElement)root).Name;

                        string xpathInternal = "Metadata/" + element.Name+"/"+typeName;
                        string xpathExternal = xpathFromRoot+"/" + element.Name;

                        if (!XmlSchemaUtility.IsSimpleType(element))
                        {
                            #region complexType
                            MetadataPackage package = getExistingMetadataPackage(element.Name);// = mdpManager.MetadataPackageRepo.Get(p => p.Name == element.Name).FirstOrDefault();
                            if (package == null)
                            {
                                package = mdpManager.Create(typeName, GetDescription(element.Annotation), true);
                                createdPackagesDic.Add(package.Id, package.Name);
                            }
                            // add package to structure
                            if (test.MetadataPackageUsages != null && test.MetadataPackageUsages.Where(p => p.Label.Equals(element.Name)).Count() > 0)
                            {

                                if (test.MetadataPackageUsages.Where(p => p.MetadataPackage == package).Count() <= 0)
                                {
                                    List<XmlSchemaElement> childrens = XmlSchemaUtility.GetAllElements(element, false, Elements);

                                    foreach (XmlSchemaElement child in childrens)
                                    {
                                       //Debug.Writeline("packageChild : " + child.Name);
                                        //Debug.Writeline("-->");

                                        if (XmlSchemaUtility.IsSimpleType(child))
                                        {
                                            addMetadataAttributeToMetadataPackageUsage(package, child, xpathInternal, xpathExternal);
                                        }
                                        else
                                        {
                                            List<string> parents = new List<string>();
                                            parents.Add(element.Name);

                                            MetadataCompoundAttribute compoundAttribute = get(child, parents, xpathInternal, xpathExternal);

                                            // add compound to package
                                            addUsageFromMetadataCompoundAttributeToPackage(package, compoundAttribute, child);

                                        }

                                    }

                                    int min = 0;

                                    if (element.MinOccurs > int.MinValue)
                                        min = Convert.ToInt32(element.MinOccurs);
                                    else
                                        min = int.MinValue;

                                    int max = 0;
                                    if (element.MaxOccurs < int.MaxValue)
                                        max = Convert.ToInt32(element.MaxOccurs);
                                    else
                                        max = int.MaxValue;

                                    mdsManager.AddMetadataPackageUsage(test, package, element.Name, GetDescription(element.Annotation), min, max);
                                }
                            }
                            else
                            {
                                List<XmlSchemaElement> childrens = XmlSchemaUtility.GetAllElements(element, false, Elements);

                                foreach (XmlSchemaElement child in childrens)
                                {
                                    if (XmlSchemaUtility.IsSimpleType(child))
                                    {
                                        addMetadataAttributeToMetadataPackageUsage(package, child, xpathInternal, xpathExternal);
                                    }
                                    else
                                    {
                                        List<string> parents = new List<string>();
                                        parents.Add(element.Name);

                                        MetadataCompoundAttribute compoundAttribute = get(child, parents, xpathInternal, xpathExternal);

                                        // add compound to package
                                        addUsageFromMetadataCompoundAttributeToPackage(package, compoundAttribute, child);

                                    }

                                }

                                int min = 0;

                                if (element.MinOccurs > int.MinValue)
                                    min = Convert.ToInt32(element.MinOccurs);
                                else
                                    min = int.MinValue;

                                int max = 0;
                                if (element.MaxOccurs < int.MaxValue)
                                    max = Convert.ToInt32(element.MaxOccurs);
                                else
                                    max = int.MaxValue;

                                //check if element is a choice
                                if (!XmlSchemaUtility.IsChoiceType(element))
                                {

                                    MetadataPackageUsage mpu = mdsManager.AddMetadataPackageUsage(test, package,
                                        element.Name, GetDescription(element.Annotation), min, max);
                                }
                                else
                                {
                                    // if mpu is a choice, add a info to extra
                                    MetadataPackageUsage mpu = mdsManager.AddMetadataPackageUsage(test, package,
                                           element.Name, GetDescription(element.Annotation), min, max,
                                           XmlDatasetHelper.AddReferenceToXml(new XmlDocument(), "choice", "true", "elementType", @"extra/type"));
                                }

                            }
                            #endregion
                        }

                    }
                    #endregion

                    #endregion

                }

                if (!File.Exists(newXsdFilePath))
                {
                    checkDirectory(newXsdFilePath);
                    MoveFile(xsdFilePath, newXsdFilePath);
                }

                #region store additionaly xsds

                string tmpDestinationPath = Path.GetDirectoryName(newXsdFilePath);
                string tmpSourcePath = Path.GetDirectoryName(xsdFilePath);

                if (additionalFiles != null)
                {
                    foreach (var filename in additionalFiles.Distinct())
                    {
                        MoveFile(Path.Combine(tmpSourcePath, filename), Path.Combine(tmpDestinationPath, filename));
                    }
                }

                #endregion

            #region Generate Mapping File

            string internalMetadataStructrueName = schemaName;
                mappingFileExternalToInternal.Id = test.Id;

                //generate mapping file Xml Document
                generateXmlMappingFile(mappingFileInternalToExternal, internalMetadataStructrueName, FileName);
                generateXmlMappingFile(mappingFileExternalToInternal, FileName, internalMetadataStructrueName, 1);

                #endregion

                return test.Id;
        }
Exemple #48
0
        //
        // GET: /DIM/Import/
        public ActionResult Index()
        {
            //xml metadata for import
            string metadataForImportPath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), "MetadataIDIV_EXAMPLE.xml");

            XmlDocument metadataForImport = new XmlDocument();
            metadataForImport.Load(metadataForImportPath);

            // metadataStructure DI
            long metadataStructureId = 3;

            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            string metadataStructrueName = metadataStructureManager.Repo.Get(metadataStructureId).Name;

            // loadMapping file
            string path_mappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), XmlMetadataImportHelper.GetMappingFileName(metadataStructureId, TransmissionType.mappingFileImport, metadataStructrueName));

            // XML mapper + mapping file
            XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.InternToExtern);
            xmlMapperManager.Load(path_mappingFile, "IDIV");

            // generate intern metadata
            XmlDocument metadataResult = xmlMapperManager.Generate(metadataForImport,1);

            // generate intern template
            XmlMetadataWriter xmlMetadatWriter = new XmlMetadataWriter(BExIS.Xml.Helpers.XmlNodeMode.xPath);
            XDocument metadataXml = xmlMetadatWriter.CreateMetadataXml(metadataStructureId);
            XmlDocument metadataXmlTemplate = XmlMetadataWriter.ToXmlDocument(metadataXml);

            XmlDocument completeMetadata = XmlMetadataImportHelper.FillInXmlAttributes(metadataResult, metadataXmlTemplate);

            // create Dataset

            //load datastructure
            DataStructureManager dsm = new DataStructureManager();
            ResearchPlanManager rpm = new ResearchPlanManager();
            MetadataStructureManager msm = new MetadataStructureManager();

            DatasetManager dm = new DatasetManager();
            Dataset dataset = dm.CreateEmptyDataset(dsm.UnStructuredDataStructureRepo.Get(1), rpm.Repo.Get(1), msm.Repo.Get(3));

            if (dm.IsDatasetCheckedOutFor(dataset.Id, GetUsernameOrDefault()) || dm.CheckOutDataset(dataset.Id, GetUsernameOrDefault()))
            {
                DatasetVersion workingCopy = dm.GetDatasetWorkingCopy(dataset.Id);
                workingCopy.Metadata = completeMetadata;

                string title = XmlDatasetHelper.GetInformation(workingCopy, NameAttributeValues.title);
                if (String.IsNullOrEmpty(title)) title = "No Title available.";

                dm.EditDatasetVersion(workingCopy, null, null, null);
                dm.CheckInDataset(dataset.Id, "Metadata was submited.", GetUsernameOrDefault());

                // add security
                if (GetUsernameOrDefault() != "DEFAULT")
                {
                    PermissionManager pm = new PermissionManager();
                    SubjectManager sm = new SubjectManager();

                    BExIS.Security.Entities.Subjects.User user = sm.GetUserByName(GetUsernameOrDefault());

                    foreach (RightType rightType in Enum.GetValues(typeof(RightType)).Cast<RightType>())
                    {
                        pm.CreateDataPermission(user.Id, 1, dataset.Id, rightType);
                    }
                }
            }

            return View();
        }
Exemple #49
0
 public void Delete(string schemaName)
 {
     MetadataStructureManager mdsManager = new MetadataStructureManager();
     // create default metadataStructure
     MetadataStructure test = mdsManager.Repo.Get(p => p.Name == SchemaName).FirstOrDefault();
     if (test != null) mdsManager.Delete(test);
 }
Exemple #50
0
        public static GFBIOPangaeaFormularObject GetGFBIOPangaeaFormularObject(long datasetId)
        {
            DatasetManager datasetManager = new DatasetManager();
            datasetManager.GetDataset(datasetId);

            Dataset dataset = datasetManager.GetDataset(datasetId);
            DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId);

            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(dataset.MetadataStructure.Id);

            GFBIOPangaeaFormularObject gfbioPangaeaFormularObject = new GFBIOPangaeaFormularObject();

            string title = XmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.title);
            string description = XmlDatasetHelper.GetInformation(datasetId, NameAttributeValues.description);

            return gfbioPangaeaFormularObject;
        }
Exemple #51
0
        /// <summary>
        /// create a new dataset, check it out to create the first version, add a tuple to it.
        /// </summary>
        /// <returns></returns>
        private Int64 createDatasetVersion()
        {
            DataStructureManager dsManager = new DataStructureManager();
            ResearchPlanManager rpManager = new ResearchPlanManager();
            DatasetManager dm = new DatasetManager();

            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MDS.MetadataStructure mds = mdsManager.Repo.Query().First();

            Dataset ds = dm.CreateEmptyDataset(dsManager.StructuredDataStructureRepo.Get(1), rpManager.Repo.Get(1), mds);

            if (dm.IsDatasetCheckedOutFor(ds.Id, "Javad") || dm.CheckOutDataset(ds.Id, "Javad"))
            {
                DatasetVersion workingCopy = dm.GetDatasetWorkingCopy(ds.Id);

                //DataTuple changed = dm.GetDatasetVersionEffectiveTuples(workingCopy).First();
                //changed.VariableValues.First().Value = (new Random()).Next().ToString();
                DataTuple dt = dm.DataTupleRepo.Get(1); // its sample data
                List<DataTuple> tuples = new List<DataTuple>();
                for (int i = 0; i < 10000; i++)
                {
                    DataTuple newDt = new DataTuple();
                    newDt.XmlAmendments = dt.XmlAmendments;
                    newDt.XmlVariableValues = dt.XmlVariableValues; // in normal cases, the VariableValues are set and then Dematerialize is called
                    newDt.Materialize();
                    newDt.OrderNo = i;
                    //newDt.TupleAction = TupleAction.Created;//not required
                    //newDt.Timestamp = DateTime.UtcNow; //required? no, its set in the Edit
                    //newDt.DatasetVersion = workingCopy;//required? no, its set in the Edit
                    tuples.Add(newDt);
                }
                dm.EditDatasetVersion(workingCopy, tuples, null, null);
                dm.CheckInDataset(ds.Id, "for testing purposes", "Javad");
                dm.DatasetVersionRepo.Evict();
                dm.DataTupleRepo.Evict();
                dm.DatasetRepo.Evict();
                workingCopy.PriliminaryTuples.Clear();
                workingCopy = null;
            }
            var dsId = ds.Id;
            ds = null;
            return (dsId);
        }
Exemple #52
0
        public static string GetSchemaDirectoryPathFromMetadataStructure(long metadataStructureId)
        {
            try
            {
                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure metadataStructure =
                    metadataStructureManager.Repo.Get(metadataStructureId);

                string path = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DCM"), "Metadata",
                    metadataStructure.Name);

                if (!String.IsNullOrEmpty(path) && Directory.Exists(path))
                    return path;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return String.Empty;
        }
Exemple #53
0
        public ActionResult LoadMetadataStructureTab(long Id)
        {
            #region load Model

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

                MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(Id);

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

                    );

            #endregion

            return PartialView("_metadataStructureView",model);
        }
Exemple #54
0
        public ActionResult LoadExternalXml()
        {
            string validationMessage = "";

            if (TaskManager == null) TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];

            if (TaskManager != null &&
                TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATASTRUCTURE_ID) &&
                TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_IMPORT_XML_FILEPATH))
            {

                //xml metadata for import
                string metadataForImportPath = (string)TaskManager.Bus[CreateTaskmanager.METADATA_IMPORT_XML_FILEPATH];

                if (FileHelper.FileExist(metadataForImportPath))
                {
                    XmlDocument metadataForImport = new XmlDocument();
                    metadataForImport.Load(metadataForImportPath);

                    // metadataStructure ID
                    long metadataStructureId = (Int64)TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID];
                    MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
                    string metadataStructrueName = metadataStructureManager.Repo.Get(metadataStructureId).Name;

                    // loadMapping file
                    string path_mappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), XmlMetadataImportHelper.GetMappingFileName(metadataStructureId, TransmissionType.mappingFileImport, metadataStructrueName));

                    // XML mapper + mapping file
                    XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.ExternToIntern);
                    xmlMapperManager.Load(path_mappingFile, "IDIV");

                    // generate intern metadata without internal attributes
                    XmlDocument metadataResult = xmlMapperManager.Generate(metadataForImport, 1, true);

                    // generate intern template metadata xml with needed attribtes
                    XmlMetadataWriter xmlMetadatWriter = new XmlMetadataWriter(BExIS.Xml.Helpers.XmlNodeMode.xPath);
                    XDocument metadataXml = xmlMetadatWriter.CreateMetadataXml(metadataStructureId,
                        XmlUtility.ToXDocument(metadataResult));

                    XmlDocument metadataXmlTemplate = XmlMetadataWriter.ToXmlDocument(metadataXml);

                    // set attributes FROM metadataXmlTemplate TO metadataResult
                    XmlDocument completeMetadata = XmlMetadataImportHelper.FillInXmlValues(metadataResult,
                        metadataXmlTemplate);

                    TaskManager.AddToBus(CreateTaskmanager.METADATA_XML, completeMetadata);

                    //LoadMetadata(long datasetId, bool locked= false, bool created= false, bool fromEditMode = false, bool resetTaskManager = false, XmlDocument newMetadata=null)
                    return RedirectToAction("ImportMetadata", "Form",
                        new {metadataStructureId = metadataStructureId});

                }
            }

            return Content("Error Message :"+validationMessage);
        }
        /// <summary>
        /// </summary>
        /// <param name="id"></param>
        /// <param name="titlePath"></param>
        /// <param name="descriptionPath"></param>
        /// <param name="mappingFilePath"></param>
        /// <param name="direction"></param>
        private void StoreParametersToMetadataStruture(long id, string titlePath, string descriptionPath,string entity, string mappingFilePathImport, string mappingFilePathExport)
        {
            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = mdsManager.Repo.Get(id);

            XmlDocument xmlDoc = new XmlDocument();

            if (metadataStructure.Extra != null)
            {
                xmlDoc = (XmlDocument)metadataStructure.Extra;
            }

            // add title Node
            xmlDoc = AddReferenceToMetadatStructure("title", titlePath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef", xmlDoc);
            // add Description
            xmlDoc = AddReferenceToMetadatStructure("description", descriptionPath, AttributeType.xpath.ToString(), "extra/nodeReferences/nodeRef", xmlDoc);

            xmlDoc = AddReferenceToMetadatStructure("entity", entity, AttributeType.entity.ToString(), "extra/entity", xmlDoc);

            // add mappingFilePath
            xmlDoc = AddReferenceToMetadatStructure(metadataStructure.Name, mappingFilePathImport, "mappingFileImport", "extra/convertReferences/convertRef", xmlDoc);
            xmlDoc = AddReferenceToMetadatStructure(metadataStructure.Name, mappingFilePathExport, "mappingFileExport", "extra/convertReferences/convertRef", xmlDoc);

            //set active
            xmlDoc = AddReferenceToMetadatStructure(NameAttributeValues.active.ToString(), true.ToString(), AttributeType.parameter.ToString(), "extra/parameters/parameter", xmlDoc);

            metadataStructure.Extra = xmlDoc;
            mdsManager.Update(metadataStructure);
        }
        public bool SchemaNameExist(string SchemaName)
        {
            MetadataStructureManager msm = new MetadataStructureManager();

            if (msm.Repo.Get().Where(m => m.Name.ToLower().Equals(SchemaName.ToLower())).Count() == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
Exemple #57
0
        public long createDataset(string dataSetID, XmlDocument metadataXml, long metadataStructureId, DataStructure dataStructure, string researchPlanName)
        {
            Dataset dataset = new Dataset();

            DatasetManager datasetManager = new DatasetManager();
            DataStructureManager dataStructureManager = new DataStructureManager();
            ResearchPlanManager researchPlanManager = new ResearchPlanManager();
            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            PermissionManager permissionManager = new PermissionManager();
            SubjectManager subjectManager = new SubjectManager();

            // get existing researchPlan
            ResearchPlan researchPlan = researchPlanManager.Repo.Get(r => researchPlanName.Equals(r.Title)).FirstOrDefault();

            // get existing metadataStructure (created manualy by using edited Bexis1_XSD)
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(metadataStructureId);

            // update verwendet, da bei unstructured structures im dataset constructor dataset(dataStructure) nullexception
            dataset = datasetManager.CreateEmptyDataset(dataStructure, researchPlan, metadataStructure);
            long datasetId = dataset.Id;

            // dataPermission
            List<string> usersWithDataPerm = new List<string>();

            // create dataPermission for originalDatasetManager
            string originalDatasetManager = metadataXml.SelectSingleNode("Metadata/general/general/originalDatasetManager/originalDatasetManager").InnerText;
            User userODM = subjectManager.UsersRepo.Get(u => originalDatasetManager.Equals(u.FullName)).FirstOrDefault();
            permissionManager.CreateDataPermission(userODM.Id, 1, dataset.Id, RightType.Create);
            permissionManager.CreateDataPermission(userODM.Id, 1, dataset.Id, RightType.View);
            permissionManager.CreateDataPermission(userODM.Id, 1, dataset.Id, RightType.Update);
            permissionManager.CreateDataPermission(userODM.Id, 1, dataset.Id, RightType.Download);
            usersWithDataPerm.Add(originalDatasetManager);

            // create dataPermissions for metadataAuthor
            string metadataAuthor = metadataXml.SelectSingleNode("Metadata/general/general/metadataCreator/metadataCreator").InnerText;
            if (!usersWithDataPerm.Contains(metadataAuthor))
            {
                User userMA = subjectManager.UsersRepo.Get(u => metadataAuthor.Equals(u.FullName)).FirstOrDefault();
                permissionManager.CreateDataPermission(userMA.Id, 1, dataset.Id, RightType.Create);
                permissionManager.CreateDataPermission(userMA.Id, 1, dataset.Id, RightType.View);
                permissionManager.CreateDataPermission(userMA.Id, 1, dataset.Id, RightType.Update);
                permissionManager.CreateDataPermission(userMA.Id, 1, dataset.Id, RightType.Download);
                usersWithDataPerm.Add(metadataAuthor);
            }

            // create dataPermissions for designatedDatasetManager
            string designatedDatasetManager = metadataXml.SelectSingleNode("Metadata/general/general/designatedDatasetManager/contactType/designatedDatasetManagerName/designatedDatasetManagerName").InnerText;
            if (!usersWithDataPerm.Contains(designatedDatasetManager))
            {
                User userDDM = subjectManager.UsersRepo.Get(u => designatedDatasetManager.Equals(u.FullName)).FirstOrDefault();
                permissionManager.CreateDataPermission(userDDM.Id, 1, dataset.Id, RightType.Create);
                permissionManager.CreateDataPermission(userDDM.Id, 1, dataset.Id, RightType.View);
                permissionManager.CreateDataPermission(userDDM.Id, 1, dataset.Id, RightType.Update);
                permissionManager.CreateDataPermission(userDDM.Id, 1, dataset.Id, RightType.Download);
                usersWithDataPerm.Add(designatedDatasetManager);
            }

            // create dataPermissions for owners
            XmlNodeList ownerNodes = metadataXml.SelectNodes("Metadata/general/general/owners/ownerType/owner/owner");
            foreach (XmlNode ownerNode in ownerNodes)
            {
                string owner = ownerNode.InnerText;
                if (!usersWithDataPerm.Contains(owner))
                {
                    User userO = subjectManager.UsersRepo.Get(u => owner.Equals(u.FullName)).FirstOrDefault();
                    if (userO != null)
                    {
                        permissionManager.CreateDataPermission(userO.Id, 1, dataset.Id, RightType.Create);
                        permissionManager.CreateDataPermission(userO.Id, 1, dataset.Id, RightType.View);
                        permissionManager.CreateDataPermission(userO.Id, 1, dataset.Id, RightType.Update);
                        permissionManager.CreateDataPermission(userO.Id, 1, dataset.Id, RightType.Download);
                        usersWithDataPerm.Add(owner);
                    }
                }
            }

            // integrate metadataXml to dataset
            // checkOut
            if (datasetManager.IsDatasetCheckedOutFor(datasetId, userODM.Name) || datasetManager.CheckOutDataset(datasetId, userODM.Name))
            {
                DatasetVersion workingCopy = datasetManager.GetDatasetWorkingCopy(datasetId); // get dataset
                workingCopy.Metadata = metadataXml; // set metadata to dataset
                datasetManager.EditDatasetVersion(workingCopy, null, null, null); // edit dataset
                datasetManager.CheckInDataset(datasetId, "Metadata was submited.", userODM.Name); // check in
            }

            return dataset.Id;
        }
Exemple #58
0
        //
        // GET: /DIM/Admin/
        public ActionResult Index()
        {
            ViewBag.Title = PresentationModel.GetViewTitleForTenant("Export Metadata", this.Session.GetTenant());

            AdminModel model = new AdminModel();

            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            IList<MetadataStructure> metadataStructures = metadataStructureManager.Repo.Get();

            foreach(MetadataStructure metadataStructure in metadataStructures)
            {
                model.Add(metadataStructure);
            }

            return View(model);
        }
Exemple #59
0
        public static GFBIODataCenterFormularObject GetGFBIODataCenterFormularObject(long datasetId)
        {
            DatasetManager datasetManager = new DatasetManager();
            datasetManager.GetDataset(datasetId);

            Dataset dataset = datasetManager.GetDataset(datasetId);
            DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId);

            GFBIODataCenterFormularObject gfbioDataCenterFormularObject = new GFBIODataCenterFormularObject();

            gfbioDataCenterFormularObject.ProjectId = 1;
            gfbioDataCenterFormularObject.ProjectTitle = "Test Poject title";
            gfbioDataCenterFormularObject.ProjectLabel = "Test Poject label";
            gfbioDataCenterFormularObject.ProjectAbstract = "";

            gfbioDataCenterFormularObject.UserId = 1;
            gfbioDataCenterFormularObject.UserName = "******";
            gfbioDataCenterFormularObject.UserEmail = "testEmail";
            gfbioDataCenterFormularObject.DatasetAuthor = "TestAuthor";

            gfbioDataCenterFormularObject.DatasetId = datasetId;
            gfbioDataCenterFormularObject.DatasetVersion = datasetVersion.Id;
            gfbioDataCenterFormularObject.DatasetTitle = XmlDatasetHelper.GetInformation(datasetId,NameAttributeValues.title);
            gfbioDataCenterFormularObject.DatasetLabel = XmlDatasetHelper.GetInformation(datasetId,NameAttributeValues.title);
            gfbioDataCenterFormularObject.DatasetDescription = XmlDatasetHelper.GetInformation(datasetId,NameAttributeValues.description);

            gfbioDataCenterFormularObject.DatasetCollectionDate = datasetVersion.Dataset.LastCheckIOTimestamp;

            MetadataStructureManager metadataStructureManager = new MetadataStructureManager();
            MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(dataset.MetadataStructure.Id);

            gfbioDataCenterFormularObject.MetadataSchemaName = metadataStructure.Name;

            return gfbioDataCenterFormularObject;
        }
Exemple #60
0
        private void testMetadataStructure()
        {
            MetadataStructureManager mdsManager = new MetadataStructureManager();
            MetadataPackageManager mdpManager = new MetadataPackageManager();
            MetadataAttributeManager mdaManager = new MetadataAttributeManager();

            MetadataStructure root = mdsManager.Repo.Get(p => p.Name == "Root").FirstOrDefault();
            if (root == null) root = mdsManager.Create("Root", "This is the root metadata structure", "", "", null);

            MetadataStructure s1 = mdsManager.Repo.Get(p => p.Name == "S1").FirstOrDefault();
            if (s1 == null) s1 = mdsManager.Create("S1", "This is S1 metadata structure", "", "", root);

            MetadataStructure s11 = mdsManager.Repo.Get(p => p.Name == "S1.1").FirstOrDefault();
            if (s11 == null) s11 = mdsManager.Create("S1.1", "This is S1.1 metadata structure", "", "", s1);

            MetadataStructure s2 = mdsManager.Repo.Get(p => p.Name == "S2").FirstOrDefault();
            if (s2 == null) s2 = mdsManager.Create("S2", "This is S2 metadata structure", "", "", root);

            MetadataPackage p1 = mdpManager.MetadataPackageRepo.Get(p => p.Name == "P1").FirstOrDefault();
            if (p1 == null) p1 = mdpManager.Create("P1", "Sample Package 1", true);

            MetadataPackage p2 = mdpManager.MetadataPackageRepo.Get(p => p.Name == "P2").FirstOrDefault();
            if (p2 == null) p2 = mdpManager.Create("P2", "Sample Package 2", true);

            MetadataPackage p3 = mdpManager.MetadataPackageRepo.Get(p => p.Name == "P3").FirstOrDefault();
            if (p3 == null) p3 = mdpManager.Create("P3", "Sample Package 3", true);

            MetadataPackage p4 = mdpManager.MetadataPackageRepo.Get(p => p.Name == "P4").FirstOrDefault();
            if (p4 == null) p4 = mdpManager.Create("P4", "Sample Package 4", true);

            if (s1.MetadataPackageUsages.Where(p => p.MetadataPackage == p1).Count() <= 0)
                mdsManager.AddMetadataPackageUsage(s1, p1, "P1 in S1", "", 0, 1);

            if (s1.MetadataPackageUsages.Where(p => p.MetadataPackage == p2).Count() <= 0)
                mdsManager.AddMetadataPackageUsage(s1, p2, "P2 in S1", "", 1, 1);

            if (s11.MetadataPackageUsages.Where(p => p.MetadataPackage == p3).Count() <= 0)
                mdsManager.AddMetadataPackageUsage(s11, p3, "P3 in S1.1", "", 0, 10);

            if (s11.MetadataPackageUsages.Where(p => p.MetadataPackage == p4).Count() <= 0)
                mdsManager.AddMetadataPackageUsage(s11, p4, "P4 in S1.1", "", 2, 5);

            var usages = mdsManager.GetEffectivePackages(3);
        }