/// <summary> /// Determines whether this instance can import the specified items. /// </summary> /// <param name="items">The items.</param> /// <param name="errors">The errors.</param> /// <returns></returns> public BoolMessageItem <IList <T> > CanImport(ImportExportActionContext <T> ctx) { ValidationResults results = new ValidationResults(); foreach (T item in ctx.ItemList) { _validator.Validate(item, results); } return(new BoolMessageItem <IList <T> >(ctx.ItemList, results.IsValid, string.Empty)); }
/// <summary> /// Imports the specified items. /// </summary> /// <param name="items">The items.</param> /// <returns></returns> public BoolMessageItem <IList <T> > Import(ImportExportActionContext <T> ctx) { // Check if nodes or import text was supplied. if (ctx.ItemList == null) { return(new BoolMessageItem <IList <T> >(null, false, "Nodes to import was not supplied.")); } return(InternalImport(ctx)); }
private BoolMessageItem <IList <T> > InternalImport(ImportExportActionContext <T> ctx) { IEntityService <T> service = EntityRegistration.GetService <T>(); IActionContext actionContext = EntityRegistration.GetContext(typeof(T).FullName); actionContext.Errors = ctx.Errors; actionContext.Messages = ctx.Messages; actionContext.CombineMessageErrors = false; actionContext.Items = ctx.ItemList; actionContext.Args["isImporting"] = true; BoolMessage createResult = service.Create(actionContext); return(new BoolMessageItem <IList <T> >(ctx.ItemList, createResult.Success, createResult.Message)); }
/// <summary> /// Determines whether this instance can import the specified items. /// </summary> /// <param name="items">The items.</param> /// <param name="errors">The errors.</param> /// <returns></returns> public BoolMessageItem <IList <T> > CanImportFromText(ImportExportActionContext <T> ctx) { BoolMessageItem <IList <T> > canImport = null; IList <T> items = new List <T>(); // For each section. try { IniDocument iniDoc = new IniDocument(ctx.ImportText, false, false); ICollection <string> sectionNames = iniDoc.Sections; RowMappingContext <IniDocument, T, string> rowContext = new RowMappingContext <IniDocument, T, string>(); rowContext.ValidationResults = ctx.Errors; rowContext.Source = iniDoc; rowContext.IsRowIdStringBased = false; // Get each section. for (int ndx = 0; ndx < iniDoc.Count; ndx++) { // Set the current section being parsed. rowContext.RowId = ndx.ToString(); // Now map the row to item T. BoolMessageItem <T> result = _mapper.MapRow(rowContext); // Check for both success and the item is not null. if (result.Item != null) { T item = result.Item; // Validate. bool isValid = _validator.Validate(item, rowContext.ValidationResults); // Only add to list if validation passed. if (isValid) { items.Add(item); } } } canImport = new BoolMessageItem <IList <T> >(items, rowContext.ValidationResults.IsValid, string.Empty); } catch (Exception ex) { canImport = new BoolMessageItem <IList <T> >(items, false, "An error occurred during the import process: " + ex.Message); } return(canImport); }
/// <summary> /// Imports the specified items. /// </summary> /// <param name="items">The items.</param> /// <returns></returns> public BoolMessageItem <IList <T> > ImportFromText(ImportExportActionContext <T> ctx) { // If the items are null, and import text is provided, parse it. if (string.IsNullOrEmpty(ctx.ImportText)) { return(new BoolMessageItem <IList <T> >(null, false, "Import content is empty.")); } BoolMessageItem <IList <T> > result = CanImportFromText(ctx); // Unable to import from text ? if (!result.Success) { return(result); } // Set the item list on the context as internal method only handles parsed nodes. ctx.ItemList = result.Item; return(InternalImport(ctx)); }
/// <summary> /// Exports a batch of items. /// </summary> /// <returns></returns> public BoolMessageItem <IList <T> > ExportBatch(ImportExportActionContext <T> ctx) { throw new NotImplementedException("Not yet implemented."); }