public bool II_Init(RecordInfo recordInfo) { _incomingInfo = recordInfo; _info = new RecordInfo(); _copier = new RecordCopier(_info, _incomingInfo, false); for (var index = 0; index < _incomingInfo.NumFields(); index++) { var field = _incomingInfo[index]; if (field.FieldType != FieldType.E_FT_FixedDecimal) { _info.AddField(field.GetFieldName(), field.FieldType, (int)field.Size, field.Scale, field.GetSource(), field.GetDescription()); _copier.Add(index, index); continue; } var fieldType = FieldType.E_FT_Double; if (field.Scale == 0) { fieldType = FieldType.E_FT_Int64; } _decimalMapping.Add(index, fieldType); _info.AddField(field.GetFieldName(), fieldType, 0, 0, field.GetSource(), field.GetDescription()); } _copier.DoneAdding(); _record = _info.CreateRecord(); _parent.InitOutput(_info); return(true); }
public bool II_PushRecord(RecordData recordDataIn) { // Prepare the output AlteryxRecordInfoNet.Record recordOut = _recordInfoOut.CreateRecord(); recordOut.Reset(); // Transfer existing data //copyRecordData(recordDataIn, recordOut); _recordCopier.Copy(recordOut, recordDataIn); // Collect data from fields string data = getFieldBaseStringData(_dataField, recordDataIn); string schema = getFieldBaseStringData(_schemaField, recordDataIn); // Shortcut out if sanity checks fail if (string.IsNullOrWhiteSpace(data)) { return(setOutput("MISSING_XML_DATA", recordOut)); } if (string.IsNullOrWhiteSpace(schema)) { return(setOutput("MISSING_XML_SCHEMA", recordOut)); } if (!data.TrimStart().StartsWith("<")) { return(setOutput("DATA_NOT_XML", recordOut)); } // We have two non-empty strings. // Schemas are expected as filenames, separated by semicolons. XmlSchemaSet setOfSchemas = XmlValidatorMechanics.getXmlSchemaSet(schema); XDocument doc = XDocument.Parse(data); List <string> errors = new List <string>(); doc.Validate(setOfSchemas, (o, e) => { errors.Add(e.Message); }, true); string allErrors = string.Join("|", errors); // If no errors, say VALID, else, say the errors. if (string.IsNullOrWhiteSpace(allErrors)) { return(setOutput("VALID", recordOut)); } else { return(setOutput(allErrors, recordOut)); } }
private void pushRecord( Int32 xCoord, Int32 yCoord, Int32 rValue, Int32 gValue, Int32 bValue, Int32 alphaValue, RecordData recordDataIn) { Record recordOut = _recordInfoOut.CreateRecord(); recordOut.Reset(); _recordCopier.Copy(recordOut, recordDataIn); var outFieldCount = _recordInfoOut.NumFields(); int indexXCoordField = (int)outFieldCount - 6; int indexYCoordField = (int)outFieldCount - 5; int indexRValueField = (int)outFieldCount - 4; int indexGValueField = (int)outFieldCount - 3; int indexBValueField = (int)outFieldCount - 2; int indexAlphaValueField = (int)outFieldCount - 1; // RValue Field FieldBase fieldBase = _recordInfoOut[indexXCoordField]; fieldBase.SetFromInt32(recordOut, xCoord); // RValue Field fieldBase = _recordInfoOut[indexYCoordField]; fieldBase.SetFromInt32(recordOut, yCoord); // RValue Field fieldBase = _recordInfoOut[indexRValueField]; fieldBase.SetFromInt32(recordOut, rValue); // GValue Field fieldBase = _recordInfoOut[indexGValueField]; fieldBase.SetFromInt32(recordOut, gValue); // RValue Field fieldBase = _recordInfoOut[indexBValueField]; fieldBase.SetFromInt32(recordOut, bValue); // AlphaValue Field fieldBase = _recordInfoOut[indexAlphaValueField]; fieldBase.SetFromInt32(recordOut, alphaValue); _outputHelper.PushRecord(recordOut.GetRecord()); }
private void pushRecord(string path, string value, RecordData recordDataIn) { Record recordOut = _recordInfoOut.CreateRecord(); recordOut.Reset(); _recordCopier.Copy(recordOut, recordDataIn); var outFieldCount = _recordInfoOut.NumFields(); int indexPathField = (int)outFieldCount - 2; int indexValueField = (int)outFieldCount - 1; // Path Field FieldBase fieldBase = _recordInfoOut[indexPathField]; fieldBase.SetFromString(recordOut, path); // Value Field fieldBase = _recordInfoOut[indexValueField]; fieldBase.SetFromString(recordOut, value); _outputHelper.PushRecord(recordOut.GetRecord()); }
public bool II_Init(RecordInfo recordInfo) { _info = new RecordInfo(); _incomingInfo = recordInfo; _copier = new RecordCopier(_info, _incomingInfo, false); for (var i = 0; i < _incomingInfo.NumFields(); i++) { _info.AddField(_incomingInfo[i]); _copier.Add(i, i); } _copier.DoneAdding(); _info.AddField(_parent.NewField, FieldType.E_FT_Int64); _newField = _info.GetFieldByName(_parent.NewField, false); _fields = new FieldBase[_parent.Fields.Length]; for (var i = 0; i < _fields.Length; i++) { _fields[i] = _incomingInfo.GetFieldByName(_parent.Fields[i], false); } _record = _info.CreateRecord(); _parent.Output.Init(_info, "Output", null, _parent.Config); return(true); }
public bool II_PushRecord(RecordData recordDataIn) { DebugMessage($"II_PushRecord() Entering; ToolID={_toolID}"); // The same object is used in each call, so reset the result fields before using them. _retCode = ""; _cmdLine = ""; lock (_sbStdOutLock) { _sbStdOut.Clear(); } lock (_sbExceptionsLock) { _sbExceptions.Clear(); } // Check the paths to Executable and Script... string exePath = getFieldBaseStringData(_exePathField, recordDataIn); checkValidPath(exePath, _exePathField); // Do the magic shell(exePath, getArguments(recordDataIn)); // Get the output string stdOut = ""; lock (_sbStdOutLock) { stdOut = _sbStdOut.ToString(); } // Get the exceptions string exceptions = ""; lock (_sbExceptionsLock) { exceptions = _sbExceptions.ToString(); } // Prepare the output AlteryxRecordInfoNet.Record recordOut = _recordInfoOut.CreateRecord(); recordOut.Reset(); // Transfer existing data _recordCopier.Copy(recordOut, recordDataIn); // Set Output Fields var numInputFields = (int)_recordInfoIn.NumFields(); AlteryxRecordInfoNet.FieldBase fbStdOut = _recordInfoOut[numInputFields]; fbStdOut.SetFromString(recordOut, stdOut); AlteryxRecordInfoNet.FieldBase fbRetCode = _recordInfoOut[numInputFields + 1]; fbRetCode.SetFromString(recordOut, _retCode); AlteryxRecordInfoNet.FieldBase fbExceptions = _recordInfoOut[numInputFields + 2]; fbExceptions.SetFromString(recordOut, exceptions); AlteryxRecordInfoNet.FieldBase fbDiagnostics = _recordInfoOut[numInputFields + 3]; fbDiagnostics.SetFromString(recordOut, _cmdLine); // Output _outputHelper.PushRecord(recordOut.GetRecord()); // Clear the accumulated strings for next record _retCode = ""; _cmdLine = ""; lock (_sbStdOutLock) { _sbStdOut.Clear(); } lock (_sbExceptionsLock) { _sbExceptions.Clear(); } DebugMessage($"II_PushRecord() Exiting; ToolID={_toolID}"); return(true); }
public void II_Close() { DebugMessage($"II_Close() has been called; ToolID={_toolID}"); // Get Concavity and ScaleFactor double concavity = 90; try { concavity = Convert.ToDouble(_sConcavity); } catch { WarningMessage($"Failed to convert concavity [{_sConcavity}] to double value; Using 90 degrees;"); concavity = 0; } /* * Int32 scaleFactor = 1; * try { scaleFactor = Convert.ToInt32(_sScaleFactor); } * catch * { * WarningMessage($"Failed to convert scale factor [{_sScaleFactor}] to integer value; Using 1;"); * scaleFactor = 1; * } * * if (scaleFactor < 1) * { * WarningMessage($"Scale factor [{_sScaleFactor}] was unacceptable; Positive non-zero integer required; Using 1;"); * scaleFactor = 1; * } */ foreach (KeyValuePair <string, List <Tuple <Double, Double> > > kvp in _dicPoints) { DebugMessage($"Group [{kvp.Key}] has [{kvp.Value.Count}] points. Would process at this point."); //////////////////// // HULL PROCESSING List <Node> dot_list = new List <Node>(); int id = 0; foreach (Tuple <double, double> element in kvp.Value) { ++id; Node node = new Node(element.Item1, element.Item2, id); dot_list.Add(node); } var hull = new Hull(); hull.makeHull(dot_list, concavity); List <Node> way = hull.getWay(); string diag = hull.dumpWay(way); // END HULL PROCESSING //////////////////////// int seq = 0; foreach (Node node in way) { Record recordOut = _recordInfoOut.CreateRecord(); recordOut.Reset(); // Group FieldBase fieldBase = _recordInfoOut[0]; fieldBase.SetFromString(recordOut, kvp.Key); // Sequence Number Dummy fieldBase = _recordInfoOut[1]; fieldBase.SetFromInt32(recordOut, seq); // XCoord fieldBase = _recordInfoOut[2]; fieldBase.SetFromDouble(recordOut, node.x); // YCoord fieldBase = _recordInfoOut[3]; fieldBase.SetFromDouble(recordOut, node.y); // Write record _outputHelper.PushRecord(recordOut.GetRecord()); ++seq; } } DebugMessage($"II_Close() is exiting; ToolID={_toolID}"); }