public List <EntityStoreItem> GetVersionsById(long id) { DatasetManager dm = new DatasetManager(); List <EntityStoreItem> tmp = new List <EntityStoreItem>(); try { var datasetIds = dm.GetDatasetLatestIds(); var datasetHelper = new XmlDatasetHelper(); var versions = dm.GetDataset(id).Versions.OrderBy(v => v.Timestamp).ToList(); foreach (var v in versions) { tmp.Add(new EntityStoreItem() { Id = v.Id, Title = datasetHelper.GetInformationFromVersion(v.Id, NameAttributeValues.title), Version = versions.IndexOf(v) + 1, CommitComment = "(" + v.Timestamp.ToString("dd.MM.yyyy HH:mm") + "): " + v.ChangeDescription }); } return(tmp); } catch (Exception ex) { return(tmp); } finally { dm.Dispose(); } }
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(); } }
private void generateMetadataHtml(DatasetVersion dsv) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); long datasetId = dsv.Dataset.Id; long metadatastructureId = dsv.Dataset.MetadataStructure.Id; long datastructureId = dsv.Dataset.DataStructure.Id; long researchplanId = dsv.Dataset.ResearchPlan.Id; string title = dsv.Title; Session["ShowDataMetadata"] = dsv.Metadata; var view = this.Render("DCM", "Form", "LoadMetadataOfflineVersion", new RouteValueDictionary() { { "entityId", datasetId }, { "title", title }, { "metadatastructureId", metadatastructureId }, { "datastructureId", datastructureId }, { "researchplanId", researchplanId }, { "sessionKeyForMetadata", "ShowDataMetadata" }, { "resetTaskManager", false } }); byte[] content = Encoding.ASCII.GetBytes(view.ToString()); string dynamicPathOfMD = ""; dynamicPathOfMD = storeGeneratedFilePathToContentDiscriptor(datasetId, dsv, "metadata", ".html"); string metadataFilePath = AsciiWriter.CreateFile(dynamicPathOfMD); AsciiWriter.AllTextToFile(metadataFilePath, view.ToString()); }
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 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")); }
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(); } }
public static DatasetGridRowModel Convert(DatasetVersion datasetVersion, bool isPublic) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); return(new DatasetGridRowModel() { Id = datasetVersion.Dataset.Id, Title = datasetVersion.Title, IsPublic = isPublic }); }
public static DatasetGridRowModel Convert(DatasetVersion datasetVersion, bool isPublic) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); return(new DatasetGridRowModel() { Id = datasetVersion.Dataset.Id, Title = xmlDatasetHelper.GetInformationFromVersion(datasetVersion.Id, NameAttributeValues.title), IsPublic = isPublic }); }
public StructuredDataStructure GetDataStructureByID(long ID) { DataStructureManager dsm = new DataStructureManager(); StructuredDataStructure structuredDataStructure = dsm.StructuredDataStructureRepo.Get(ID); this.dataStructure = structuredDataStructure; if (this.dataStructure != null) { this.variables = getOrderedVariables(structuredDataStructure); if (this.dataStructure.Datasets == null) { inUse = false; } else { if (this.dataStructure.Datasets.Count > 0) { inUse = true; DatasetListElement datasetListElement = new DatasetListElement(); DatasetManager dm = new DatasetManager(); foreach (Dataset d in structuredDataStructure.Datasets) { if (dm.GetDatasetLatestMetadataVersion(d.Id) != null) { datasetListElement = new DatasetListElement(d.Id, XmlDatasetHelper.GetInformation(d, AttributeNames.title)); } else { datasetListElement = new DatasetListElement(0, ""); } datasets.Add(datasetListElement); } } else { inUse = false; } } this.BuildDataTable(); return(structuredDataStructure); } else { this.dataStructure = new StructuredDataStructure(); return(structuredDataStructure); } }
public static XmlDocument GetConvertedMetadata(long datasetId, TransmissionType type, string mappingName, bool storing = true) { using (DatasetManager datasetManager = new DatasetManager()) { XmlDocument newXml; try { DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); string mappingFileName = xmlDatasetHelper.GetTransmissionInformation(datasetVersion.Id, type, mappingName); // no mapping files with mappingName exist if (string.IsNullOrEmpty(mappingFileName)) { return(null); } 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 if (storing) { if (String.IsNullOrEmpty(mappingName) || mappingName.ToLower() == "generic") { storeGeneratedFilePathToContentDiscriptor(datasetId, datasetVersion, "metadata", ".xml"); } else { storeGeneratedFilePathToContentDiscriptor(datasetId, datasetVersion, "metadata_" + mappingName, ".xml"); } } } catch (Exception ex) { throw ex; } return(newXml); } }
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 static string IsValideAgainstSchema(long datasetId, TransmissionType type, string mappingName) { DatasetManager datasetManager = new DatasetManager(); try { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId); string mappingFileName = xmlDatasetHelper.GetTransmissionInformation(datasetVersion.Id, type, mappingName); // if mapping file not exists if (string.IsNullOrEmpty(mappingFileName)) { return(""); } string pathMappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), mappingFileName); XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.InternToExtern); xmlMapperManager.Load(pathMappingFile, "exporttest"); XmlDocument tmp = GetConvertedMetadata(datasetId, type, mappingName, false); string path = Path.Combine(AppConfiguration.DataPath, "Temp", "System", "convertedMetadata.xml"); if (FileHelper.FileExist(path)) { FileHelper.Delete(path); } FileHelper.CreateDicrectoriesIfNotExist(Path.GetDirectoryName(path)); tmp.Save(path); XmlDocument metadataForImport = new XmlDocument(); metadataForImport.Load(path); return(xmlMapperManager.Validate(metadataForImport)); } catch (Exception ex) { return(ex.Message); } finally { datasetManager.Dispose(); } }
/// <summary> /// /// </summary> /// <remarks></remarks> /// <seealso cref=""/> /// <param name="ID"></param> /// <param name="structured"></param> /// <returns></returns> public DataStructure GetDataStructureByID(long ID, bool structured) { this.structured = structured; if (structured) { return(this.GetDataStructureByID(ID)); } else { DataStructureManager dsm = new DataStructureManager(); UnStructuredDataStructure unStructuredDataStructure = dsm.UnStructuredDataStructureRepo.Get(ID); this.dataStructure = unStructuredDataStructure; if (this.dataStructure != null) { this.variables = null; if (this.dataStructure.Datasets == null) { inUse = false; } else { if (this.dataStructure.Datasets.Count > 0) { inUse = true; DatasetListElement datasetListElement = new DatasetListElement(); DatasetManager dm = new DatasetManager(); foreach (Dataset d in unStructuredDataStructure.Datasets) { datasetListElement = new DatasetListElement(d.Id, XmlDatasetHelper.GetInformation(d, AttributeNames.title)); datasets.Add(datasetListElement); } } else { inUse = false; } } return(unStructuredDataStructure); } else { this.dataStructure = new StructuredDataStructure(); return(unStructuredDataStructure); } } }
public void fillDatasetList() { using (DatasetManager dm = new DatasetManager()) { DatasetListElement datasetListElement = new DatasetListElement(); datasets = new List <DatasetListElement>(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); foreach (var item in dm.GetDatasetLatestVersions(dataStructure.Id, true)) { datasetListElement = new DatasetListElement(item.Key, item.Value.Title); datasets.Add(datasetListElement); } } }
public string GetTitleById(long id) { using (var uow = this.GetUnitOfWork()) { var dm = new DatasetManager(); try { var datasetHelper = new XmlDatasetHelper(); return(datasetHelper.GetInformation(id, NameAttributeValues.title)); } finally { dm.Dispose(); } } }
public static GFBIOPangaeaFormularObject GetGFBIOPangaeaFormularObject(long datasetId) { using (DatasetManager datasetManager = new DatasetManager()) using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager()) { Dataset dataset = datasetManager.GetDataset(datasetId); DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(datasetId); MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(dataset.MetadataStructure.Id); GFBIOPangaeaFormularObject gfbioPangaeaFormularObject = new GFBIOPangaeaFormularObject(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); string title = datasetVersion.Title; string description = datasetVersion.Description; return(gfbioPangaeaFormularObject); } }
public int CountEntities() { using (var uow = this.GetUnitOfWork()) { DatasetManager dm = new DatasetManager(); MetadataStructureManager metadataStructureManager = new MetadataStructureManager(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); var entities = new List <EntityStoreItem>(); int count = 0; try { List <long> metadataStructureIds = metadataStructureManager.Repo.Query().Select(m => m.Id).ToList(); List <long> metadataSturctureIdsForDatasets = new List <long>(); metadataStructureIds.ForEach(m => xmlDatasetHelper.HasEntity(m, _entityName)); foreach (var msid in metadataStructureIds) { var datasetIds = new List <long>(); // get all datasets based on metadata data structure id datasetIds = dm.DatasetRepo.Query(d => d.MetadataStructure.Id.Equals(msid)).Select(d => d.Id).ToList(); count += datasetIds.Count; } return(count); } catch (Exception ex) { throw ex; } finally { dm.Dispose(); metadataStructureManager.Dispose(); } } }
public int CountVersions(long id) { DatasetManager dm = new DatasetManager(); try { var datasetIds = dm.GetDatasetLatestIds(); var datasetHelper = new XmlDatasetHelper(); int version = dm.GetDataset(id).Versions.Count; return(version); } catch (Exception ex) { return(0); } finally { dm.Dispose(); } }
public void fillDatasetList() { DatasetListElement datasetListElement = new DatasetListElement(); DatasetManager dm = null; datasets = new List <DatasetListElement>(); try { dm = new DatasetManager(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); foreach (var item in dm.GetDatasetLatestVersions(dataStructure.Id, true)) { datasetListElement = new DatasetListElement(item.Key, xmlDatasetHelper.GetInformation(item.Value.Id, NameAttributeValues.title)); datasets.Add(datasetListElement); } } finally { dm.Dispose(); } }
public List <ListViewItem> LoadDatasetViewList() { List <ListViewItem> temp = new List <ListViewItem>(); DatasetManager datasetManager = new DatasetManager(); EntityPermissionManager entityPermissionManager = new EntityPermissionManager(); //get all datasetsid where the current userer has access to UserManager userManager = new UserManager(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); try { List <long> datasetIds = entityPermissionManager.GetKeys(GetUsernameOrDefault(), "Dataset", typeof(Dataset), RightType.Write); foreach (long id in datasetIds) { if (datasetManager.IsDatasetCheckedIn(id)) { string title = xmlDatasetHelper.GetInformation(id, NameAttributeValues.title); string description = xmlDatasetHelper.GetInformation(id, NameAttributeValues.description); temp.Add(new ListViewItem(id, title, description)); } } return(temp.OrderBy(p => p.Title).ToList()); } finally { datasetManager.Dispose(); entityPermissionManager.Dispose(); userManager.Dispose(); } }
private HttpResponseMessage getData(long id, int version, string token, string projection = null, string selection = null) { DatasetManager datasetManager = new DatasetManager(); UserManager userManager = new UserManager(); EntityPermissionManager entityPermissionManager = new EntityPermissionManager(); EntityManager entityManager = new EntityManager(); bool isPublic = false; try { // if a dataset is public, then the api should also return data if there is no token for a user #region is public long?entityTypeId = entityManager.FindByName(typeof(Dataset).Name)?.Id; entityTypeId = entityTypeId.HasValue ? entityTypeId.Value : -1; isPublic = entityPermissionManager.Exists(null, entityTypeId.Value, id); #endregion is public if (!isPublic && String.IsNullOrEmpty(token)) { var request = Request.CreateResponse(); request.Content = new StringContent("Bearer token not exist."); return(request); } User user = userManager.Users.Where(u => u.Token.Equals(token)).FirstOrDefault(); if (isPublic || user != null) { if (isPublic || entityPermissionManager.HasEffectiveRight(user.Name, typeof(Dataset), id, RightType.Read)) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); OutputDataManager ioOutputDataManager = new OutputDataManager(); Dataset dataset = datasetManager.GetDataset(id); // If the requested version is -1 or the last version of the dataset, then the data will be loaded in a // different way than when loading the data from an older version bool isLatestVersion = false; if (version == -1 || dataset.Versions.Count == version) { isLatestVersion = true; } if (isLatestVersion) { #region get data from the latest version of a dataset DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(id); string title = datasetVersion.Title; // check the data sturcture type ... if (datasetVersion.Dataset.DataStructure.Self is StructuredDataStructure) { //FilterExpression filter = null; //OrderByExpression orderBy = null; //ProjectionExpression projectionExpression = GetProjectionExpression(projection); // apply selection and projection long count = datasetManager.RowCount(id); DataTable dt = datasetManager.GetLatestDatasetVersionTuples(id, null, null, null, 0, (int)count); dt.Strip(); if (!string.IsNullOrEmpty(selection)) { dt = OutputDataManager.SelectionOnDataTable(dt, selection, true); } if (!string.IsNullOrEmpty(projection)) { // make the header names upper case to make them case insensitive dt = OutputDataManager.ProjectionOnDataTable(dt, projection.ToUpper().Split(',')); } dt.TableName = id + "_data"; DatasetModel model = new DatasetModel(); model.DataTable = dt; var response = Request.CreateResponse(); response.Content = new ObjectContent(typeof(DatasetModel), model, new DatasetModelCsvFormatter(model.DataTable.TableName)); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); //set headers on the "response" return(response); #endregion get data from the latest version of a dataset //return model; } else { return(Request.CreateResponse()); } } else { #region load data of a older version of a dataset int index = version - 1; if (version >= dataset.Versions.Count) { return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, String.Format("This version ({0}) is not available for the dataset", version))); } DatasetVersion datasetVersion = dataset.Versions.OrderBy(d => d.Timestamp).ElementAt(version - 1); string title = datasetVersion.Title; // check the data sturcture type ... if (datasetVersion.Dataset.DataStructure.Self is StructuredDataStructure) { //FilterExpression filter = null; //OrderByExpression orderBy = null; // apply selection and projection int count = datasetManager.GetDatasetVersionEffectiveTuples(datasetVersion).Count; DataTable dt = datasetManager.GetDatasetVersionTuples(datasetVersion.Id, 0, count); dt.Strip(); if (!string.IsNullOrEmpty(selection)) { dt = OutputDataManager.SelectionOnDataTable(dt, selection); } if (!string.IsNullOrEmpty(projection)) { // make the header names upper case to make them case insensitive dt = OutputDataManager.ProjectionOnDataTable(dt, projection.ToUpper().Split(',')); } dt.TableName = id + "_data"; DatasetModel model = new DatasetModel(); model.DataTable = dt; var response = Request.CreateResponse(); response.Content = new ObjectContent(typeof(DatasetModel), model, new DatasetModelCsvFormatter(model.DataTable.TableName)); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); //set headers on the "response" return(response); } else // return files of the unstructure dataset { return(Request.CreateResponse()); } #endregion load data of a older version of a dataset } } else // has rights? { var request = Request.CreateResponse(); request.Content = new StringContent("User has no read right."); return(request); } } else { var request = Request.CreateResponse(); request.Content = new StringContent("User is not available."); return(request); } } catch (Exception e) { throw e; } finally { datasetManager.Dispose(); userManager.Dispose(); entityPermissionManager.Dispose(); entityManager.Dispose(); } }
public HttpResponseMessage Post([FromBody] PostApiDatasetModel dataset) { var request = Request.CreateResponse(); User user = null; string error = ""; long datasetId = 0; long researchPlanId = 1; using (DatasetManager datasetManager = new DatasetManager()) using (DataStructureManager dataStructureManager = new DataStructureManager()) using (ResearchPlanManager researchPlanManager = new ResearchPlanManager()) using (UserManager userManager = new UserManager()) using (EntityPermissionManager entityPermissionManager = new EntityPermissionManager()) using (MetadataStructureManager metadataStructureManager = new MetadataStructureManager()) { try { #region security string token = this.Request.Headers.Authorization?.Parameter; if (String.IsNullOrEmpty(token)) { request.Content = new StringContent("Bearer token not exist."); return(request); } user = userManager.Users.Where(u => u.Token.Equals(token)).FirstOrDefault(); if (user == null) { request.Content = new StringContent("Token is not valid."); return(request); } #endregion security #region incomming values check // check incomming values if (dataset.Title == null) { error += "title not existing."; } if (dataset.Description == null) { error += "description not existing."; } if (dataset.MetadataStructureId == 0) { error += "metadata structure id should not be null. "; } if (dataset.DataStructureId == 0) { error += "datastructure id should not be null. "; } if (!string.IsNullOrEmpty(error)) { request.Content = new StringContent(error); return(request); } #endregion incomming values check #region create dataset DataStructure dataStructure = dataStructureManager.StructuredDataStructureRepo.Get(dataset.DataStructureId); //if datastructure is not a structured one if (dataStructure == null) { dataStructure = dataStructureManager.UnStructuredDataStructureRepo.Get(dataset.DataStructureId); } if (dataStructure == null) { request.Content = new StringContent("A data structure with id " + dataset.DataStructureId + "does not exist."); return(request); } ResearchPlan rp = researchPlanManager.Repo.Get(researchPlanId); if (rp == null) { request.Content = new StringContent("A research plan with id " + researchPlanId + "does not exist."); return(request); } MetadataStructure metadataStructure = metadataStructureManager.Repo.Get(dataset.MetadataStructureId); if (metadataStructure == null) { request.Content = new StringContent("A metadata structure with id " + dataset.MetadataStructureId + "does not exist."); return(request); } var newDataset = datasetManager.CreateEmptyDataset(dataStructure, rp, metadataStructure); datasetId = newDataset.Id; // add security entityPermissionManager.Create <User>(user.UserName, "Dataset", typeof(Dataset), newDataset.Id, Enum.GetValues(typeof(RightType)).Cast <RightType>().ToList()); //add title and description to the metadata if (datasetManager.IsDatasetCheckedOutFor(datasetId, user.UserName) || datasetManager.CheckOutDataset(datasetId, user.UserName)) { DatasetVersion workingCopy = datasetManager.GetDatasetWorkingCopy(datasetId); XmlMetadataWriter xmlMetadataWriter = new XmlMetadataWriter(XmlNodeMode.xPath); XDocument xdoc = xmlMetadataWriter.CreateMetadataXml(dataset.MetadataStructureId); workingCopy.Metadata = XmlUtility.ToXmlDocument(xdoc); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); workingCopy.Metadata = xmlDatasetHelper.SetInformation(workingCopy, workingCopy.Metadata, NameAttributeValues.title, dataset.Title); workingCopy.Title = dataset.Title; workingCopy.Metadata = xmlDatasetHelper.SetInformation(workingCopy, workingCopy.Metadata, NameAttributeValues.description, dataset.Description); workingCopy.Description = dataset.Description; ////set modification workingCopy.ModificationInfo = new EntityAuditInfo() { Performer = user.UserName, Comment = "Metadata", ActionType = AuditActionType.Create }; datasetManager.EditDatasetVersion(workingCopy, null, null, null); datasetManager.CheckInDataset(datasetId, "Title and description were added to the dataset via the api.", user.UserName, ViewCreationBehavior.None); } request.Content = new StringContent("the dataset " + dataset.Title + "(" + datasetId + ") was successfully created."); return(request); #endregion create dataset } catch (Exception ex) { request.Content = new StringContent(ex.Message); return(request); } } }
private HttpResponseMessage getData(long id, int variableId, string token) { DatasetManager datasetManager = new DatasetManager(); UserManager userManager = new UserManager(); EntityPermissionManager entityPermissionManager = new EntityPermissionManager(); EntityManager entityManager = new EntityManager(); DataStructureManager dataStructureManager = null; bool isPublic = false; try { // if a dataset is public, then the api should also return data if there is no token for a user #region is public dataStructureManager = new DataStructureManager(); long?entityTypeId = entityManager.FindByName(typeof(Dataset).Name)?.Id; entityTypeId = entityTypeId.HasValue ? entityTypeId.Value : -1; isPublic = entityPermissionManager.Exists(null, entityTypeId.Value, id); #endregion is public if (!isPublic && String.IsNullOrEmpty(token)) { var request = Request.CreateResponse(); request.Content = new StringContent("Bearer token not exist."); return(request); } User user = userManager.Users.Where(u => u.Token.Equals(token)).FirstOrDefault(); if (isPublic || user != null) { if (isPublic || entityPermissionManager.HasEffectiveRight(user.Name, typeof(Dataset), id, RightType.Read)) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); OutputDataManager ioOutputDataManager = new OutputDataManager(); Dataset dataset = datasetManager.GetDataset(id); DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(id); string title = datasetVersion.Title; // check the data sturcture type ... if (datasetVersion.Dataset.DataStructure.Self is StructuredDataStructure) { object stats = new object(); DataTable dt = new DataTable("Varibales"); List <ApiDataStatisticModel> dataStatisticModels = new List <ApiDataStatisticModel>(); if (variableId == -1) { StructuredDataStructure structuredDataStructure = dataStructureManager.StructuredDataStructureRepo.Get(datasetVersion.Dataset.DataStructure.Id); List <string> varIds = new List <string>(); foreach (Variable vs in structuredDataStructure.Variables) { varIds.Add("var" + vs.Id); } dt = GetDuplicates(id, varIds); } else { } //dt.Strip(); dt.TableName = id + "_data"; DatasetModel model = new DatasetModel(); model.DataTable = dt; var response = Request.CreateResponse(HttpStatusCode.OK); string resp = JsonConvert.SerializeObject(model); response.Content = new StringContent(resp, System.Text.Encoding.UTF8, "application/json"); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return(response); } else { return(Request.CreateResponse()); } } else // has rights? { var request = Request.CreateResponse(); request.Content = new StringContent("User has no read right."); return(request); } } else { var request = Request.CreateResponse(); request.Content = new StringContent("User is not available."); return(request); } } catch (Exception e) { throw e; } finally { datasetManager.Dispose(); userManager.Dispose(); entityPermissionManager.Dispose(); entityManager.Dispose(); dataStructureManager.Dispose(); } }
public List <EntityStoreItem> GetEntities(int skip, int take) { bool withPaging = (take > 0); using (var uow = this.GetUnitOfWork()) { DatasetManager dm = new DatasetManager(); MetadataStructureManager metadataStructureManager = new MetadataStructureManager(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); var entities = new List <EntityStoreItem>(); try { List <long> metadataStructureIds = metadataStructureManager.Repo.Query().Select(m => m.Id).ToList(); List <long> metadataSturctureIdsForDatasets = new List <long>(); metadataSturctureIdsForDatasets = metadataStructureIds.Where(m => xmlDatasetHelper.HasEntity(m, _entityName)).ToList(); foreach (var msid in metadataSturctureIdsForDatasets) { var datasetIds = new List <long>(); // get all datasets based on metadata data structure id if (withPaging) { datasetIds = dm.DatasetRepo .Query(d => d.MetadataStructure.Id.Equals(msid)) .Skip(skip) .Take(take) .Select(d => d.Id).ToList(); } else { datasetIds = dm.DatasetRepo.Query(d => d.MetadataStructure.Id.Equals(msid)).Select(d => d.Id).ToList(); } if (!datasetIds.Any()) { continue; } // create tuples based on dataset id list, and get latest version of each dataset List <DatasetVersion> datasetVersions = dm.GetDatasetLatestVersions(datasetIds, false); foreach (var dsv in datasetVersions) { var e = new EntityStoreItem() { Id = dsv.Dataset.Id, Title = dsv.Title, Version = dm.GetDatasetVersionCount(dsv.Dataset.Id) }; entities.Add(e); } } return(entities.ToList()); } catch (Exception ex) { throw ex; } finally { dm.Dispose(); metadataStructureManager.Dispose(); } } }
//temporary solution: norman :FinishUpload2 public List <Error> FinishUpload(TaskManager taskManager) { DataStructureManager dsm = new DataStructureManager(); DatasetManager dm = new DatasetManager(); try { List <Error> temp = new List <Error>(); DatasetVersion workingCopy = new DatasetVersion(); //datatuple list List <DataTuple> rows = new List <DataTuple>(); Dataset ds = null; bool inputWasAltered = false; if (TaskManager.Bus.ContainsKey(TaskManager.DATASET_ID) && TaskManager.Bus.ContainsKey(TaskManager.DATASTRUCTURE_ID)) { long id = Convert.ToInt32(TaskManager.Bus[TaskManager.DATASET_ID]); long iddsd = Convert.ToInt32(TaskManager.Bus[TaskManager.DATASTRUCTURE_ID]); ds = dm.GetDataset(id); // Javad: Please check if the dataset does exists!! //GetValues from the previus version // Status DatasetVersion latestVersion = dm.GetDatasetLatestVersion(ds); string status = DatasetStateInfo.NotValid.ToString(); if (latestVersion.StateInfo != null) { status = latestVersion.StateInfo.State; } #region Progress Informations if (TaskManager.Bus.ContainsKey(TaskManager.CURRENTPACKAGESIZE)) { TaskManager.Bus[TaskManager.CURRENTPACKAGESIZE] = 0; } else { TaskManager.Bus.Add(TaskManager.CURRENTPACKAGESIZE, 0); } if (TaskManager.Bus.ContainsKey(TaskManager.CURRENTPACKAGE)) { TaskManager.Bus[TaskManager.CURRENTPACKAGE] = 0; } else { TaskManager.Bus.Add(TaskManager.CURRENTPACKAGE, 0); } #endregion #region structured data if (TaskManager.Bus.ContainsKey(TaskManager.DATASTRUCTURE_TYPE) && TaskManager.Bus[TaskManager.DATASTRUCTURE_TYPE].Equals(DataStructureType.Structured)) { string title = ""; long datasetid = ds.Id; XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); title = xmlDatasetHelper.GetInformation(ds.Id, NameAttributeValues.title); try { //Stopwatch fullTime = Stopwatch.StartNew(); //Stopwatch loadDT = Stopwatch.StartNew(); List <long> datatupleFromDatabaseIds = dm.GetDatasetVersionEffectiveTupleIds(dm.GetDatasetLatestVersion(ds.Id)); //loadDT.Stop(); //Debug.WriteLine("Load DT From Db Time " + loadDT.Elapsed.TotalSeconds.ToString()); StructuredDataStructure sds = dsm.StructuredDataStructureRepo.Get(iddsd); dsm.StructuredDataStructureRepo.LoadIfNot(sds.Variables); #region excel reader if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".xlsm")) { int packageSize = 10000; TaskManager.Bus[TaskManager.CURRENTPACKAGESIZE] = packageSize; int counter = 0; ExcelReader reader = new ExcelReader(); //schleife dm.CheckOutDatasetIfNot(ds.Id, GetUsernameOrDefault()); // there are cases, the dataset does not get checked out!! if (!dm.IsDatasetCheckedOutFor(ds.Id, GetUsernameOrDefault())) { throw new Exception(string.Format("Not able to checkout dataset '{0}' for user '{1}'!", ds.Id, GetUsernameOrDefault())); } workingCopy = dm.GetDatasetWorkingCopy(ds.Id); //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } do { //Stopwatch packageTime = Stopwatch.StartNew(); counter++; TaskManager.Bus[TaskManager.CURRENTPACKAGE] = counter; // open file Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); Stopwatch upload = Stopwatch.StartNew(); rows = reader.ReadFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), sds, (int)id, packageSize); upload.Stop(); Debug.WriteLine("ReadFile: " + counter + " Time " + upload.Elapsed.TotalSeconds.ToString()); if (reader.ErrorMessages.Count > 0) { //model.ErrorList = reader.errorMessages; } else { //XXX Add packagesize to excel read function if (TaskManager.Bus.ContainsKey(TaskManager.DATASET_STATUS)) { if (TaskManager.Bus[TaskManager.DATASET_STATUS].ToString().Equals("new")) { upload = Stopwatch.StartNew(); dm.EditDatasetVersion(workingCopy, rows, null, null); upload.Stop(); Debug.WriteLine("EditDatasetVersion: " + counter + " Time " + upload.Elapsed.TotalSeconds.ToString()); //Debug.WriteLine("----"); } if (TaskManager.Bus[TaskManager.DATASET_STATUS].ToString().Equals("edit")) { if (rows.Count() > 0) { //Stopwatch split = Stopwatch.StartNew(); Dictionary <string, List <DataTuple> > splittedDatatuples = new Dictionary <string, List <DataTuple> >(); splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)TaskManager.Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); //split.Stop(); //Debug.WriteLine("Split : " + counter + " Time " + split.Elapsed.TotalSeconds.ToString()); //Stopwatch upload = Stopwatch.StartNew(); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); // upload.Stop(); // Debug.WriteLine("Upload : " + counter + " Time " + upload.Elapsed.TotalSeconds.ToString()); // Debug.WriteLine("----"); } } } else { } } Stream.Close(); //packageTime.Stop(); //Debug.WriteLine("Package : " + counter + " packageTime Time " + packageTime.Elapsed.TotalSeconds.ToString()); } while (rows.Count() > 0); //fullTime.Stop(); //Debug.WriteLine("FullTime " + fullTime.Elapsed.TotalSeconds.ToString()); } #endregion #region ascii reader if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".csv") || TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".txt")) { // open file AsciiReader reader = new AsciiReader(); //Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); //DatasetManager dm = new DatasetManager(); //Dataset ds = dm.GetDataset(id); Stopwatch totalTime = Stopwatch.StartNew(); if (dm.IsDatasetCheckedOutFor(ds.Id, GetUsernameOrDefault()) || dm.CheckOutDataset(ds.Id, GetUsernameOrDefault())) { workingCopy = dm.GetDatasetWorkingCopy(ds.Id); int packageSize = 100000; TaskManager.Bus[TaskManager.CURRENTPACKAGESIZE] = packageSize; //schleife int counter = 0; //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } do { counter++; inputWasAltered = false; TaskManager.Bus[TaskManager.CURRENTPACKAGE] = counter; Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); rows = reader.ReadFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), (AsciiFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], sds, id, packageSize); Stream.Close(); if (reader.ErrorMessages.Count > 0) { foreach (var err in reader.ErrorMessages) { temp.Add(new Error(ErrorType.Dataset, err.GetMessage())); } //return temp; } //model.Validated = true; Stopwatch dbTimer = Stopwatch.StartNew(); if (TaskManager.Bus.ContainsKey(TaskManager.DATASET_STATUS)) { if (TaskManager.Bus[TaskManager.DATASET_STATUS].ToString().Equals("new")) { dm.EditDatasetVersion(workingCopy, rows, null, null); } if (TaskManager.Bus[TaskManager.DATASET_STATUS].ToString().Equals("edit")) { if (rows.Count() > 0) { //Dictionary<string, List<DataTuple>> splittedDatatuples = new Dictionary<string, List<AbstractTuple>>(); var splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)TaskManager.Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); inputWasAltered = true; } } } else { if (rows.Count() > 0) { Dictionary <string, List <DataTuple> > splittedDatatuples = new Dictionary <string, List <DataTuple> >(); splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)TaskManager.Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); inputWasAltered = true; } } dbTimer.Stop(); Debug.WriteLine(" db time" + dbTimer.Elapsed.TotalSeconds.ToString()); } while (rows.Count() > 0 || inputWasAltered == true); totalTime.Stop(); Debug.WriteLine(" Total Time " + totalTime.Elapsed.TotalSeconds.ToString()); } //Stream.Close(); } #endregion #region contentdescriptors //remove all contentdescriptors from the old version //generatedTXT if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generatedTXT"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generatedTXT")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } //generatedCSV if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generatedCSV"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generatedCSV")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } //generated if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generated"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generated")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } #endregion // ToDo: Get Comment from ui and users MoveAndSaveOriginalFileInContentDiscriptor(workingCopy); dm.CheckInDataset(ds.Id, "upload data from upload wizard", GetUsernameOrDefault()); //send email var es = new EmailService(); es.Send(MessageHelper.GetUpdateDatasetHeader(), MessageHelper.GetUpdateDatasetMessage(datasetid, title, GetUsernameOrDefault()), ConfigurationManager.AppSettings["SystemEmail"] ); } catch (Exception e) { temp.Add(new Error(ErrorType.Other, "Can not upload. : " + e.Message)); var es = new EmailService(); es.Send(MessageHelper.GetErrorHeader(), "Can not upload. : " + e.Message, ConfigurationManager.AppSettings["SystemEmail"] ); } finally { } } #endregion #region unstructured data if (TaskManager.Bus.ContainsKey(TaskManager.DATASTRUCTURE_TYPE) && TaskManager.Bus[TaskManager.DATASTRUCTURE_TYPE].Equals(DataStructureType.Unstructured)) { // checkout the dataset, apply the changes, and check it in. if (dm.IsDatasetCheckedOutFor(ds.Id, GetUsernameOrDefault()) || dm.CheckOutDataset(ds.Id, GetUsernameOrDefault())) { try { workingCopy = dm.GetDatasetWorkingCopy(ds.Id); using (var unitOfWork = this.GetUnitOfWork()) { workingCopy = unitOfWork.GetReadOnlyRepository <DatasetVersion>().Get(workingCopy.Id); //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } unitOfWork.GetReadOnlyRepository <DatasetVersion>().Load(workingCopy.ContentDescriptors); SaveFileInContentDiscriptor(workingCopy); } dm.EditDatasetVersion(workingCopy, null, null, null); // ToDo: Get Comment from ui and users dm.CheckInDataset(ds.Id, "upload unstructured data", GetUsernameOrDefault(), ViewCreationBehavior.None); } catch (Exception ex) { throw ex; } } } #endregion } else { temp.Add(new Error(ErrorType.Dataset, "Dataset is not selected.")); } if (temp.Count <= 0) { dm.CheckInDataset(ds.Id, "checked in but no update on data tuples", GetUsernameOrDefault(), ViewCreationBehavior.None); } else { dm.UndoCheckoutDataset(ds.Id, GetUsernameOrDefault()); } return(temp); } finally { dm.Dispose(); dsm.Dispose(); } }
private string getEntityName(long datasetid) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); return(xmlDatasetHelper.GetEntityName(datasetid)); }
private HttpResponseMessage getData(long id, int variableId, string token) { DatasetManager datasetManager = new DatasetManager(); UserManager userManager = new UserManager(); EntityPermissionManager entityPermissionManager = new EntityPermissionManager(); EntityManager entityManager = new EntityManager(); DataStructureManager dataStructureManager = null; bool isPublic = false; try { // if a dataset is public, then the api should also return data if there is no token for a user #region is public dataStructureManager = new DataStructureManager(); long?entityTypeId = entityManager.FindByName(typeof(Dataset).Name)?.Id; entityTypeId = entityTypeId.HasValue ? entityTypeId.Value : -1; isPublic = entityPermissionManager.Exists(null, entityTypeId.Value, id); #endregion is public if (!isPublic && String.IsNullOrEmpty(token)) { var request = Request.CreateResponse(); request.Content = new StringContent("Bearer token not exist."); return(request); } User user = userManager.Users.Where(u => u.Token.Equals(token)).FirstOrDefault(); if (isPublic || user != null) { if (isPublic || entityPermissionManager.HasEffectiveRight(user.Name, typeof(Dataset), id, RightType.Read)) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); OutputDataManager ioOutputDataManager = new OutputDataManager(); Dataset dataset = datasetManager.GetDataset(id); DatasetVersion datasetVersion = datasetManager.GetDatasetLatestVersion(id); string title = datasetVersion.Title; // check the data sturcture type ... if (datasetVersion.Dataset.DataStructure.Self is StructuredDataStructure) { object stats = new object(); DataTable dt = new DataTable("Varibales"); DataTable dtMissingValues = new DataTable("MissingValues"); dtMissingValues.Columns.Add("placeholder", typeof(String)); dtMissingValues.Columns.Add("displayName", typeof(String)); List <ApiDataStatisticModel> dataStatisticModels = new List <ApiDataStatisticModel>(); StructuredDataStructure structuredDataStructure = dataStructureManager.StructuredDataStructureRepo.Get(datasetVersion.Dataset.DataStructure.Id); if (variableId == -1) { foreach (Variable vs in structuredDataStructure.Variables) { ApiDataStatisticModel dataStatisticModel = new ApiDataStatisticModel(); dt = GetUniqueValues(id, vs.Id); dataStatisticModel.VariableId = vs.Id; dataStatisticModel.uniqueValues = dt; dataStatisticModel.minLength = dt.Compute("Min(length)", string.Empty).ToString(); dataStatisticModel.maxLength = dt.Compute("Max(length)", string.Empty).ToString(); dataStatisticModel.count = dt.Compute("Sum(count)", string.Empty).ToString(); dtMissingValues.Clear(); foreach (var missingValue in vs.MissingValues) { DataRow workRow = dtMissingValues.NewRow(); workRow["placeholder"] = missingValue.Placeholder; workRow["displayName"] = missingValue.DisplayName; dtMissingValues.Rows.Add(workRow); } dataStatisticModel.min = GetMin(dtMissingValues, dt); dataStatisticModel.max = GetMax(dtMissingValues, dt); dataStatisticModel.missingValues = dtMissingValues; dataStatisticModels.Add(dataStatisticModel); } } else { Variable variable = new Variable(); foreach (Variable vs in structuredDataStructure.Variables) { if (vs.Id == variableId) { variable = vs; } } ApiDataStatisticModel dataStatisticModel = new ApiDataStatisticModel(); dt = GetUniqueValues(id, variableId); dataStatisticModel.VariableId = variableId; dataStatisticModel.uniqueValues = dt; dataStatisticModel.minLength = dt.Compute("Min(length)", string.Empty).ToString(); dataStatisticModel.maxLength = dt.Compute("Max(length)", string.Empty).ToString(); dataStatisticModel.count = dt.Compute("Sum(count)", string.Empty).ToString(); foreach (var missingValue in variable.MissingValues) { DataRow workRow = dtMissingValues.NewRow(); workRow["placeholder"] = missingValue.Placeholder; workRow["displayName"] = missingValue.DisplayName; dtMissingValues.Rows.Add(workRow); } dataStatisticModel.min = GetMin(dtMissingValues, dt); dataStatisticModel.max = GetMax(dtMissingValues, dt); dataStatisticModel.missingValues = dtMissingValues; dataStatisticModels.Add(dataStatisticModel); } dt.Strip(); dt.TableName = id + "_data"; DatasetModel model = new DatasetModel(); model.DataTable = dt; var response = Request.CreateResponse(HttpStatusCode.OK); string resp = JsonConvert.SerializeObject(dataStatisticModels); response.Content = new StringContent(resp, System.Text.Encoding.UTF8, "application/json"); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return(response); } else { return(Request.CreateResponse()); } } else // has rights? { var request = Request.CreateResponse(); request.Content = new StringContent("User has no read right."); return(request); } } else { var request = Request.CreateResponse(); request.Content = new StringContent("User is not available."); return(request); } } catch (Exception e) { throw e; } finally { datasetManager.Dispose(); userManager.Dispose(); entityPermissionManager.Dispose(); entityManager.Dispose(); dataStructureManager.Dispose(); } }
public void GenerateSeedData() { #region create entities using (var entityManager = new EntityManager()) { // Entities Entity entity = entityManager.Entities.Where(e => e.Name.ToUpperInvariant() == "Publication".ToUpperInvariant()).FirstOrDefault(); if (entity == null) { entity = new Entity(); entity.Name = "Publication"; entity.EntityType = typeof(Dataset); entity.EntityStoreType = typeof(PublicationStore); entity.UseMetadata = true; entity.Securable = true; //add to Extra XmlDocument xmlDoc = new XmlDocument(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); xmlDatasetHelper.AddReferenceToXml(xmlDoc, AttributeNames.name.ToString(), "pub", AttributeType.parameter.ToString(), "extra/modules/module"); entity.Extra = xmlDoc; entityManager.Create(entity); } } #endregion #region SECURITY using (FeatureManager featureManager = new FeatureManager()) using (OperationManager operationManager = new OperationManager()) { Feature PublicationFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Publications")); if (PublicationFeature == null) { PublicationFeature = featureManager.Create("Publications", "Publications"); } Feature PublicationCreationFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Publication Creation")); if (PublicationCreationFeature == null) { PublicationCreationFeature = featureManager.Create("Publication Creation", "Publication Creation", PublicationFeature); } Feature PublicationShowFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Publication Show")); if (PublicationShowFeature == null) { PublicationShowFeature = featureManager.Create("Publication Show", "Publication Show", PublicationFeature); } operationManager.Create("PUB", "CreatePublication", "*", PublicationCreationFeature); operationManager.Create("PUB", "UploadPublication", "*", PublicationCreationFeature); operationManager.Create("PUB", "ShowPublication", "*", PublicationShowFeature); } #endregion }
public void GenerateSeedData() { ResearchPlanManager researchPlanManager = new ResearchPlanManager(); DataStructureManager dataStructureManager = new DataStructureManager(); UnitManager unitManager = new UnitManager(); EntityManager entityManager = new EntityManager(); FeatureManager featureManager = new FeatureManager(); OperationManager operationManager = new OperationManager(); MetadataStructureManager metadataStructureManager = new MetadataStructureManager(); try { #region create none researchPlan if (!researchPlanManager.Repo.Get().Any(r => r.Title.Equals("none"))) { researchPlanManager.Create("none", "If no research plan is used."); } #endregion create none researchPlan #region create none structure if (!dataStructureManager.AllTypesDataStructureRepo.Get().Any(d => d.Name.Equals("none"))) { dataStructureManager.CreateUnStructuredDataStructure("none", "If no data strutcure is used."); } #endregion create none structure #region create none unit Dimension dimension = null; if (!unitManager.DimensionRepo.Get().Any(d => d.Name.ToLower().Equals("none"))) { dimension = unitManager.Create("none", "none", "If no unit is used."); // the null dimension should be replaced bz a proper valid one. Javad 11.06 } else { dimension = unitManager.DimensionRepo.Get().Where(d => d.Name.ToLower().Equals("none")).FirstOrDefault(); } if (!unitManager.Repo.Get().Any(u => u.Name.ToLower().Equals("none"))) { unitManager.Create("none", "none", "If no unit is used.", dimension, MeasurementSystem.Unknown); } #endregion create none unit #region create entities // Entities Entity entity = entityManager.Entities.Where(e => e.Name.ToUpperInvariant() == "Dataset".ToUpperInvariant()).FirstOrDefault(); if (entity == null) { entity = new Entity(); entity.Name = "Dataset"; entity.EntityType = typeof(Dataset); entity.EntityStoreType = typeof(Xml.Helpers.DatasetStore); entity.UseMetadata = true; entity.Securable = true; //add to Extra XmlDocument xmlDoc = new XmlDocument(); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); xmlDatasetHelper.AddReferenceToXml(xmlDoc, AttributeNames.name.ToString(), "ddm", AttributeType.parameter.ToString(), "extra/modules/module"); entity.Extra = xmlDoc; entityManager.Create(entity); } else { XmlDocument xmlDoc = new XmlDocument(); if (entity.Extra != null) { xmlDoc.AppendChild(entity.Extra); } //update to Extra XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); xmlDatasetHelper.AddReferenceToXml(xmlDoc, AttributeNames.name.ToString(), "ddm", AttributeType.parameter.ToString(), "extra/modules/module"); entity.Extra = xmlDoc; entityManager.Update(entity); } #endregion create entities #region SECURITY //workflows = größere sachen, vielen operation //operations = einzelne actions //1.controller-> 1.Operation Feature DataCollectionFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Data Collection")); if (DataCollectionFeature == null) { DataCollectionFeature = featureManager.Create("Data Collection", "Data Collection"); } Feature DatasetCreationFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Data Creation")); if (DatasetCreationFeature == null) { DatasetCreationFeature = featureManager.Create("Data Creation", "Data Creation", DataCollectionFeature); } Feature DatasetUploadFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Dataset Upload")); if (DatasetUploadFeature == null) { DatasetUploadFeature = featureManager.Create("Dataset Upload", "Dataset Upload", DataCollectionFeature); } Feature ImportDataFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Import Data")); if (ImportDataFeature == null) { ImportDataFeature = featureManager.Create("Import Data", "Easy way to load data into bexis", DataCollectionFeature); } Feature MetadataManagementFeature = featureManager.FeatureRepository.Get().FirstOrDefault(f => f.Name.Equals("Metadata Management")); if (MetadataManagementFeature == null) { MetadataManagementFeature = featureManager.Create("Metadata Management", "Metadata Management", DataCollectionFeature); } #region Help Workflow operationManager.Create("DCM", "Help", "*"); #endregion Help Workflow #region Create Dataset Workflow operationManager.Create("DCM", "CreateDataset", "*", DatasetCreationFeature); operationManager.Create("DCM", "Form", "*"); operationManager.Create("Api", "DatasetIn", "*", DatasetCreationFeature); operationManager.Create("Api", "Dataset", "*", DatasetCreationFeature); operationManager.Create("Api", "MetadataIn", "*", DatasetCreationFeature); operationManager.Create("Api", "Metadata", "*", DatasetCreationFeature); #endregion Create Dataset Workflow #region Update Dataset Workflow operationManager.Create("DCM", "Submit", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitChooseUpdateMethod", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitGetFileInformation", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitSelectAFile", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitSpecifyDataset", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitSummary", "*", DatasetUploadFeature); operationManager.Create("DCM", "SubmitValidation", "*", DatasetUploadFeature); //Load files to server operationManager.Create("DCM", "Push", "*", DatasetUploadFeature); operationManager.Create("Api", "DataIn", "*", DatasetUploadFeature); operationManager.Create("Api", "Data", "*", DatasetUploadFeature); operationManager.Create("Api", "AttachmentIn", "*", DatasetUploadFeature); operationManager.Create("Api", "Attachment", "*", DatasetUploadFeature); #endregion Update Dataset Workflow #region Easy Upload operationManager.Create("DCM", "EasyUpload", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadSelectAFile", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadSelectAreas", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadSheetDataStructure", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadSheetSelectMetaData", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadSummary", "*", ImportDataFeature); operationManager.Create("DCM", "EasyUploadVerification", "*", ImportDataFeature); #endregion Easy Upload #region Metadata Managment Workflow operationManager.Create("DCM", "ImportMetadataStructure", "*", MetadataManagementFeature); operationManager.Create("DCM", "ImportMetadataStructureReadSource", "*", MetadataManagementFeature); operationManager.Create("DCM", "ImportMetadataStructureSelectAFile", "*", MetadataManagementFeature); operationManager.Create("DCM", "ImportMetadataStructureSetParameters", "*", MetadataManagementFeature); operationManager.Create("DCM", "ImportMetadataStructureSummary", "*", MetadataManagementFeature); operationManager.Create("DCM", "ManageMetadataStructure", "*", MetadataManagementFeature); operationManager.Create("DCM", "SubmitSpecifyDataset", "*", MetadataManagementFeature); #endregion Metadata Managment Workflow #region public available //because of reuse in ddm this controller must be public // but the funktions should be secured operationManager.Create("DCM", "Form", "*"); operationManager.Create("DCM", "EntityReference", "*"); //Attachments operationManager.Create("DCM", "Attachments", "*"); #endregion public available #endregion SECURITY #region Add Metadata if (!metadataStructureManager.Repo.Get().Any(m => m.Name.Equals("Basic ABCD"))) { string titleXPath = "Metadata/Metadata/MetadataType/Description/DescriptionType/Representation/MetadataDescriptionRepr/Title/TitleType"; string descriptionXpath = "Metadata/Metadata/MetadataType/Description/DescriptionType/Representation/MetadataDescriptionRepr/Details/DetailsType"; ImportSchema("Basic ABCD", "ABCD_2.06.XSD", "DataSet", entity.Name, entity.EntityType.FullName, titleXPath, descriptionXpath); } //if (!metadataStructureManager.Repo.Get().Any(m => m.Name.Equals("Full ABCD"))) //{ // string titleXPath = // "Metadata/Metadata/MetadataType/Description/DescriptionType/Representation/MetadataDescriptionRepr/Title/TitleType"; // string descriptionXpath = // "Metadata/Metadata/MetadataType/Description/DescriptionType/Representation/MetadataDescriptionRepr/Details/DetailsType"; // ImportSchema("Full ABCD", "ABCD_2.06.XSD", "DataSet", entity.Name, entity.EntityType.FullName, // titleXPath, descriptionXpath); //} if (!metadataStructureManager.Repo.Get().Any(m => m.Name.Equals("GBIF"))) { string titleXPath = "Metadata/Basic/BasicType/title/titleType"; string descriptionXpath = "Metadata/abstract/abstractType/para/paraType"; ImportSchema("GBIF", "eml.xsd", "Dataset", entity.Name, entity.EntityType.FullName, titleXPath, descriptionXpath); } //if (!metadataStructureManager.Repo.Get().Any(m => m.Name.Equals("Basic Eml"))) // ImportSchema("Basic Eml", "eml-dataset.xsd", entity.Name, entity.Name, entity.EntityType.FullName); #endregion Add Metadata } catch (Exception ex) { throw ex; } finally { researchPlanManager.Dispose(); dataStructureManager.Dispose(); unitManager.Dispose(); entityManager.Dispose(); featureManager.Dispose(); operationManager.Dispose(); metadataStructureManager.Dispose(); } }
/// <summary> /// /// </summary> /// <remarks></remarks> /// <seealso cref=""/> /// <param name="id"></param> /// <param name="metadataDoc"></param> /// <return></return> private void writeBexisIndex(long id, XmlDocument metadataDoc) { string docId = id.ToString();//metadataDoc.GetElementsByTagName("bgc:id")[0].InnerText; var dataset = new Document(); List <XmlNode> facetNodes = facetXmlNodeList; dataset.Add(new Field("doc_id", docId, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); /// /// Add a field to indicte whether the dataset is public, this will be used for the public datasets' search page. /// dataset.Add(new Field("gen_isPublic", entityPermissionManager.Exists(null, entityTypeId.Value, id) ? "TRUE" : "FALSE", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); dataset.Add(new Field("gen_entity_name", xmlDatasetHelper.GetEntityName(id), Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); foreach (XmlNode facet in facetNodes) { String multivalued = facet.Attributes.GetNamedItem("multivalued").Value; string[] metadataElementNames = facet.Attributes.GetNamedItem("metadata_name").Value.Split(','); String lucene_name = facet.Attributes.GetNamedItem("lucene_name").Value; foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { for (int i = 0; i < elemList.Count; i++) { string eleme = elemList[i].InnerText; if (!elemList[i].InnerText.Trim().Equals("")) { dataset.Add(new Field("facet_" + lucene_name, elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.NOT_ANALYZED)); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } } } List <XmlNode> propertyNodes = propertyXmlNodeList; foreach (XmlNode property in propertyNodes) { String multivalued = property.Attributes.GetNamedItem("multivalued").Value; String lucene_name = property.Attributes.GetNamedItem("lucene_name").Value; string[] metadataElementNames = property.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { String primitiveType = property.Attributes.GetNamedItem("primitive_type").Value; if (elemList[0] != null) { if (primitiveType.ToLower().Equals("string")) { dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.NOT_ANALYZED)); dataset.Add(new Field("ng_all", elemList[0].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[0].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[0].InnerText); } else if (primitiveType.ToLower().Equals("date")) { //DateTime MyDateTime = DateTime.Now; DateTime MyDateTime = new DateTime(); /*String dTFormatElementName = property.Attributes.GetNamedItem("date_format").Value; * XmlNodeList dtFormatElements = metadataDoc.GetElementsByTagName(dTFormatElementName); * String dateTimeFormat = dtFormatElements[0].InnerText;*/ if (DateTime.TryParse(elemList[0].InnerText, out MyDateTime)) { //MyDateTime = DateTime.ParseExact(elemList[0].InnerText, dateTimeFormat, // CultureInfo.InvariantCulture); long t = MyDateTime.Ticks; NumericField xyz = new NumericField("property_numeric_" + lucene_name).SetLongValue( MyDateTime.Ticks); String dateToString = MyDateTime.Date.ToString("d", CultureInfo.CreateSpecificCulture("en-US")); dataset.Add(xyz); dataset.Add(new Field("property_" + lucene_name, dateToString, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, MyDateTime.Date.ToString()); writeAutoCompleteIndex(docId, "ng_all", MyDateTime.Date.ToString()); } } else if (primitiveType.ToLower().Equals("integer")) { dataset.Add( new NumericField("property_numeric" + lucene_name).SetIntValue( Convert.ToInt32(elemList[0].InnerText))); dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); // writeAutoCompleteIndex(lucene_name, elemList[0].InnerText); } else if (primitiveType.ToLower().Equals("double")) { dataset.Add( new NumericField("property_numeric" + lucene_name).SetDoubleValue( Convert.ToDouble(elemList[0].InnerText))); dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[0].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[0].InnerText); } } } } } List <XmlNode> categoryNodes = categoryXmlNodeList; // add categories to index foreach (XmlNode category in categoryNodes) { String primitiveType = category.Attributes.GetNamedItem("primitive_type").Value; String lucene_name = category.Attributes.GetNamedItem("lucene_name").Value; String analysing = category.Attributes.GetNamedItem("analysed").Value; float boosting = Convert.ToSingle(category.Attributes.GetNamedItem("boost").Value); var toAnalyse = Lucene.Net.Documents.Field.Index.NOT_ANALYZED; if (analysing.ToLower().Equals("yes")) { toAnalyse = Lucene.Net.Documents.Field.Index.ANALYZED; } if (!category.Attributes.GetNamedItem("type").Value.Equals("primary_data_field")) { String multivalued = category.Attributes.GetNamedItem("multivalued").Value; String storing = category.Attributes.GetNamedItem("store").Value; var toStore = Lucene.Net.Documents.Field.Store.NO; if (storing.ToLower().Equals("yes")) { toStore = Lucene.Net.Documents.Field.Store.YES; } string[] metadataElementNames = category.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { for (int i = 0; i < elemList.Count; i++) { Field a = new Field("category_" + lucene_name, elemList[i].InnerText, toStore, toAnalyse); a.Boost = boosting; dataset.Add(a); dataset.Add(new Field("ng_" + lucene_name, elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED)); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } } else { //if the primary data index exist in the config - this means the primary data should be indexed includePrimaryData = true; } } indexPrimaryData(id, categoryNodes, ref dataset, docId, metadataDoc); List <XmlNode> generalNodes = generalXmlNodeList; foreach (XmlNode general in generalNodes) { String multivalued = general.Attributes.GetNamedItem("multivalued").Value; String primitiveType = general.Attributes.GetNamedItem("primitive_type").Value; String lucene_name = general.Attributes.GetNamedItem("lucene_name").Value; String storing = general.Attributes.GetNamedItem("store").Value; String analysing = general.Attributes.GetNamedItem("analysed").Value; var toStore = Lucene.Net.Documents.Field.Store.NO; var toAnalyse = Lucene.Net.Documents.Field.Index.NOT_ANALYZED; if (storing.ToLower().Equals("yes")) { toStore = Lucene.Net.Documents.Field.Store.YES; } if (analysing.ToLower().Equals("yes")) { toAnalyse = Lucene.Net.Documents.Field.Index.ANALYZED; } float boosting = Convert.ToSingle(general.Attributes.GetNamedItem("boost").Value); string[] metadataElementNames = general.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); for (int i = 0; i < elemList.Count; i++) { Field a = new Field(lucene_name, elemList[i].InnerText, toStore, toAnalyse); a.Boost = boosting; dataset.Add(a); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } indexWriter.AddDocument(dataset); }