public long SubmitDataset()
{
#region create dataset
TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];
if (TaskManager.Bus.ContainsKey(CreateTaskmanager.DATASTRUCTURE_ID)
&& TaskManager.Bus.ContainsKey(CreateTaskmanager.RESEARCHPLAN_ID)
&& TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATASTRUCTURE_ID))
{
DatasetManager dm = new DatasetManager();
long datasetId = 0;
// for e new dataset
if (!TaskManager.Bus.ContainsKey(CreateTaskmanager.ENTITY_ID))
{
long datastructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.DATASTRUCTURE_ID]);
long researchPlanId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.RESEARCHPLAN_ID]);
long metadataStructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID]);
DataStructureManager dsm = new DataStructureManager();
DataStructure dataStructure = dsm.StructuredDataStructureRepo.Get(datastructureId);
//if datastructure is not a structured one
if (dataStructure == null) dataStructure = dsm.UnStructuredDataStructureRepo.Get(datastructureId);
ResearchPlanManager rpm = new ResearchPlanManager();
ResearchPlan rp = rpm.Repo.Get(researchPlanId);
MetadataStructureManager msm = new MetadataStructureManager();
MetadataStructure metadataStructure = msm.Repo.Get(metadataStructureId);
var ds = dm.CreateEmptyDataset(dataStructure, rp, metadataStructure);
datasetId = ds.Id;
// 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, ds.Id, rightType);
}
}
}
else
{
datasetId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.ENTITY_ID]);
}
TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"];
if (dm.IsDatasetCheckedOutFor(datasetId, GetUsernameOrDefault()) || dm.CheckOutDataset(datasetId, GetUsernameOrDefault()))
{
DatasetVersion workingCopy = dm.GetDatasetWorkingCopy(datasetId);
if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_XML))
{
XDocument xMetadata = (XDocument)TaskManager.Bus[CreateTaskmanager.METADATA_XML];
workingCopy.Metadata = XmlMetadataWriter.ToXmlDocument(xMetadata);
}
string title = XmlDatasetHelper.GetInformation(workingCopy, NameAttributeValues.title);
if(String.IsNullOrEmpty(title)) title = "No Title available.";
TaskManager.AddToBus(CreateTaskmanager.ENTITY_TITLE, title );//workingCopy.Metadata.SelectNodes("Metadata/Description/Description/Title/Title")[0].InnerText);
TaskManager.AddToBus(CreateTaskmanager.ENTITY_ID, datasetId);
dm.EditDatasetVersion(workingCopy, null, null, null);
dm.CheckInDataset(datasetId, "Metadata was submited.", GetUsernameOrDefault());
//add to index
// ToDo check which SearchProvider it is, default luceneprovider
ISearchProvider provider = IoCFactory.Container.ResolveForSession<ISearchProvider>() as ISearchProvider;
provider?.UpdateSingleDatasetIndex(datasetId, IndexingAction.CREATE);
LoggerFactory.LogData(datasetId.ToString(), typeof(Dataset).Name, Vaiona.Entities.Logging.CrudState.Created);
}
return datasetId;
}
#endregion
return -1;
}