private List <string> GetIDs() { StringBuilder sb = new StringBuilder(); List <string> idStr = new List <string>(); if (_groupNode.IsGroup && _groupNode.Group.hasTypes) { int counter = 0; foreach (var no in _groupNode.ChildrensList) { sb.Append($"{no.TypeID.ID},"); if (counter >= 199) { counter = 0; idStr.Add(sb.RemoveLast(1).ToString()); } } idStr.Add(sb.RemoveLast(1).ToString()); } else if (_groupNode.IsGroup && _groupNode.TypeID != null) { sb.Append($"{_groupNode.TypeID.ID},"); idStr.Add(sb.RemoveLast(1).ToString()); } return(idStr); }
string BuildArguments(string[] targets) { var sb = new StringBuilder(); sb.Append(_projFile); sb.AppendFormat(" /m:{0}", _count <= 1?1:_count); sb.Append(" /v:" + Parse(_verbosity)); if (Properties != null) { sb.Append(" /p:"); foreach (var name in Properties.AllKeys) { sb.AppendFormat("{0}={1};", name, Properties[name]); } sb.RemoveLast(); } if (targets.Length > 0) { sb.Append(" /t:"); foreach (var t in targets) { sb.Append(t + ";"); } sb.RemoveLast(); } sb.Append(" /clp:ErrorsOnly;PerformanceSummary"); return(sb.ToString()); }
internal DaoErrMsg UpdatePersonnel(List <PersonnelContent> Personnel) { DaoErrMsg err = new DaoErrMsg(); if (Personnel.Count <= 0) { return(err); } //先清除人員資資料;// string strSchema = string.Format("DELETE FROM tbPersonnel;"); m_SQL.ExecuteNonQuery(strSchema); //更新資料;// int Count = 0; StringBuilder sbSchema = new StringBuilder(); sbSchema.Append(@"insert into tbPersonnel( [Key], [JobNumber], [ChineseName], [EnglishName], [CardNumber], [Alias], [Voice], [TEL], [Phone]) values "); for (int i = 0; i < Personnel.Count; i++) { sbSchema.AppendFormat(@"('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}'), " , Personnel[i].Key , Personnel[i].JobNumber , Personnel[i].ChineseName , Personnel[i].EnglicshName , Personnel[i].CardNumber , Personnel[i].Alias , Personnel[i].Voice , Personnel[i].TEL , Personnel[i].Phone); Count++; if (Count >= 50) { sbSchema.RemoveLast(","); err = m_SQL.ExecuteNonQuery(sbSchema.ToString()); if (err.isError == true) { return(err); } sbSchema.Length = 0; sbSchema.Capacity = 0; Count = 0; sbSchema.Append(@"insert into tbPersonnel( [Key], [JobNumber], [ChineseName], [EnglishName], [CardNumber], [Alias], [Voice], [TEL], [Phone]) values "); } } if (Count != 0) { sbSchema.RemoveLast(","); err = m_SQL.ExecuteNonQuery(sbSchema.ToString()); } return(err); }
private void HandleAnonymous(NewExpression node) { var i = 0; foreach (var arg in node.Arguments) { //_sb.AppendLine(); Visit(arg); _sb.AppendFormat(" as {0},", node.Members[i].Name); i++; } _sb.RemoveLast(); }
internal DaoErrMsg UpdateAttendance(List <Attendance> attendance) { DaoErrMsg err = new DaoErrMsg(); if (attendance.Count <= 0) { return(err); } //先清除人員資資料;// string strSchema = string.Format("DELETE FROM tbAttendance;"); m_SQL.ExecuteNonQuery(strSchema); //更新資料;// int Count = 0; StringBuilder sbSchema = new StringBuilder(); sbSchema.Append(@"insert into tbAttendance( [CardNum], [Date], [Time]) values "); for (int i = 0; i < attendance.Count; i++) { sbSchema.AppendFormat(@"('{0}','{1}','{2}'), " , attendance[i].CardNo , attendance[i].Time.ToString("yyyyMMdd") , attendance[i].Time.ToString("HHmm")); Count++; if (Count >= 50) { sbSchema.RemoveLast(","); err = m_SQL.ExecuteNonQuery(sbSchema.ToString()); if (err.isError == true) { return(err); } sbSchema.Length = 0; sbSchema.Capacity = 0; Count = 0; sbSchema.Append(@"insert into tbAttendance( [CardNum], [Date], [Time]) values "); } } if (Count != 0) { sbSchema.RemoveLast(","); err = m_SQL.ExecuteNonQuery(sbSchema.ToString()); } return(err); }
public void FactMethodName() { Expression <Func <Test, bool> > data = t => new[] { 1, 2 }.Contains(t.Id); var meth = ObjectExtend.CastAs <MethodCallExpression>(data.Body); Assert.Equal("Contains", meth.Method.Name); var param = ObjectExtend.CastAs <MemberExpression>(meth.Arguments[1]); Assert.True(param.BelongsToParameter()); var sb = new StringBuilder(); sb.Append(param.Member.Name).Append(" in ("); var list = ObjectExtend.CastAs <IEnumerable>(meth.Arguments[0].GetValue()); var en = list.GetEnumerator(); while (en.MoveNext()) { sb.Append(en.Current).Append(","); } sb.RemoveLast(); sb.Append(")"); Write(sb.ToString()); }
public static string GetDocumentString(this MethodInfo method) { var sb = new StringBuilder(); sb.Append("M:"); sb.Append(GetDocumentStringInternal(method.DeclaringType)); sb.Append('.'); sb.Append(method.Name); if (method.IsGenericMethod) { var generics = method.GetGenericArguments(); sb.Append("``").Append(generics.Length); } var parameters = method.GetParameters(); if (parameters.Length > 0) { sb.Append("("); foreach (var parameter in parameters) { sb.Append(GetParameterDocumentString(parameter.ParameterType)); sb.Append(","); } sb.RemoveLast(","); sb.Append(")"); } return(sb.ToString()); }
public static string CreateUpdateEntitySql(EntityDef entityDef, int number = 0) { StringBuilder args = new StringBuilder(); foreach (EntityPropertyDef propertyInfo in entityDef.PropertyDefs) { if (propertyInfo.IsPrimaryKey) { continue; } args.Append($" {propertyInfo.DbReservedName}={propertyInfo.DbParameterizedName}_{number},"); } args.RemoveLast(); EntityPropertyDef primaryKeyProperty = entityDef.PrimaryKeyPropertyDef; EntityPropertyDef deletedProperty = entityDef.GetPropertyDef(nameof(Entity.Deleted)) !; EntityPropertyDef versionProperty = entityDef.GetPropertyDef(nameof(Entity.Version)) !; StringBuilder where = new StringBuilder(); where.Append($"{primaryKeyProperty.DbReservedName}={primaryKeyProperty.DbParameterizedName}_{number} AND "); where.Append($"{versionProperty.DbReservedName}={versionProperty.DbParameterizedName}_{number} - 1 AND "); where.Append($"{deletedProperty.DbReservedName}=0"); return($"UPDATE {entityDef.DbTableReservedName} SET {args} WHERE {where};"); }
public string GetColumnsSql(params Expression[] columns) { var sb = new StringBuilder(); columns.ForEach(d => sb.Append($"{_results["col"].Dequeue()},")); return(sb.RemoveLast().ToString()); }
private void WriteUpdateSql(StreamWriter writer) { writer.WriteLine("--Update " + tableName + " "); writer.WriteLine("if(@pOptions=" + (int)SqlType.Update + ")"); writer.WriteLine("begin"); writer.WriteLine("UPDATE "+ tableName + " "); writer.WriteLine("SET"); var stringBuilder = new StringBuilder(); foreach (var schema in tableSchema.Where(p => p.IsIdentity.ToLower() == "false")) { stringBuilder.AppendLine("" + schema.ColumnName + " = @"+ schema.ColumnName + " ,"); } writer.WriteLine(stringBuilder.RemoveLast(",")); writer.WriteLine("WHERE " + tablePk.ColumnName + " = @"+ tablePk.ColumnName + ";"); writer.WriteLine("IF @@ROWCOUNT = 0"); writer.WriteLine("Begin"); writer.WriteLine("SET @Msg='Warning: No rows were Updated'; "); writer.WriteLine("End"); writer.WriteLine("Else"); writer.WriteLine("Begin"); writer.WriteLine("SET @Msg='Data Updated Successfully';"); writer.WriteLine("End"); writer.WriteLine("End"); writer.WriteLine("--End of Update " + tableName + " "); }
private void FilterShowResult() { var lpGrid = XamlComponentsManager.GetManager().Get <Grid>(XamlComponentsType.LpGrid); // 获取数据库 var newTypeIDs = LocalConfigLoadManager.GetConfigClass <TypeIDDBClass>(); List <LpGroupTypeShow> groups = new List <LpGroupTypeShow>(); foreach (var item in _lpItemsBuffer) { var iShow = new LpGroupTypeShow(); // 获取物品名称和数量 newTypeIDs.TryGet(item.type_id, out string name); iShow.Name = name; iShow.Count = item.quantity; iShow.IskCost = item.isk_cost; iShow.LpCpost = item.lp_cost; if (item.required_items != null) { // 前置名和前置数量,以及前置总价 StringBuilder preNames = new StringBuilder(); StringBuilder preCounts = new StringBuilder(); foreach (var preItem in item.required_items) { _dictLpItemRequestData.TryGetValue(preItem.type_id, out var jsonfpi); if (jsonfpi != null) { // 这里需要有个变量来控制前置消耗是按照卖单还是买单 if (!Signal.LpPreSale) { iShow.PreCost += jsonfpi.buy.max * preItem.quantity; } else { iShow.PreCost += jsonfpi.sell.min * preItem.quantity; } } newTypeIDs.TryGet(preItem.type_id, out string preN); preNames.Append($"{preN}&"); preCounts.Append($"{preItem.quantity}&"); } preNames.RemoveLast(1); iShow.PreName = preNames.ToString(); preCounts.RemoveLast(1); iShow.PreCount = preCounts.ToString(); } _dictLpItemRequestData.TryGetValue(item.type_id, out var jsonfi); if (jsonfi != null) { iShow.Buy = jsonfi.buy.max * item.quantity; iShow.Sale = jsonfi.sell.min * item.quantity; } groups.Add(iShow); } var queryLpGroupVM = lpGrid.Resources["queryLpGroupVM"] as ViewModel.Query.QueryLpGroupVM; queryLpGroupVM.TypeShowSources = groups; StatusManager.GetManager()?.ShowMsg($"请求数据完毕....."); }
/// <summary> /// 输出一个包含集合中所有元素的字符串, 默认形如[a1, a2, a3, [a41, a42, a43], a5] /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection">指定的集合</param> /// <param name="separator">元素之间的分隔符, 默认是", "</param> /// <param name="prefix">第一个元素之前的字符串, 默认是"["</param> /// <param name="postfix">最后一个元素之后的字符串, 默认是"]"</param> /// <param name="transform">对于每个元素, 输出字符串之前进行一个操作.默认为null, 代表调用ToString().</param> /// <returns></returns> public static string ToAllEnumStrings <T>(IEnumerable <T> collection, Func <T, string> transform, string separator = ", ", string prefix = "[", string postfix = "]") { if (transform is null) { throw new ArgumentNullException(nameof(transform)); } if (!collection.Any()) { return($"{prefix}No Items{postfix}"); } var sb = new StringBuilder(prefix); foreach (var item in collection) { string s = item switch { null => "[NULL]", string ss => ss, IEnumerable <T> ienum => ToAllEnumStrings(ienum, separator, prefix, postfix), _ => transform.Invoke(item) }; sb.Append(s); sb.Append(separator); } sb.RemoveLast(separator.Length); sb.Append(postfix); return(sb.ToString()); }
public static StringBuilder RemoveLastIf(this StringBuilder sb, char c) { if (sb.Length > 0 && sb[sb.Length - 1] == c) { sb.RemoveLast(); } return(sb); }
public void RemoveLastTest() { StringBuilder _builder = new StringBuilder(); _builder.Append("Hello World;"); _builder = _builder.RemoveLast(";"); Assert.AreEqual("Hello World", _builder.ToString()); }
private void QueryLpGroup() { StringBuilder sb = new StringBuilder(); List <string> idStrs = new List <string>(); for (int i = 0; i < _ids.Count; i++) { sb.Append($"{_ids[i]},"); if (i != 0 && i % 199 == 0) { sb.RemoveLast(1); idStrs.Add(sb.ToString()); sb.Clear(); } } sb.RemoveLast(1); idStrs.Add(sb.ToString()); // 设置批次查询计数器与查询状态,使用多线程查询时,禁止对同一个功能的后续查询 // 等待批次处理完毕再进行下面的 counter = 0; times = idStrs.Count; querying = true; _dictLpItemRequestData.Clear(); foreach (var str in idStrs) { if (string.IsNullOrEmpty(str)) { times--; if (times <= 0) { querying = false; StatusManager.GetManager()?.ShowMsg("没有匹配到请求的数据,本次请求取消,检查物品类型....."); return; } continue; } new Thread(new ThreadStart(() => { // HttpRequestManager.SetQueryPost(str, RegionGalaxyID.MarketGroupRegionID, RegionGalaxyID.MarketGroupGalaxyID); HttpRequestManager.SetQueryPost(str, RegionGalaxyID.LpQueryRegionID, RegionGalaxyID.LpQueryGalaxyID); HttpRequestManager.Post("NULL", QueryLpGroupCompleteMuti); })).Start(); // 休眠0.1s,否则会有线程不安全,线程准备需要时间,这里赋值可能造成引用错乱 Thread.Sleep(100); } }
string IXapDataProvider.ExecuteJson() { StringBuilder json = new StringBuilder(); string retVal = string.Empty; try { OpenConnection(); XapDataReader dr = new XapDataReader(_dbCommand.ExecuteReader()); json.AppendLine("{\"data\":["); do { string obj = string.Empty; string colName = string.Empty; while (dr.Read()) { json.AppendLine("{"); for (int i = 0; i <= dr.FieldCount - 1; i++) { obj = dr.GetValue(i).ToString().Trim(); colName = dr.GetName(i); if (obj == null || string.IsNullOrEmpty(obj.ToString())) { obj = string.Empty; } json.AppendLine(string.Format("\"{0}\":\"{1}\",", colName, obj.ToString())); } json = json.RemoveLast(","); json.AppendLine("},"); } } while (dr.NextResult()); json = json.RemoveLast(","); json.AppendLine("]}"); retVal = json.ToString(); return(retVal); } catch (Exception ex) { throw new XapException($"Error executing json for {_dbConnectionContext.DbKey}", ex); } finally { ((IXapDataProvider)this).CloseConnection(); } }
/// <summary> /// 移除尾部的指定字符串, 如果不符合将不更动.常用于更动字符串中的文件扩展名. /// </summary> /// <param name="sb"></param> /// <param name="toRemove">指定的一系列字符串, 如果尾部符合, 将被移除</param> /// <returns>移除尾部指定字符串的结果</returns> public static void RemoveLast(this StringBuilder sb, params string[] toRemove) { foreach (var endString in toRemove) { if (sb.ToString().EndsWith(endString)) { sb.RemoveLast(endString.Length); } } }
private static string BuildJson(EntityValidationInfo entity) { var sb = new StringBuilder("rules:{"); foreach (var property in entity.Properties) { SerializeProperty(string.Empty, property, sb); } return(sb.RemoveLast().Append("}").ToString()); }
public void RemoveLastEmptyInstance() { StringBuilder sb = new StringBuilder(); string expected = ""; sb.RemoveLast("!"); Assert.AreEqual(expected, sb.ToString()); }
public static void WriteColumnsNames(ICollection <string> columns, StringBuilder builder, Func <string, string> formatter) { columns.MustNotBeNull(); formatter.MustNotBeNull(); foreach (var column in columns) { builder.Append(formatter(column.Trim())).Append(","); } builder.RemoveLast(); }
public void RemoveLastExactMatch() { StringBuilder sb = new StringBuilder(); sb.Append("!"); string expected = ""; sb.RemoveLast("!"); Assert.AreEqual(expected, sb.ToString()); }
static object Print(object x) { var ie = x as System.Collections.IEnumerable; if (ie != null) { var sb = new StringBuilder("["); foreach (var y in ie) sb.AppendFormat("{0}, ", Print(y)); return sb.RemoveLast(2).Append("]").ToString(); } return x; }
public void RemoveLast() { StringBuilder sb = new StringBuilder(); sb.Append("Something awesome!!"); string expected = "Something awesome!"; sb.RemoveLast("!"); Assert.AreEqual(expected, sb.ToString()); }
public static void WriteAllLinesWithoutUselessNewLine(string path, string[] contents) { var result = new StringBuilder(); foreach (string line in contents) { result.Append(line).Append('\n'); } result.RemoveLast(); WriteAllText(path, result.ToString()); }
private void WriteAddSql(StreamWriter writer) { Blank(writer); writer.WriteLine("--Save " + tableName + ""); writer.WriteLine("if(@pOptions=" + (int)SqlType.Add + ")"); writer.WriteLine("begin"); writer.WriteLine("INSERT INTO " + tableName + ""); writer.WriteLine("("); var stringBuilder = new StringBuilder(); bool firstINSERTINTO = true; foreach (var schema in tableSchema) { if (!firstINSERTINTO) { stringBuilder.Append(schema.ColumnName + ","); } firstINSERTINTO = false; } writer.WriteLine(stringBuilder.RemoveLast(",")); writer.WriteLine(")"); writer.WriteLine("VALUES( "); stringBuilder = new StringBuilder(); bool firstVALUES = true; foreach (var schema in tableSchema) { if (!firstVALUES) { stringBuilder.Append("@" + schema.ColumnName + ","); } firstVALUES = false; } writer.WriteLine(stringBuilder.RemoveLast(",")); writer.WriteLine(")"); writer.WriteLine("IF @@ROWCOUNT = 0"); writer.WriteLine("Begin"); writer.WriteLine("SET @Msg='Warning: No rows were Inserted'; "); writer.WriteLine("End"); writer.WriteLine("Else"); writer.WriteLine("Begin"); writer.WriteLine("SET @Msg='Data Saved Successfully'; "); writer.WriteLine("End "); writer.WriteLine("end"); writer.WriteLine("--End of Save " + tableName + ""); }
public void Test07_RemoveLastNStringBuilder() { StringBuilder expected = new StringBuilder("Building with"); StringBuilder testBuilderPlusChars = new StringBuilder(expected.ToString()); string toAdd = " multiple characters"; testBuilderPlusChars.Append(toAdd); testBuilderPlusChars.RemoveLast(toAdd.Length); Assert.AreEqual(expected.ToString(), testBuilderPlusChars.ToString()); }
private static StringBuilder CreateWhereSql(Hashtable sqlWhere) { StringBuilder _builder = new StringBuilder(); foreach (DictionaryEntry de in sqlWhere) { string _key = de.Key.ToString().ToLower(); _builder.AppendFormat("{0}=@{1} and ", _key, _key); } _builder = _builder.RemoveLast("and"); return(_builder); }
private static StringBuilder CreateUpdateSql(Hashtable sqlWhere) { StringBuilder builder = new StringBuilder(); foreach (DictionaryEntry de in sqlWhere) { string key = de.Key.ToString().ToLower(); builder.AppendFormat("{0}=@{1}, ", key, key); } builder = builder.RemoveLast(","); return(builder); }
private void GiveRandomSpells(ConnectedPlayer player) { StringBuilder playerMsg = new StringBuilder("You have knowledge of the following spells: "); foreach (WizardSpellData randomSpell in GetRandomWizardSpells()) { Spell spell = randomSpell.AddToPlayer(player.Script); player.Script.mind.AddSpell(spell); playerMsg.Append($"<b>{randomSpell.Name}</b>, "); } playerMsg.RemoveLast(", ").Append("."); Chat.AddExamineMsgFromServer(player.GameObject, playerMsg.ToString()); }
private void AddConstraints(List <ForeignKeyDefinition> foreignKeys) { _sb.RemoveLastIfEquals(',').Append(','); foreignKeys.ForEach(fk => { _sb.Append("foreign key ("); fk.Columns.ForEach(col => _sb.Append(_provider.EscapeIdentifier(col) + ",")); _sb.RemoveLast().Append(")"); _sb.Append(" references " + _provider.EscapeTableName(fk.ParentTable) + "("); fk.ParentColumns.ForEach(col => _sb.Append(_provider.EscapeIdentifier(col) + ",")); _sb.RemoveLast().Append(")"); if (fk.OnUpdate != ForeignKeyRelationCascade.NotSet) { _sb.Append(" on update " + fk.OnUpdate); } if (fk.OnDelete != ForeignKeyRelationCascade.NotSet) { _sb.Append(" on delete " + fk.OnDelete); } _sb.AppendLine().Append(','); }); _sb.RemoveLast(); }
public static string FormatNoWarn(List <int> noWarn) { var stringBuilder = new StringBuilder(); foreach (var warningNumber in noWarn) { stringBuilder.Append($"{warningNumber};"); } stringBuilder.RemoveLast(); var noWarnString = stringBuilder.ToString(); return(noWarnString); }
static object Print(object x) { var ie = x as System.Collections.IEnumerable; if (ie != null) { var sb = new StringBuilder("["); foreach (var y in ie) { sb.AppendFormat("{0}, ", Print(y)); } return(sb.RemoveLast(2).Append("]").ToString()); } return(x); }
public static void AppendParameterList(StringBuilder builder, params object[] paras) { if ((paras != null) && paras.Any()) { builder.Append(ParamsStart); foreach (var idVal in paras) { builder.Append(idVal?.ToString() ?? ParamNull); builder.Append(ParamsSeparator); } builder.RemoveLast(ParamsSeparator); builder.Append(ParamsEnd); } }
internal static async Task UpdateValues <T>(this string connection, T m, string query, params string[] byteFields) { if (query.ContainsAny("from", "where")) { string table = query.WordAfter("from"); string condition = query.GetBetween(table, query.LastWord()) + query.LastWord(); StringBuilder UpdateQuery = new StringBuilder($"UPDATE {table} SET "); PropertyInfo[] props = m.GetType().GetProperties(); List <SqlParameter> parameters = new List <SqlParameter>(); for (int i = 0; i < props.Length; i++) { string name = $"[{props[i].Name}]"; object value = props[i].GetValue(m); if (value != null) { string paramName = $"@V{i + 1}"; UpdateQuery.Append($"{name}={paramName},"); if (byteFields.ContainsAny(name)) { byte[] bytes = Convert.FromBase64String(value.ToString()); parameters.AddSqlParameter(paramName, bytes); } else { parameters.AddSqlParameter(paramName, value); } } } UpdateQuery.RemoveLast(condition); if (parameters.Count > 0) { using SqlConnection cn = new SqlConnection(connection); using SqlCommand cmd = new SqlCommand(UpdateQuery.ToString(), cn); cmd.Parameters.AddRange(parameters.ToArray()); await cn.OpenAsync(); await cmd.ExecuteNonQueryAsync(); await cn.CloseAsync(); } } }
private void AddIndexes(List<IndexDefinition> indexes) { var sb=new StringBuilder(); indexes.ForEach(idx => { sb.Clear(); sb.Append("create "); if (idx.IsUnique) sb.Append("unique "); sb.Append("index "); sb.Append(idx.Name ?? "ix_" + _data.TableName.DDLUsableString + "_" + StringUtils.CreateRandomString(7)); sb.Append($" on {_tableName}("); idx.Columns.ForEach(n => { sb.Append(n + ","); }); sb.RemoveLast().Append(")"); sb.AppendLine(";"); _sb.Append(_provider.FormatIndexOptions(sb.ToString(), idx.Options)); }); }
public void FactMethodName() { Expression<Func<Test, bool>> data = t => new[] {1, 2}.Contains(t.Id); var meth = ObjectExtend.CastAs<MethodCallExpression>(data.Body); Assert.Equal("Contains",meth.Method.Name); var param = ObjectExtend.CastAs<MemberExpression>(meth.Arguments[1]); Assert.True(param.BelongsToParameter()); var sb = new StringBuilder(); sb.Append(param.Member.Name).Append(" in ("); var list = ObjectExtend.CastAs<IEnumerable>(meth.Arguments[0].GetValue()); var en=list.GetEnumerator(); while (en.MoveNext()) { sb.Append(en.Current).Append(","); } sb.RemoveLast(); sb.Append(")"); Write(sb.ToString()); }
/// <summary> /// /// </summary> /// <param name="idCda"></param> /// <param name="cdaVersion"></param> /// <param name="cdaXml"></param> /// <param name="otherQueries"></param> /// <param name="rootPath"></param> /// <param name="queryName"></param> /// <param name="queryReturnType"></param> /// <param name="entityCodeWithPrefix"></param> /// <returns></returns> public static async Task<FromXmlTransformationsResult> FromXmlTransformations( int idCda, int cdaVersion, XNode cdaXml, string rootPath, string queryName, IList<XElement> otherQueries = null, QueryReturnTypes queryReturnType = QueryReturnTypes.XPathBoolean | QueryReturnTypes.XPathInt | QueryReturnTypes.XQueryFlwrInt, bool entityCodeWithPrefix = true ) { if (cdaXml == null) { throw new ArgumentNullException(nameof(cdaXml)); } if (string.IsNullOrWhiteSpace(rootPath)) { throw new ArgumentNullException(nameof(rootPath)); } if (string.IsNullOrWhiteSpace(queryName)) { throw new ArgumentNullException(nameof(queryName)); } Dictionary<QueryReturnTypes, string> queryContainers = new Dictionary<QueryReturnTypes, string>() { { QueryReturnTypes.XPathBoolean, @"boolean(/" + rootPath + "[{0}])" }, { QueryReturnTypes.XPathInt, @"count(/" + rootPath + "[{0}])" }, { QueryReturnTypes.XQueryFlwrInt, @"for $x in /" + rootPath + " let $where := ({0}) return if ($where) then 1 else 0" }, }; XDocument QueryTransformations = new XDocument(new XElement("QUERIES")); List<Rule> rules = new List<Rule>(); List<CdaTag> cdaTags = new List<CdaTag>(); List<QueryReturnTypes> returnTypes = new List<QueryReturnTypes>(); Condition conditionObj = null; Operator operatorObj = null; bool tryGet = false; XElement conditionsRoot = ((XElement)cdaXml).FirstNode as XElement; var cdaBuilderXPath = new StringBuilder(); var cdaBuilderXQuery = new StringBuilder(); char openGroupChar = '('; char closeGroupChar = ')'; if (queryReturnType.HasFlag(QueryReturnTypes.XPathBoolean)) returnTypes.Add(QueryReturnTypes.XPathBoolean); if (queryReturnType.HasFlag(QueryReturnTypes.XPathInt)) returnTypes.Add(QueryReturnTypes.XPathInt); if (queryReturnType.HasFlag(QueryReturnTypes.XQueryFlwrInt)) returnTypes.Add(QueryReturnTypes.XQueryFlwrInt); foreach (var group in conditionsRoot.Descendants("GROUP")) { var conditionSymbol = group.Attribute("CONDITION").Value; cdaBuilderXPath.AppendFormat(@"{0}", openGroupChar); cdaBuilderXQuery.AppendFormat(@"{0}", openGroupChar); foreach (var ruleElement in group.Elements("RULE")) { var entityCode = ruleElement.Attribute("ENTITYCODE").Value; var entityType = ruleElement.Attribute("ENTITYTYPE").Value; var operatorSymbol = ruleElement.Attribute("OPERATOR").Value; var value = ruleElement.Attribute("VALUE").Value; Rule rule = new Rule { EntityCode = entityCode, Operator = operatorSymbol, Value = value, EntityType = entityCode.Substring(0, 3), GroupCondition = conditionSymbol }; var cdaTag = await CreateCdaTags(rule); rules.Add(rule); cdaTags.Add(cdaTag); if (entityCodeWithPrefix) { entityCode = AddPrefixToEntityCode(rule); } cdaBuilderXPath.AppendFormat(XPathEntityPrefix, entityCode); cdaBuilderXQuery.AppendFormat(XQueryEntityPrefix, entityCode); tryGet = Operators.ListKeyValue.TryGetValue(operatorSymbol.ToLower(), out operatorObj); if (tryGet) { cdaBuilderXPath.AppendFormat(@" {0}", string.Format(operatorObj.XPathValue, value)); cdaBuilderXQuery.AppendFormat(@" {0}", string.Format(operatorObj.XPathValue, value)); } tryGet = Conditions.ListKeyValue.TryGetValue(conditionSymbol.ToLower(), out conditionObj); if (tryGet) { cdaBuilderXPath.AppendFormat(@" {0} ", conditionObj.Value); cdaBuilderXQuery.AppendFormat(@" {0} ", conditionObj.Value); } } cdaBuilderXPath.RemoveLast($" {conditionObj.Value} "); cdaBuilderXQuery.RemoveLast($" {conditionObj.Value} "); cdaBuilderXPath.AppendFormat(@"{0}", closeGroupChar); cdaBuilderXQuery.AppendFormat(@"{0}", closeGroupChar); tryGet = Conditions.ListKeyValue.TryGetValue(conditionSymbol.ToLower(), out conditionObj); if (tryGet) { cdaBuilderXPath.AppendFormat(@" {0} ", conditionObj.Value); cdaBuilderXQuery.AppendFormat(@" {0} ", conditionObj.Value); } } cdaBuilderXPath.RemoveLast($" {conditionObj.Value} "); cdaBuilderXQuery.RemoveLast($" {conditionObj.Value} "); var internalCode = await CreateCdaInternalCode(rules); if (otherQueries?.Count > 0) { QueryTransformations.Element("QUERIES").Add(otherQueries); } var cdaBuilderXPathEscaped = cdaBuilderXPath.ToString().EscapeString(); var cdaBuilderXQueryEscaped = cdaBuilderXPath.ToString().EscapeString(); returnTypes.ForEach(type => { var queryElement = new XElement("QUERY", new XAttribute("NAME", queryName)); switch (type) { case QueryReturnTypes.XPathInt: queryElement.Add( new XAttribute("TYPE", "xpath"), new XAttribute("EXPRESSIONTYPE", string.Empty), new XAttribute("RETURNTYPE", "int"), new XAttribute("WHERECLAUSE", string.Format(queryContainers[QueryReturnTypes.XPathInt], cdaBuilderXPathEscaped)), new XAttribute("IDCDA", idCda), new XAttribute("CDAVERSION", cdaVersion) ); break; case QueryReturnTypes.XPathBoolean: queryElement.Add( new XAttribute("TYPE", "xpath"), new XAttribute("EXPRESSIONTYPE", string.Empty), new XAttribute("RETURNTYPE", "bool"), new XAttribute("WHERECLAUSE", string.Format(queryContainers[QueryReturnTypes.XPathBoolean], cdaBuilderXPathEscaped)), new XAttribute("IDCDA", idCda), new XAttribute("CDAVERSION", cdaVersion) ); break; case QueryReturnTypes.XQueryFlwrInt: queryElement.Add( new XAttribute("TYPE", "xquery"), new XAttribute("EXPRESSIONTYPE", "flwr"), new XAttribute("RETURNTYPE", "int"), new XAttribute("WHERECLAUSE", string.Format(queryContainers[QueryReturnTypes.XQueryFlwrInt], cdaBuilderXQueryEscaped)), new XAttribute("IDCDA", idCda), new XAttribute("CDAVERSION", cdaVersion) ); break; default: break; } QueryTransformations.Root.Add(queryElement); }); FromXmlTransformationsResult result = new FromXmlTransformationsResult() { QueryTransformations = new QueryTransformation() { ResultValue = QueryTransformations, Success = true }, TagsTransformation = new TagsTransformation() { ResultValue = cdaTags, Success = true }, InternalCode = new InternalCode() { ResultValue = internalCode, Success = true } }; return await Task.FromResult(result); }
public static void WriteColumnsNames(ICollection<string> columns, StringBuilder builder, Func<string, string> formatter) { columns.MustNotBeNull(); formatter.MustNotBeNull(); foreach (var column in columns) { builder.Append(formatter(column.Trim())).Append(","); } builder.RemoveLast(); }
string BuildArguments(string[] targets) { var sb = new StringBuilder(); sb.Append(_projFile); sb.AppendFormat(" /m:{0}",_count<=1?1:_count); sb.Append(" /v:" + Parse(_verbosity)); if (Properties != null) { sb.Append(" /p:"); foreach (var name in Properties.AllKeys) { sb.AppendFormat("{0}={1};", name, Properties[name]); } sb.RemoveLast(); } if (targets.Length > 0) { sb.Append(" /t:"); foreach (var t in targets) { sb.Append(t + ";"); } sb.RemoveLast(); } sb.Append(" /clp:ErrorsOnly;PerformanceSummary"); return sb.ToString(); }
public string GetColumnsSql(params Expression[] columns) { var sb=new StringBuilder(); columns.ForEach(d=>sb.Append($"{_results["col"].Dequeue()},")); return sb.RemoveLast().ToString(); }
/// <summary> /// /// </summary> /// <param name="jsonCda"></param> /// <param name="tagTextColumnName"></param> /// <param name="entityCodeColumnName"></param> /// <returns></returns> public static async Task<string> FromJsonToTagsSqlQuery(string jsonCda, string tagTextColumnName, string entityCodeColumnName) { Debug.Assert(!string.IsNullOrWhiteSpace(jsonCda), "jsonCda is null or empty"); var fakeCdaMasterObj = new CdaMasterDto() { GlobalId = new Guid(), Id = -1, Version = 1, Name = string.Empty, Active = true, Cancelled = false, Code = string.Empty, CreationTime = DateTime.UtcNow, UpdatedTime = DateTime.UtcNow, Description = string.Empty, Domain = string.Empty, IdPlantCreator = 1, XsdVersion = string.Empty }; XNode cdaXml = await FromJsonToXml(fakeCdaMasterObj, jsonCda); XElement conditionsRoot = ((XElement)cdaXml).FirstNode as XElement; var queryBuilder = new StringBuilder(); char openGroupChar = '('; char closeGroupChar = ')'; var conditionSymbol = string.Empty; foreach (var group in conditionsRoot.Descendants("GROUP")) { conditionSymbol = group.Attribute("CONDITION").Value; queryBuilder.AppendFormat(@"{0}", openGroupChar); foreach (var ruleElement in group.Elements("RULE")) { var entityCode = ruleElement.Attribute("ENTITYCODE").Value; var entityType = ruleElement.Attribute("ENTITYTYPE").Value; var operatorSymbol = ruleElement.Attribute("OPERATOR").Value; var value = ruleElement.Attribute("VALUE").Value; if (!string.IsNullOrEmpty(value)) { queryBuilder.AppendFormat(@"{0} = ""{1} {2} {3}""", tagTextColumnName, entityCode, operatorSymbol.ToLower(), value); } else { queryBuilder.AppendFormat(@"{0} = ""{1}""", entityCodeColumnName, entityCode); } queryBuilder.AppendFormat(@" {0} ", conditionSymbol); } queryBuilder.RemoveLast($" {conditionSymbol} "); queryBuilder.AppendFormat(@"{0}", closeGroupChar); queryBuilder.AppendFormat(@" {0} ", conditionSymbol); } queryBuilder.RemoveLast($" {conditionSymbol} "); return await Task.FromResult(queryBuilder.ToString()); }
private void AddConstraints(PKData primaryKey) { if (primaryKey == null) return; var sb=new StringBuilder(); var name = primaryKey.Name.IsNullOrEmpty()?"pk_" + _data.TableName.DDLUsableString:primaryKey.Name; sb.Append($"constraint {name} primary key ("); primaryKey.Columns.ForEach(c => { sb.Append(_provider.EscapeIdentifier(c) + ","); }); sb.RemoveLast(); sb.AppendLine(")"); _sb.AppendLine(","+_provider.FormatIndexOptions(sb.ToString(), primaryKey.Options)); }