public OptomizedObservableCollection<IDataListItem> CreateListToBindTo(IBinaryDataList dataList) { var result = new OptomizedObservableCollection<IDataListItem>(); if(dataList != null) { var listOfEntries = dataList.FetchScalarEntries(); // process scalars ;) foreach(var entry in listOfEntries .Where(e => ((e.ColumnIODirection == enDev2ColumnArgumentDirection.Input || e.ColumnIODirection == enDev2ColumnArgumentDirection.Both)))) { result.AddRange(ConvertIBinaryDataListEntryToIDataListItem(entry)); } // now process recordsets ;) listOfEntries = dataList.FetchRecordsetEntries(); foreach(var entry in listOfEntries) { result.AddRange(ConvertIBinaryDataListEntryToIDataListItem(entry)); } } return result; }
public WriteDataListMessage(long handle, Guid datalistID, IBinaryDataList datalist, ErrorResultTO errors) { Handle = handle; DatalistID = datalistID; Datalist = datalist; Errors = errors; }
public DataTable ConvertToDataTable(IBinaryDataList input, string recsetName, out ErrorResultTO errors, PopulateOptions populateOptions) { if(String.IsNullOrEmpty(recsetName)) { throw new ArgumentNullException("recsetName"); } if(input == null) { throw new ArgumentNullException("input"); } var dbData = new DataTable(); IBinaryDataListEntry entry; errors = null; string error; if(input.TryGetEntry(recsetName, out entry, out error)) { if(entry.IsRecordset) { var cols = entry.Columns; var dataColumns = cols.ToList().ConvertAll(column => new DataColumn(column.ColumnName)); dbData.Columns.AddRange(dataColumns.ToArray()); var fetchRecordsetIndexes = entry.FetchRecordsetIndexes(); while(fetchRecordsetIndexes.HasMore()) { var binaryDataListItems = entry.FetchRowAt(fetchRecordsetIndexes.FetchNextIndex(), out error); if(populateOptions == PopulateOptions.IgnoreBlankRows && binaryDataListItems.All(item => { string theValue; try { theValue = item.TheValue; } catch(Exception) { theValue = null; } return String.IsNullOrEmpty(theValue); })) { continue; } dbData.LoadDataRow(binaryDataListItems.Select(item => { string theValue; try { theValue = item.TheValue; } catch(Exception) { theValue = null; } return theValue as object; }).ToArray(), LoadOption.OverwriteChanges); } } } return dbData; }
public void MyTestInitialize() { string error; var dataListCompiler = DataListFactory.CreateDataListCompiler(); _dl1 = Dev2BinaryDataListFactory.CreateDataList(); _dl1.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dl1.TryCreateScalarValue("[[otherScalar]]", "myScalar", out error); _dl1.TryCreateScalarTemplate(string.Empty, "otherScalar", "A scalar", true, out error); _dl1.TryCreateScalarValue("testRegion", "otherScalar", out error); _dl1.TryCreateScalarTemplate(string.Empty, "scalar1", "A scalar", true, out error); _dl1.TryCreateScalarValue("foobar", "scalar1", out error); IList<Dev2Column> cols = new List<Dev2Column>(); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f1")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f2")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f3")); _dl1.TryCreateRecordsetTemplate("recset", "a recordset", cols, true, out error); _dl1.TryCreateRecordsetValue("r1.f1.value", "f1", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r1.f2.value", "f2", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r1.f3.value", "f3", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r2.f1.value", "f1", "recset", 2, out error); _dl1.TryCreateRecordsetValue("r2.f2.value", "f2", "recset", 2, out error); _dl1.TryCreateRecordsetValue("r2.f3.value", "f3", "recset", 2, out error); // skip 3 ;) _dl1.TryCreateRecordsetValue("r4.f1.value", "f1", "recset", 4, out error); _dl1.TryCreateRecordsetValue("r4.f2.value", "f2", "recset", 4, out error); _dl1.TryCreateRecordsetValue("r4.f3.value", "f3", "recset", 4, out error); dataListCompiler.PushBinaryDataList(_dl1.UID, _dl1, out _errors); //_compiler.UpsertSystemTag(dl1.UID, enSystemTag.EvaluateIteration, "true", out errors); /* list 2 */ _dl2 = Dev2BinaryDataListFactory.CreateDataList(); _dl2.TryCreateScalarTemplate(string.Empty, "idx", "A scalar", true, out error); _dl2.TryCreateScalarValue("1", "idx", out error); _dl2.TryCreateRecordsetTemplate("recset", "a recordset", cols, true, out error); _dl2.TryCreateRecordsetValue("r1.f1.value", "f1", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r1.f2.value", "f2", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r1.f3.value", "f3", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r2.f1.value", "f1", "recset", 2, out error); _dl2.TryCreateRecordsetValue("r2.f2.value", "f2", "recset", 2, out error); _dl2.TryCreateRecordsetValue("r2.f3.value", "f3", "recset", 2, out error); dataListCompiler.PushBinaryDataList(_dl2.UID, _dl2, out _errors); //_compiler.UpsertSystemTag(dl2.UID, enSystemTag.EvaluateIteration, "true", out errors); }
protected SimulationResult(SerializationInfo info, StreamingContext context) { if (info == null) { throw new ArgumentNullException("info"); } Key = (ISimulationKey) info.GetValue("Key", typeof (ISimulationKey)); Value = (IBinaryDataList) info.GetValue("Value", typeof (IBinaryDataList)); }
public void DeleteRecordActivity_GetInputs_Expected_One_Input() { DsfCountRecordsetActivity testAct = new DsfCountRecordsetActivity(); IBinaryDataList inputs = testAct.GetInputs(); // remove test datalist ;) DataListRemoval(inputs.UID); Assert.AreEqual(1, inputs.FetchAllEntries().Count); }
public bool WriteDataList(Guid datalistID, IBinaryDataList datalist, ErrorResultTO errors) { bool result = false; if (datalistID != GlobalConstants.NullDataListID) { Repo[datalistID] = datalist; result = true; } return result; }
// ReSharper disable InconsistentNaming public void FileWriteActivity_GetInputs_Expected_Seven_Input() // ReSharper restore InconsistentNaming { DsfFileWrite testAct = new DsfFileWrite(); IBinaryDataList inputs = testAct.GetInputs(); // remove test datalist ;) Assert.AreEqual(9, inputs.FetchAllEntries().Count); }
// ReSharper disable InconsistentNaming public void GetGeneralSettingsFromActivityAbstract_Expected_SettingsReturned() // ReSharper restore InconsistentNaming { DsfCountRecordsetActivity testAct = new DsfCountRecordsetActivity { IsSimulationEnabled = false }; IBinaryDataList testDl = testAct.GetGeneralSettingData(); Assert.AreEqual(1, testDl.FetchAllEntries().Count); }
/// <summary> /// Writes the given state to the <see cref="IBinaryDataList" /> registered for the given workspace. /// <remarks> /// This must implement the one-way (fire and forget) message exchange pattern. /// </remarks> /// </summary> /// <param name="binaryDataList">The state to be written.</param> /// <returns>The task that was created.</returns> public void Add(IBinaryDataList binaryDataList) { if(binaryDataList != null) { lock(_waitHandleGuard) { _binaryDataListQueue.Enqueue(binaryDataList); _writeWaithandle.Set(); } } }
public void FileWriteActivity_GetOutputs_Expected_One_Output() { DsfFileWrite testAct = new DsfFileWrite(); IBinaryDataList outputs = testAct.GetOutputs(); // remove test datalist ;) DataListRemoval(outputs.UID); Assert.AreEqual(1, outputs.FetchAllEntries().Count); }
public override List <DebugItem> GetDebugOutputs(IBinaryDataList dataList) { List <DebugItem> result = new List <DebugItem>(); DebugItem itemToAdd = new DebugItem(); itemToAdd.Add(new DebugItemResult { Type = DebugItemResultType.Value, Value = Text }); result.Add(itemToAdd); return(result); }
/// <summary> /// Writes the given state to the <see cref="IBinaryDataList" /> registered for the given workspace. /// <remarks> /// This must implement the one-way (fire and forget) message exchange pattern. /// </remarks> /// </summary> /// <param name="binaryDataList">The state to be written.</param> /// <returns>The task that was created.</returns> public void Add(IBinaryDataList binaryDataList) { if (binaryDataList != null) { lock (_waitHandleGuard) { _binaryDataListQueue.Enqueue(binaryDataList); _writeWaithandle.Set(); } } }
/// <summary> /// Creates the XML data from binary data list. /// </summary> /// <param name="binaryDataList">The binary data list.</param> /// <param name="errors">The errors.</param> /// <returns></returns> private string CreateXmlDataFromBinaryDataList(IBinaryDataList binaryDataList, out ErrorResultTO errors) { string result = string.Empty; ErrorResultTO allErrors = new ErrorResultTO(); errors = new ErrorResultTO(); Guid dlGuid = _compiler.PushBinaryDataList(binaryDataList.UID, binaryDataList, out errors); result = _compiler.ConvertFrom(dlGuid, DataListFormat.CreateFormat(GlobalConstants._Studio_XML), enTranslationDepth.Shape, out errors); return(result); }
public void PathCreateActivity_GetInputs_Expected_Five_Input() { DsfPathCreate testAct = new DsfPathCreate(); IBinaryDataList inputs = testAct.GetInputs(); // remove test datalist ;) DataListRemoval(inputs.UID); Assert.AreEqual(5, inputs.FetchAllEntries().Count); }
public void RecordsetLengthRecordsetActivity_GetInputs_Expected_One_Input() { DsfRecordsetLengthActivity testAct = new DsfRecordsetLengthActivity(); IBinaryDataList inputs = testAct.GetInputs(); var result = inputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(1, result); }
public void PathMoveActivity_GetInputs_Expected_Six_Input() { DsfPathMove testAct = new DsfPathMove(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(8, res); }
public void CountRecordsetActivity_GetInputs_Expected_Four_Input() { DsfReplaceActivity testAct = new DsfReplaceActivity(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(4, res); }
public void UnZipActivity_GetInputs_Expected_Seven_Input() { DsfUnZip testAct = new DsfUnZip(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(9, res); }
public bool WriteDataList(Guid datalistID, IBinaryDataList datalist, ErrorResultTO errors) { bool result = false; if (datalistID != GlobalConstants.NullDataListID) { Repo[datalistID] = datalist; result = true; } return(result); }
public void DateTimeDifference_GetOutputs_Expected_One_Output() { DsfDateTimeDifferenceActivity testAct = new DsfDateTimeDifferenceActivity { Input1 = "27-10-2012", Input2 = "28-10-2012", InputFormat = "dd-mm-yyyy", OutputType = "Years", Result = "[[result]]" }; IBinaryDataList outputs = testAct.GetOutputs(); // remove test datalist ;) Assert.AreEqual(1, outputs.FetchAllEntries().Count); }
public void DateTimeActivity_GetOutputs_Expected_One_Output() { DsfDateTimeActivity testAct = new DsfDateTimeActivity { DateTime = "27-10-2012", InputFormat = "DD-mm-yyyy", TimeModifierType = "Days", TimeModifierAmount = 5, TimeModifierAmountDisplay = "5", OutputFormat = "DD-mm-yyyy", Result = "[[result]]" }; IBinaryDataList outputs = testAct.GetOutputs(); // remove test datalist ;) Assert.AreEqual(1, outputs.FetchAllEntries().Count); }
public void CountRecordsetActivity_GetOutputs_Expected_One_Output() { DsfCountRecordsetActivity testAct = new DsfCountRecordsetActivity(); IBinaryDataList outputs = testAct.GetOutputs(); var result = outputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(1, result); }
public void SortRecords_GetOutputs_Expected_Zero_Output() { DsfSortRecordsActivity testAct = new DsfSortRecordsActivity(); IBinaryDataList outputs = testAct.GetOutputs(); var res = outputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(0, res); }
public void PathRenameActivity_GetOutputs_Expected_One_Output() { DsfPathRename testAct = new DsfPathRename(); IBinaryDataList outputs = testAct.GetOutputs(); var res = outputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(1, res); }
public DataListTranslatedPayloadTO ConvertFrom(IBinaryDataList payload, out ErrorResultTO errors) { if (payload == null) { throw new ArgumentNullException("payload"); } StringBuilder result = new StringBuilder("<" + RootTag + ">"); errors = new ErrorResultTO(); var entries = payload.FetchAllEntries(); foreach (var entry in entries) { if (entry.IsRecordset) { AddEntryToBuilder(result, entry); result.Append(">"); foreach (var col in entry.Columns) { result.Append("<"); result.Append(col.ColumnName); result.Append(" " + Description + "=\""); result.Append(col.ColumnDescription); result.Append("\" "); result.Append(IsEditable + "=\""); result.Append(col.IsEditable); result.Append("\" "); // Travis.Frisinger - Added Column direction result.Append(GlobalConstants.DataListIoColDirection + "=\""); result.Append(col.ColumnIODirection); result.Append("\" "); result.Append("/>"); } result.Append("</"); result.Append(entry.Namespace); result.Append(">"); } else { AddEntryToBuilder(result, entry); result.Append("/>"); } } result.Append("</" + RootTag + ">"); DataListTranslatedPayloadTO tmp = new DataListTranslatedPayloadTO(result.ToString()); return(tmp); }
// ReSharper disable InconsistentNaming public void FileReadActivity_GetInputs_Expected_Four_Input() // ReSharper restore InconsistentNaming { DsfFileRead testAct = new DsfFileRead(); IBinaryDataList inputs = testAct.GetInputs(); // remove test datalist ;) DataListRemoval(inputs.UID); Assert.AreEqual(4, inputs.FetchAllEntries().Count); }
/// <summary> /// Converts the and filter. /// </summary> /// <param name="payload">The payload.</param> /// <param name="filterShape">The filter shape.</param> /// <param name="errors">The errors.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">payload</exception> public StringBuilder ConvertAndFilter(IBinaryDataList payload, StringBuilder filterShape, out ErrorResultTO errors) { if (payload == null) { throw new ArgumentNullException("payload"); } int keyCnt = 0; errors = new ErrorResultTO(); TranslatorUtils tu = new TranslatorUtils(); ErrorResultTO invokeErrors; IBinaryDataList targetDl = tu.TranslateShapeToObject(filterShape, false, out invokeErrors); errors.MergeErrors(invokeErrors); IList <string> itemKeys = targetDl.FetchAllUserKeys(); StringBuilder result = new StringBuilder("{"); foreach (string key in itemKeys) { IBinaryDataListEntry entry; IBinaryDataListEntry tmpEntry; string error; if (payload.TryGetEntry(key, out entry, out error) && targetDl.TryGetEntry(key, out tmpEntry, out error)) { if (entry.IsRecordset) { result.Append(ProcessRecordSet(entry, out error)); errors.AddError(error); } else { result.Append(ProcessScalar(entry)); } // wack in , for field separator ;) keyCnt++; if (keyCnt < itemKeys.Count) { result.Append(","); } } errors.AddError(error); } result.Append("}"); return(result); }
public DataListTranslatedPayloadTO ConvertFrom(IBinaryDataList payload, out ErrorResultTO errors) { if(payload == null) { throw new ArgumentNullException("payload"); } StringBuilder result = new StringBuilder("<" + RootTag + ">"); errors = new ErrorResultTO(); var entries = payload.FetchAllEntries(); foreach(var entry in entries) { if(entry.IsRecordset) { AddEntryToBuilder(result, entry); result.Append(">"); foreach(var col in entry.Columns) { result.Append("<"); result.Append(col.ColumnName); result.Append(" " + Description + "=\""); result.Append(col.ColumnDescription); result.Append("\" "); result.Append(IsEditable + "=\""); result.Append(col.IsEditable); result.Append("\" "); // Travis.Frisinger - Added Column direction result.Append(GlobalConstants.DataListIoColDirection + "=\""); result.Append(col.ColumnIODirection); result.Append("\" "); result.Append("/>"); } result.Append("</"); result.Append(entry.Namespace); result.Append(">"); } else { AddEntryToBuilder(result, entry); result.Append("/>"); } } result.Append("</" + RootTag + ">"); DataListTranslatedPayloadTO tmp = new DataListTranslatedPayloadTO(result.ToString()); return tmp; }
public void Clone_50EntryRS_1kTimes_AtDepth() { string error; IBinaryDataList dl1 = Dev2BinaryDataListFactory.CreateDataList(GlobalConstants.NullDataListID); IList <Dev2Column> cols = new List <Dev2Column>(); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f1")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f2")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f3")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f4")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f5")); const int r = 50; const int runs = 1000; dl1.TryCreateRecordsetTemplate("recset", string.Empty, cols, true, out error); for (int i = 0; i < r; i++) { dl1.TryCreateRecordsetValue("r1.f1.value r1.f1.value r1.f1.valuer1.f1.valuer1.f1.value", "f1", "recset", (i + 1), out error); dl1.TryCreateRecordsetValue("r1.f2.value", "f2", "recset", (i + 1), out error); dl1.TryCreateRecordsetValue("r1.f3.valuer1.f3.valuer1.f3.valuer1.f3.valuer1.f3.valuer1.f3.valuer1.f3.value", "f3", "recset", (i + 1), out error); dl1.TryCreateRecordsetValue("r1.f3.value", "f4", "recset", (i + 1), out error); dl1.TryCreateRecordsetValue("r1.f3.value r1.f3.value v r1.f3.value r1.f3.value", "f5", "recset", (i + 1), out error); } DateTime start1 = DateTime.Now; string er; IBinaryDataListEntry val; bool tryGetEntry = dl1.TryGetEntry("recset", out val, out er); for (int q = 0; q < runs; q++) { if (tryGetEntry) { val.Clone(enTranslationDepth.Data, dl1.UID, out er); } } DateTime end1 = DateTime.Now; long ticks = (end1.Ticks - start1.Ticks); double result1 = (ticks / _ticksPerSec); Console.WriteLine(result1 + @" seconds for " + runs + @" to clone "); Assert.IsTrue(result1 <= 10.5); // Given .01 buffer ;) WAS : 0.065 }
public void PathDeleteActivity_GetInputs_Expected_Four_Input() { DsfPathDelete testAct = new DsfPathDelete(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) DataListRemoval(inputs.UID); Assert.AreEqual(4, res); }
public void SortRecords_GetInputs_Expected_Two_Input() { DsfSortRecordsActivity testAct = new DsfSortRecordsActivity(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) DataListRemoval(inputs.UID); Assert.AreEqual(2, res); }
public LiveFlushIterator(Guid loc) { ErrorResultTO errors; _liveFlushingLocation = loc; _bdl = _c.FetchBinaryDataList(loc, out errors); if (errors.HasErrors()) { throw new Exception(errors.MakeDataListReady()); } }
// ReSharper disable InconsistentNaming public void FolderReadActivity_GetInputs_Expected_Four_Input() // ReSharper restore InconsistentNaming { DsfFolderRead testAct = new DsfFolderRead(); IBinaryDataList inputs = testAct.GetInputs(); var res = inputs.FetchAllEntries().Count; // remove test datalist ;) Assert.AreEqual(7, res); }
public LiveFlushIterator(Guid loc) { ErrorResultTO errors; _liveFlushingLocation = loc; _bdl = _c.FetchBinaryDataList(loc, out errors); if(errors.HasErrors()) { throw new Exception(errors.MakeDataListReady()); } }
public void UnZipActivity_GetOutputs_Expected_One_Output() { DsfUnZip testAct = new DsfUnZip(); IBinaryDataList outputs = testAct.GetOutputs(); var res = outputs.FetchAllEntries().Count; // remove test datalist ;) DataListRemoval(outputs.UID); Assert.AreEqual(1, res); }
/// <summary> /// Converts from a binary representation in the standard format to the specified <see cref="Format" />. /// </summary> /// <param name="input">The binary representation of the datalist.</param> /// <param name="errors">The errors.</param> /// <returns> /// An array of bytes that represent the datalist in the specified <see cref="Format" /> /// </returns> /// <exception cref="System.ArgumentNullException">input</exception> public DataListTranslatedPayloadTO ConvertFrom(IBinaryDataList input, out ErrorResultTO errors) { errors = new ErrorResultTO(); if (input == null) { throw new ArgumentNullException("input"); } IList <string> itemKeys = input.FetchAllUserKeys(); errors = new ErrorResultTO(); StringBuilder result = new StringBuilder("{"); int keyCnt = 0; foreach (string key in itemKeys) { IBinaryDataListEntry entry; // This check was never here - this means this method has no testing and was never sane ;) string error; if (input.TryGetEntry(key, out entry, out error)) { if (entry.IsRecordset) { result.Append(ProcessRecordSet(entry, out error)); errors.AddError(error); } else { result.Append(ProcessScalar(entry)); } } errors.AddError(error); // wack in , for field separator ;) keyCnt++; if (keyCnt < itemKeys.Count) { result.Append(","); } } result.Append("}"); DataListTranslatedPayloadTO tmp = new DataListTranslatedPayloadTO(result.ToString()); return(tmp); }
public override void Read(IByteReaderBase reader) { IDataListTranslator translator = new DataListTranslatorFactory().FetchTranslator(DataListFormat.CreateFormat(GlobalConstants._BINARY)); ErrorResultTO tmpErrors; byte[] datalistData = reader.ReadByteArray(); Datalist = null; if (datalistData != null) { Datalist = translator.ConvertTo(datalistData, new StringBuilder(), out tmpErrors); } Errors = ErrorResultTOExtensionMethods.FromByteArray(reader.ReadByteArray()); }
public override Func <IList <string> > BuildSearchExpression(IBinaryDataList scopingObj, IRecsetSearch to) { Func <IList <string> > result = () => { ErrorResultTO err; IList <RecordSetSearchPayload> operationRange = GenerateInputRange(to, scopingObj, out err).Invoke(); IList <string> fnResult = new List <string>(); string toFind = to.SearchCriteria.Trim(); string toFindLower = toFind.ToLower(); foreach (RecordSetSearchPayload p in operationRange) { string toMatch = p.Payload.Trim(); if (to.MatchCase) { if (toMatch.Equals(toFind, StringComparison.CurrentCulture)) { fnResult.Add(p.Index.ToString(CultureInfo.InvariantCulture)); } else { if (to.RequireAllFieldsToMatch) { return(new List <string>()); } } } else { if (toMatch.ToLower().Equals(toFindLower, StringComparison.CurrentCulture)) { fnResult.Add(p.Index.ToString(CultureInfo.InvariantCulture)); } else { if (to.RequireAllFieldsToMatch) { return(new List <string>()); } } } } return(fnResult.Distinct().ToList()); }; return(result); }
public override void Read(IByteReaderBase reader) { IDataListTranslator translator = new DataListTranslatorFactory().FetchTranslator(DataListFormat.CreateFormat(GlobalConstants._BINARY)); ErrorResultTO tmpErrors; byte[] datalistData = reader.ReadByteArray(); Datalist = null; if(datalistData != null) { Datalist = translator.ConvertTo(datalistData, new StringBuilder(), out tmpErrors); } Errors = ErrorResultTOExtensionMethods.FromByteArray(reader.ReadByteArray()); }
/// <summary> /// Converts from a binary representation in the standard format to the specified <see cref="Format" />. /// </summary> /// <param name="input">The binary representation of the datalist.</param> /// <param name="errors">The errors.</param> /// <returns> /// An array of bytes that represent the datalist in the specified <see cref="Format" /> /// </returns> /// <exception cref="System.ArgumentNullException">input</exception> public DataListTranslatedPayloadTO ConvertFrom(IBinaryDataList input, out ErrorResultTO errors) { errors = new ErrorResultTO(); if(input == null) throw new ArgumentNullException("input"); IList<string> itemKeys = input.FetchAllUserKeys(); errors = new ErrorResultTO(); StringBuilder result = new StringBuilder("{"); int keyCnt = 0; foreach(string key in itemKeys) { IBinaryDataListEntry entry; // This check was never here - this means this method has no testing and was never sane ;) string error; if(input.TryGetEntry(key, out entry, out error)) { if(entry.IsRecordset) { result.Append(ProcessRecordSet(entry, out error)); errors.AddError(error); } else { result.Append(ProcessScalar(entry)); } } errors.AddError(error); // wack in , for field separator ;) keyCnt++; if(keyCnt < itemKeys.Count) { result.Append(","); } } result.Append("}"); DataListTranslatedPayloadTO tmp = new DataListTranslatedPayloadTO(result.ToString()); return tmp; }
public DataListTranslatedPayloadTO ConvertFrom(IBinaryDataList payload, out ErrorResultTO errors) { if(payload == null) { throw new ArgumentNullException("payload"); } StringBuilder result = new StringBuilder("<" + RootTag + ">"); errors = new ErrorResultTO(); var itemKeys = payload.FetchAllKeys(); foreach(var key in itemKeys) { IBinaryDataListEntry entry; string error; if(payload.TryGetEntry(key, out entry, out error)) { if(entry.IsRecordset && (entry.ColumnIODirection == enDev2ColumnArgumentDirection.Input || entry.ColumnIODirection == enDev2ColumnArgumentDirection.Both)) { DoRecordSetAppending(errors, entry, result); } else { var fName = entry.Namespace; var val = entry.FetchScalar(); if(val != null && (entry.ColumnIODirection == enDev2ColumnArgumentDirection.Input || entry.ColumnIODirection == enDev2ColumnArgumentDirection.Both)) { DoScalarAppending(result, fName, val); } } } } result.Append("</" + RootTag + ">"); DataListTranslatedPayloadTO tmp = new DataListTranslatedPayloadTO(result.ToString()); return tmp; }
public static Mock<IDataListServer> SetupDataListServer(bool writeResult = true, bool persistChildChainResult = true, IBinaryDataList readResult = null, bool readCausesException = false, bool writeCausesException = false, bool persistChildChainCausesException = false, bool deleteCausesException = false) { Mock<IDataListServer> mockDataListServer = new Mock<IDataListServer>(); ErrorResultTO errors; if(readCausesException) { mockDataListServer.Setup(e => e.ReadDatalist(It.IsAny<Guid>(), out errors)).Throws(new Exception()); } else { mockDataListServer.Setup(e => e.ReadDatalist(It.IsAny<Guid>(), out errors)).Verifiable(); mockDataListServer.Setup(e => e.ReadDatalist(It.IsAny<Guid>(), out errors)).Returns(readResult); } if(writeCausesException) { mockDataListServer.Setup(e => e.WriteDataList(It.IsAny<Guid>(), It.IsAny<IBinaryDataList>(), out errors)).Throws(new Exception()); } else { mockDataListServer.Setup(e => e.WriteDataList(It.IsAny<Guid>(), It.IsAny<IBinaryDataList>(), out errors)).Verifiable(); mockDataListServer.Setup(e => e.WriteDataList(It.IsAny<Guid>(), It.IsAny<IBinaryDataList>(), out errors)).Returns(writeResult); } if(deleteCausesException) { mockDataListServer.Setup(e => e.DeleteDataList(It.IsAny<Guid>(), It.IsAny<bool>())).Throws(new Exception()); } else { mockDataListServer.Setup(e => e.DeleteDataList(It.IsAny<Guid>(), It.IsAny<bool>())).Verifiable(); } return mockDataListServer; }
[TestMethod] // - ok public void IntersectVarList_Expected_Merged_Data_Missing_recset2() { ErrorResultTO errors; _dl1 = _dl1.Merge(_dl4, enDataListMergeTypes.Intersection, enTranslationDepth.Data, false, out errors); IBinaryDataListEntry scalar; IBinaryDataListEntry rs; IBinaryDataListEntry rs2; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("recset", out rs, out error); _dl1.TryGetEntry("recset2", out rs2, out error); Assert.AreEqual("myValue4", scalar.FetchScalar().TheValue); Assert.AreEqual("r1.f1.value", (rs.FetchRecordAt(1, out error)[0]).TheValue); Assert.IsTrue(rs2 == null); Assert.IsTrue(errors.HasErrors()); Assert.AreEqual("Missing DataList item [ recset ] ", errors.FetchErrors()[0]); }
[TestMethod] // - ok public void IntersectList_DifferentShape_Expected_Errors() { ErrorResultTO errors; _dl1 = _dl1.Merge(_dl3, enDataListMergeTypes.Intersection, enTranslationDepth.Shape, false, out errors); IBinaryDataListEntry scalar; IBinaryDataListEntry scalar2; IBinaryDataListEntry rs; IBinaryDataListEntry rs2; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("theScalar", out scalar2, out error); _dl1.TryGetEntry("recset", out rs, out error); _dl1.TryGetEntry("recset2", out rs2, out error); Assert.IsTrue(errors.HasErrors()); Assert.AreEqual("Missing DataList item [ myScalar ] ", errors.FetchErrors()[0]); Assert.AreEqual("Missing DataList item [ recset ] ", errors.FetchErrors()[1]); }
[TestMethod] // - ok public void UnionCloneList_VarList_Expected_Merged_Data_In_New_Object() { ErrorResultTO errors; Guid mergeID = _dl1.UID; _dl1 = _dl1.Merge(_dl4, enDataListMergeTypes.Union, enTranslationDepth.Data, true, out errors); IBinaryDataListEntry scalar; IBinaryDataListEntry rs; IBinaryDataListEntry rs2; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("recset", out rs, out error); _dl1.TryGetEntry("recset2", out rs2, out error); Assert.AreEqual("myValue4", scalar.FetchScalar().TheValue); Assert.AreNotEqual(mergeID, _dl1.UID); Assert.AreEqual(4, rs.FetchLastRecordsetIndex()); Assert.AreEqual(3, rs2.FetchLastRecordsetIndex()); Assert.IsFalse(errors.HasErrors()); }
public void IntersectList_Expected_Merged_Shape() { ErrorResultTO errors; _dl1 = _dl1.Merge(_dl2, enDataListMergeTypes.Intersection, enTranslationDepth.Shape, false, out errors); Guid mergeID = _dl1.UID; IBinaryDataListEntry scalar; IBinaryDataListEntry rs; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("recset", out rs, out error); Assert.AreEqual("myValue", scalar.FetchScalar().TheValue); Assert.AreEqual("r1.f1.value", (rs.FetchRecordAt(1, out error)[0]).TheValue); Assert.AreEqual(mergeID, _dl1.UID); Assert.IsFalse(errors.HasErrors()); }
[TestMethod] // - ok public void UnionCloneList_Expected_Merged_Data() { ErrorResultTO errors; Guid mergeID = _dl1.UID; _dl1 = _dl1.Merge(_dl2, enDataListMergeTypes.Union, enTranslationDepth.Data, false, out errors); IBinaryDataListEntry scalar; IBinaryDataListEntry rs; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("recset", out rs, out error); Assert.AreEqual("myValue2", scalar.FetchScalar().TheValue); Assert.AreEqual("r3a.f1.value2", (rs.FetchRecordAt(3, out error)[0]).TheValue); Assert.AreEqual(mergeID, _dl1.UID); Assert.AreEqual(4, rs.FetchLastRecordsetIndex()); Assert.IsFalse(errors.HasErrors()); }
[TestMethod] // - ok public void UnionCloneList_Expected_NonExistRow_CausesAdd() { ErrorResultTO errors; _dl1 = _dl1.Merge(_dl2, enDataListMergeTypes.Union, enTranslationDepth.Data, false, out errors); IBinaryDataListEntry scalar; IBinaryDataListEntry rs; string error; _dl1.TryGetEntry("myScalar", out scalar, out error); _dl1.TryGetEntry("recset", out rs, out error); Assert.AreEqual("myValue2", scalar.FetchScalar().TheValue); Assert.AreEqual("r2a.f1.value2", (rs.FetchRecordAt(2, out error)[0]).TheValue); Assert.AreEqual(4, rs.FetchLastRecordsetIndex()); Assert.AreEqual(4, rs.ItemCollectionSize()); Assert.IsFalse(errors.HasErrors()); }
public void MyTestInitialize() { string error; _dl1 = Dev2BinaryDataListFactory.CreateDataList(); _dl1.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dl1.TryCreateScalarValue("myValue", "myScalar", out error); IList<Dev2Column> cols = new List<Dev2Column>(); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f1")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f2")); cols.Add(Dev2BinaryDataListFactory.CreateColumn("f3")); _dl1.TryCreateRecordsetTemplate("recset", "a recordset", cols, true, out error); _dl1.TryCreateRecordsetValue("r1.f1.value", "f1", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r1.f2.value", "f2", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r1.f3.value", "f3", "recset", 1, out error); _dl1.TryCreateRecordsetValue("r2.f1.value", "f1", "recset", 2, out error); _dl1.TryCreateRecordsetValue("r2.f2.value", "f2", "recset", 2, out error); _dl1.TryCreateRecordsetValue("r2.f3.value", "f3", "recset", 2, out error); // skip 3 ;) _dl1.TryCreateRecordsetValue("r4.f1.value", "f1", "recset", 4, out error); _dl1.TryCreateRecordsetValue("r4.f2.value", "f2", "recset", 4, out error); _dl1.TryCreateRecordsetValue("r4.f3.value", "f3", "recset", 4, out error); // create 2nd obj _dl2 = Dev2BinaryDataListFactory.CreateDataList(); _dl2.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dl2.TryCreateScalarValue("myValue2", "myScalar", out error); cols = new List<Dev2Column> { Dev2BinaryDataListFactory.CreateColumn("f1"), Dev2BinaryDataListFactory.CreateColumn("f2"), Dev2BinaryDataListFactory.CreateColumn("f3") }; _dl2.TryCreateRecordsetTemplate("recset", "a recordset", cols, true, out error); _dl2.TryCreateRecordsetValue("r1a.f1.value2", "f1", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r1a.f2.value2", "f2", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r1a.f3.value2", "f3", "recset", 1, out error); _dl2.TryCreateRecordsetValue("r2a.f1.value2", "f1", "recset", 2, out error); _dl2.TryCreateRecordsetValue("r2a.f2.value2", "f2", "recset", 2, out error); _dl2.TryCreateRecordsetValue("r2a.f3.value2", "f3", "recset", 2, out error); _dl2.TryCreateRecordsetValue("r3a.f1.value2", "f1", "recset", 3, out error); _dl2.TryCreateRecordsetValue("r3a.f2.value2", "f2", "recset", 3, out error); _dl2.TryCreateRecordsetValue("r3a.f3.value2", "f3", "recset", 3, out error); // create 3rd obj _dl3 = Dev2BinaryDataListFactory.CreateDataList(); _dl3.TryCreateScalarTemplate(string.Empty, "theScalar", "A scalar", true, out error); _dl3.TryCreateScalarValue("theValue", "theScalar", out error); cols = new List<Dev2Column> { Dev2BinaryDataListFactory.CreateColumn("f1"), Dev2BinaryDataListFactory.CreateColumn("f2"), Dev2BinaryDataListFactory.CreateColumn("f3") }; _dl3.TryCreateRecordsetTemplate("recset2", "a recordset", cols, true, out error); _dl3.TryCreateRecordsetValue("r1a.f1.value2", "f1", "recset2", 1, out error); _dl3.TryCreateRecordsetValue("r1a.f2.value2", "f2", "recset2", 1, out error); _dl3.TryCreateRecordsetValue("r1a.f3.value2", "f3", "recset2", 1, out error); _dl3.TryCreateRecordsetValue("r2a.f1.value2", "f1", "recset2", 2, out error); _dl3.TryCreateRecordsetValue("r2a.f2.value2", "f2", "recset2", 2, out error); _dl3.TryCreateRecordsetValue("r2a.f3.value2", "f3", "recset2", 2, out error); _dl3.TryCreateRecordsetValue("r3a.f1.value2", "f1", "recset2", 3, out error); _dl3.TryCreateRecordsetValue("r3a.f2.value2", "f2", "recset2", 3, out error); _dl3.TryCreateRecordsetValue("r3a.f3.value2", "f3", "recset2", 3, out error); // create 4th obj _dl4 = Dev2BinaryDataListFactory.CreateDataList(); _dl4.TryCreateScalarTemplate(string.Empty, "theScalar", "A scalar", true, out error); _dl4.TryCreateScalarValue("theValue4", "theScalar", out error); _dl4.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dl4.TryCreateScalarValue("myValue4", "myScalar", out error); cols = new List<Dev2Column> { Dev2BinaryDataListFactory.CreateColumn("f1"), Dev2BinaryDataListFactory.CreateColumn("f2"), Dev2BinaryDataListFactory.CreateColumn("f3") }; _dl4.TryCreateRecordsetTemplate("recset2", "a recordset", cols, true, out error); _dl4.TryCreateRecordsetValue("r1a.f1.value2", "f1", "recset2", 1, out error); _dl4.TryCreateRecordsetValue("r1a.f2.value2", "f2", "recset2", 1, out error); _dl4.TryCreateRecordsetValue("r1a.f3.value2", "f3", "recset2", 1, out error); _dl4.TryCreateRecordsetValue("r2a.f1.value2", "f1", "recset2", 2, out error); _dl4.TryCreateRecordsetValue("r2a.f2.value2", "f2", "recset2", 2, out error); _dl4.TryCreateRecordsetValue("r2a.f3.value2", "f3", "recset2", 2, out error); _dl4.TryCreateRecordsetValue("r3a.f1.value2", "f1", "recset2", 3, out error); _dl4.TryCreateRecordsetValue("r3a.f2.value2", "f2", "recset2", 3, out error); _dl4.TryCreateRecordsetValue("r3a.f3.value2", "f3", "recset2", 3, out error); // create 5th obj _dlWithBankScalar = Dev2BinaryDataListFactory.CreateDataList(); _dlWithBankScalar.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dlWithBankScalar.TryCreateScalarValue("", "myScalar", out error); _dlWithPopulatedScalar = Dev2BinaryDataListFactory.CreateDataList(); _dlWithPopulatedScalar.TryCreateScalarTemplate(string.Empty, "myScalar", "A scalar", true, out error); _dlWithPopulatedScalar.TryCreateScalarValue("CAKE!", "myScalar", out error); }
[TestMethod] // - ok public void UnionDataWithBlankOverwrite_Expect_BlankScalar() { ErrorResultTO errors; Guid mergeID = _dlWithPopulatedScalar.UID; _dlWithPopulatedScalar = _dlWithPopulatedScalar.Merge(_dlWithBankScalar, enDataListMergeTypes.Union, enTranslationDepth.Data_With_Blank_OverWrite, false, out errors); IBinaryDataListEntry scalar; string error; _dlWithPopulatedScalar.TryGetEntry("myScalar", out scalar, out error); Assert.AreEqual(string.Empty, scalar.FetchScalar().TheValue); Assert.AreEqual(mergeID, _dlWithPopulatedScalar.UID); Assert.IsFalse(errors.HasErrors()); }
/// <summary> /// Merges the into instance. /// </summary> /// <param name="obj">The obj.</param> /// <param name="typeOf">The type of.</param> /// <param name="depth">The depth.</param> /// <param name="errorResult">The error result.</param> private void MergeIntoInstance(IBinaryDataList obj, enDataListMergeTypes typeOf, enTranslationDepth depth, out ErrorResultTO errorResult) { errorResult = new ErrorResultTO(); BinaryDataList toClone = (BinaryDataList)obj; if(obj.ParentUID != UID) { ParentUID = toClone.ParentUID; } IList<string> lamdaErrors = new List<string>(); IList<string> errorList = new List<string>(); IList<string> unionKeyHits = new List<string>(); // clone the dictionary IList<string> tmp = _templateDict.Keys.ToList(); // must be this way since we modify the collection... foreach(string e in tmp) { string error; IBinaryDataListEntry cloned; if(typeOf == enDataListMergeTypes.Union) { // fetch this instance via clone, fetch toClone instance and merge the data IBinaryDataListEntry fetchTmp; if(toClone._templateDict.TryGetValue(e, out fetchTmp)) { unionKeyHits.Add(e); cloned = fetchTmp.Clone(depth, UID, out error); if(error != string.Empty) { lamdaErrors.Add(error); } else { DepthMerge(depth, cloned, e, out lamdaErrors); } // We need to ensure that the intellisense dictionary is populated with this key ;) } } else if(typeOf == enDataListMergeTypes.Intersection) { IBinaryDataListEntry toFetch; if(toClone.TryGetEntry(e, out toFetch, out error)) { cloned = toClone._templateDict[e].Clone(depth, UID, out error); if(error != string.Empty) { lamdaErrors.Add(error); } else { DepthMerge(depth, cloned, e, out lamdaErrors); } } else { lamdaErrors.Add("Missing DataList item [ " + e + " ] "); } } // compile error list ?! foreach(string err in lamdaErrors) { errorList.Add(err); } lamdaErrors.Clear(); } // now process key misses for union if(typeOf == enDataListMergeTypes.Union) { //toClone._templateDict.Keys foreach(string k in (toClone._templateDict.Keys.ToArray().Except(unionKeyHits))) { string error; IBinaryDataListEntry cloned = toClone._templateDict[k].Clone(depth, UID, out error); if(error != string.Empty) { lamdaErrors.Add(error); } else { DepthMerge(depth, cloned, k, out lamdaErrors); } } } // now build the silly composite object since lamba is an daft construct // how about proper exception handling MS?! foreach(string err in errorList) { errorResult.AddError(err); } }
/// <summary> /// Creates the XML data from binary data list. /// </summary> /// <param name="binaryDataList">The binary data list.</param> /// <param name="errors">The errors.</param> /// <returns></returns> private string CreateXmlDataFromBinaryDataList(IBinaryDataList binaryDataList, out ErrorResultTO errors) { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); Guid dlGuid = compiler.PushBinaryDataList(binaryDataList.UID, binaryDataList, out errors); string result = compiler.ConvertFrom(dlGuid, DataListFormat.CreateFormat(GlobalConstants._Studio_XML), enTranslationDepth.Shape, out errors).ToString(); return result; }
public List<DebugItem> GetDebugInputs(IList<IDev2Definition> inputs, IBinaryDataList dataList, ErrorResultTO errors) { if(errors == null) { throw new ArgumentNullException("errors"); } var results = new List<DebugItem>(); foreach(IDev2Definition dev2Definition in inputs) { var variableName = GetVariableName(dev2Definition); DebugItem itemToAdd = new DebugItem(); AddDebugItem(new DebugEvalResult(variableName, "", DataObject.Environment), itemToAdd); results.Add(itemToAdd); } foreach(IDebugItem debugInput in results) { debugInput.FlushStringBuilder(); } return results; }
public bool WriteDataList(Guid id, IBinaryDataList data, out ErrorResultTO errors) { errors = new ErrorResultTO(); return _persistence.WriteDataList(id, data, errors); }
/// <summary> /// Converts a binary data list to list a data list item view models. /// </summary> /// <param name="dataListToConvert">The data list to convert.</param> /// <param name="errorString">The error string.</param> /// <returns></returns> private void ConvertBinaryDataListToListOfIDataListItemModels(IBinaryDataList dataListToConvert, out string errorString) { errorString = string.Empty; RecsetCollection.Clear(); ScalarCollection.Clear(); IList<IBinaryDataListEntry> listOfEntries = dataListToConvert.FetchAllEntries(); foreach(var entry in listOfEntries) { if(entry.IsRecordset) { var recset = DataListItemModelFactory.CreateDataListModel(entry.Namespace, entry.Description, entry.ColumnIODirection); recset.IsEditable = entry.IsEditable; foreach(var col in entry.Columns) { var child = DataListItemModelFactory.CreateDataListModel(col.ColumnName, col.ColumnDescription, col.ColumnIODirection); child.Parent = recset; child.IsEditable = col.IsEditable; recset.Children.Add(child); } RecsetCollection.Add(recset); } else { var scalar = DataListItemModelFactory.CreateDataListModel(entry.Namespace, entry.Description, entry.ColumnIODirection); scalar.IsEditable = entry.IsEditable; ScalarCollection.Add(scalar); } } }
public DataTable ConvertToDataTable(IBinaryDataList input, string recsetName, out ErrorResultTO errors, PopulateOptions populateOptions) { errors = null; throw new NotImplementedException(); }
public StringBuilder ConvertAndFilter(IBinaryDataList input, StringBuilder filterShape, out ErrorResultTO errors) { throw new NotImplementedException(); }
public string GetXMLForInputs(IBinaryDataList binaryDataList) { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; return compiler.ConvertFrom(binaryDataList.UID, DataListFormat.CreateFormat(GlobalConstants._XML_Inputs_Only), enTranslationDepth.Data, out errors).ToString(); }
public StringBuilder ConvertAndFilter(IBinaryDataList payload, StringBuilder filterShape, out ErrorResultTO errors) { if(payload == null) { throw new ArgumentNullException("payload"); } StringBuilder result = new StringBuilder("<" + RootTag + ">"); errors = new ErrorResultTO(); string error; IBinaryDataList targetDl = BuildTargetShape(filterShape, out error); IList<string> itemKeys = targetDl.FetchAllKeys(); foreach(string key in itemKeys) { IBinaryDataListEntry entry; IBinaryDataListEntry tmpEntry; if(payload.TryGetEntry(key, out entry, out error) && targetDl.TryGetEntry(key, out tmpEntry, out error)) { if(entry.IsRecordset) { DoRecordSetAppending(errors, entry, result); } else { string fName = entry.Namespace; IBinaryDataListItem val = entry.FetchScalar(); if(val != null) { DoScalarAppending(result, fName, val); } } } } result.Append("</" + RootTag + ">"); return result; }