public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message) { COREobject core = COREobject.i; DBConnection db = core.Entitron; string tableName = (string)vars["TableName"]; bool searchInShared = vars.ContainsKey("SearchInShared") ? (bool)vars["SearchInShared"] : false; var inputData = (List <DBItem>)vars["InputData"]; string keyMappingString = (string)vars["KeyMapping"]; var keyMappingDictionary = new Dictionary <string, string>(); foreach (var segment in keyMappingString.Split(',')) { var pair = segment.Split(':'); if (pair.Length == 2) { keyMappingDictionary.Add(pair[0], pair[1]); } } DBTable table = db.Table(tableName, searchInShared); DateTime timestamp = DateTime.Now; foreach (var inputRow in inputData) { var newRowItem = new DBItem(db, table); foreach (DBColumn column in table.Columns) { if (keyMappingDictionary.ContainsKey(column.Name)) { string dictionaryValue = keyMappingDictionary[column.Name]; if (dictionaryValue.Substring(0, 2) == "$$") { newRowItem[column.Name] = inputRow[dictionaryValue.Substring(2)]; } else { newRowItem[column.Name] = KeyValueString.ParseValue(dictionaryValue, vars); } } } if (table.Columns.Any(c => c.Name == "id_user_insert")) { int userId = core.User.Id; newRowItem["id_user_insert"] = userId; newRowItem["id_user_change"] = userId; newRowItem["datetime_insert"] = timestamp; newRowItem["datetime_change"] = timestamp; } table.Add(newRowItem); } db.SaveChanges(); }
public DocumentStoreConnectionString init( string connectionString, string name = null, string folder = null, Environment.SpecialFolder?folderOption = null) { this.raw = string.IsNullOrWhiteSpace(connectionString) ? LibOptions.Current.DocumentStoreDefaultFileName : connectionString; if (!this.raw.Contains("=")) { this.raw = $"Filename={this.raw}"; } this.keyValues = new KeyValueString(this.raw); this.Name = name ?? "noname"; if (folderOption.HasValue) { folder = Environment.GetFolderPath(folderOption.Value); } this.FileName = GetPath(folder); return(this); }
private static bool matchCondition(TapestryDesignerCondition condition, DBItem entitronRow, Dictionary <string, object> tapestryVars) { object leftOperand; if (condition.Variable[0] == '#') { var parsedObjectLeft = KeyValueString.ParseValue(condition.Variable.Substring(1), tapestryVars); if (parsedObjectLeft == null) { return(false); } leftOperand = parsedObjectLeft; } else { leftOperand = entitronRow[condition.Variable]; } var parsedObjectRight = KeyValueString.ParseValue(condition.Value, tapestryVars); if (parsedObjectRight == null) { return(false); } object value = parsedObjectRight; switch (condition.Operator) { case "==": if (leftOperand is bool && value is bool) { return((bool)leftOperand == (bool)value); } else if (leftOperand is bool) { return(((bool)leftOperand ? "true" : "false") == value.ToString()); } else { return(leftOperand.ToString() == value.ToString()); } case "!=": if (leftOperand is bool && value is bool) { return((bool)leftOperand != (bool)value); } else if (leftOperand is bool) { return(((bool)leftOperand ? "true" : "false") != value.ToString()); } else { return(leftOperand.ToString() != value.ToString()); } case ">": return(Convert.ToInt64(leftOperand) > Convert.ToInt64(value)); case ">=": return(Convert.ToInt64(leftOperand) >= Convert.ToInt64(value)); case "<": return(Convert.ToInt64(leftOperand) < Convert.ToInt64(value)); case "<=": return(Convert.ToInt64(leftOperand) <= Convert.ToInt64(value)); case "is empty": return(value.ToString().Length == 0); case "is not empty": return(value.ToString().Length > 0); case "contains": return(((string)leftOperand).Contains(value.ToString())); case "is in": return(((List <object>)value).Contains(leftOperand)); } return(true); }
private static bool matchCondition(TapestryDesignerCondition condition, Dictionary <string, object> vars) { switch (condition.Operator) { case "exists": return(vars.ContainsKey(condition.Variable)); } object leftOperand = KeyValueString.ParseValue(condition.Variable, vars); switch (condition.Operator) { case "is empty": return(leftOperand == null || leftOperand == DBNull.Value || leftOperand.ToString().Length == 0); case "is not empty": return(leftOperand != null && leftOperand != DBNull.Value && leftOperand.ToString().Length > 0); } object value = KeyValueString.ParseValue(condition.Value, vars); if (leftOperand == null || value == null) { return(false); } switch (condition.Operator) { case "==": if (leftOperand is bool) { return((bool)leftOperand == (bool)value); } else { return(leftOperand.ToString() == value.ToString()); } case "!=": if (leftOperand is bool) { return((bool)leftOperand != (bool)value); } else { return(leftOperand.ToString() != value.ToString()); } case ">": if (leftOperand is DateTime && value is DateTime) { return((DateTime)leftOperand > (DateTime)value); } else { return(Convert.ToDecimal(leftOperand) > Convert.ToDecimal(value)); } case ">=": if (leftOperand is DateTime && value is DateTime) { return((DateTime)leftOperand >= (DateTime)value); } else { return(Convert.ToDecimal(leftOperand) >= Convert.ToDecimal(value)); } case "<": if (leftOperand is DateTime && value is DateTime) { return((DateTime)leftOperand < (DateTime)value); } else { return(Convert.ToDecimal(leftOperand) < Convert.ToDecimal(value)); } case "<=": if (leftOperand is DateTime && value is DateTime) { return((DateTime)leftOperand <= (DateTime)value); } else { return(Convert.ToDecimal(leftOperand) <= Convert.ToDecimal(value)); } case "contains": return(((string)leftOperand).Contains(value.ToString())); case "is in": return(((List <object>)value).Contains(leftOperand)); } return(true); }
public Category(String key, String value) { Value = new KeyValueString(key, value); }
public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message) { var dictionary = vars.ContainsKey("Dictionary") ? (Dictionary <string, object>)vars["Dictionary"] : new Dictionary <string, object>(); DBItem rowData = null; bool useRowData = true; bool skipMapping = false; if (!vars.ContainsKey("RowData")) { useRowData = false; } else if (vars["RowData"] is string) { rowData = (DBItem)vars[(string)vars["RowData"]]; } else if (vars["RowData"] is DBItem) { rowData = (DBItem)vars["RowData"]; } else if (vars["RowData"] is IEnumerable <DBItem> ) { rowData = (vars["RowData"] as IEnumerable <DBItem>).FirstOrDefault(); } var autoMapping = (vars.ContainsKey("AutoMapping") && Convert.ToBoolean(vars["AutoMapping"])); List <string> mappingStringList = null; if (autoMapping) { mappingStringList = rowData.getColumnNames().Select(a => $"{a}:{a}").ToList(); } else if (!vars.ContainsKey("KeyMapping")) { skipMapping = true; } else { mappingStringList = ((string)vars["KeyMapping"]).Split(',').ToList(); } if (!skipMapping) { foreach (string mappingString in mappingStringList) { List <string> tokens = mappingString.Split(':').ToList(); if (tokens.Count != 2) { continue; } string columnName = tokens[1]; object value; if (useRowData) { value = rowData[columnName]; } else { value = KeyValueString.ParseValue(columnName, vars); } if (value == null) { dictionary[tokens[0]] = ""; } else if (value is List <object> ) { dictionary[tokens[0]] = value; } else { dictionary[tokens[0]] = value.ToString(); } } } outputVars["Result"] = dictionary; }
public bool ReceiveHeaders(out KeyValueString[] headers) { headers = _EmptyHeaders; var buffer = _EmptyBuffer; var length = 0; if (Stream.CanRead) { VitaNexCore.WaitWhile(() => !Stream.DataAvailable, TimeSpan.FromMilliseconds(1000)); if (Stream.DataAvailable) { buffer = new byte[Client.ReceiveBufferSize]; using (var ms = new MemoryStream()) { int idx = 0, seq = 0; while (Stream.DataAvailable) { var r = Stream.ReadByte(); if (r > -1) { if (++length > WebAPI.CSOptions.MaxReceiveBufferSizeBytes) { throw new InternalBufferOverflowException( String.Format("Received data exceeded {0:#,0} bytes", WebAPI.CSOptions.MaxReceiveBufferSizeBytes)); } var b = (byte)r; buffer[idx++] = b; if (Sequence(b, ref seq) && seq >= 4) { break; } if (idx >= buffer.Length) { ms.Write(buffer, 0, idx); idx = 0; } } } if (idx > 0) { ms.Write(buffer, 0, idx); } buffer = ms.ToArray(); length = buffer.Length; } } } WebAPI.CSOptions.ToConsole( "Received {0:#,0} bytes ({1:#,0} bytes/read)", length, Math.Min(length, Client.ReceiveBufferSize)); if (length <= 0) { return false; } var raw = Encoding.ASCII.GetString(buffer, 0, length); if (String.IsNullOrWhiteSpace(raw)) { return false; } var h = raw.Split(_Separators, StringSplitOptions.RemoveEmptyEntries); if (h.Length == 0) { return false; } headers = ParseHeaders(h).ToArray(); return headers.Length > 0; }