123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace WebAPIBase.NetCore.BusinessCore
- {
- public abstract class AbstractQueryStringBuilder : IQueryStringBuilder
- {
- public string QueryMainString;
- public string QueryKeyString;
- public string QueryOtherString;
- public bool IsNeedWhere = true;
- private ArrayList strategys = new ArrayList();
- private ArrayList orders = new ArrayList();
- public AbstractQueryStringBuilder()
- {
- }
- public virtual ArrayList GetStategys()
- {
- return strategys;
- }
- public virtual void AddStrategy(Strategy strategy, bool isUnique)
- {
- if (isUnique)
- {
- ReomveStrategy(strategy.Name);
- }
- AddStrategy(strategy);
- }
- public virtual void AddStrategy(Strategy strategy)
- {
- int parameterCount = strategy.GetParameterCount();
- for (int i = 0; i < parameterCount; i++)
- {
- string text = strategy.GetParameter(i);
- if (strategy.Type != StrategyType.StringIn && strategy.Type != StrategyType.Other && strategy.Type != StrategyType.StringRange && strategy.Type != StrategyType.NumberIn)
- {
- text = text.Replace("'", "''");
- }
- strategy.SetParameter(i, text);
- }
- strategys.Add(strategy);
- }
- public virtual void ReomveStrategy(object strategyName)
- {
- int count = strategys.Count;
- if (count == 0)
- {
- return;
- }
- for (int num = count - 1; num >= 0; num--)
- {
- Strategy strategy = (Strategy)strategys[num];
- if (strategyName.ToString() == strategy.Name.ToString())
- {
- strategys.Remove(strategy);
- }
- }
- }
- public virtual void ClearStrategy()
- {
- strategys.Clear();
- }
- public virtual void AddOrder(string Name, bool IsASC)
- {
- RemoveOrder(Name);
- orders.Add(new QueryOrder(Name, IsASC));
- }
- public virtual void RemoveOrder(string name)
- {
- int count = orders.Count;
- if (count == 0)
- {
- return;
- }
- for (int num = count - 1; num >= 0; num--)
- {
- QueryOrder queryOrder = (QueryOrder)orders[num];
- if (queryOrder.Name == name)
- {
- orders.Remove(queryOrder);
- }
- }
- }
- public virtual string BuildStrategysString()
- {
- if (strategys.Count == 0)
- {
- return "";
- }
- int num = 0;
- StringBuilder stringBuilder = new StringBuilder();
- if (IsNeedWhere)
- {
- stringBuilder.Append(" where ");
- }
- else
- {
- stringBuilder.Append(" and ");
- }
- IEnumerator enumerator = strategys.GetEnumerator();
- while (enumerator.MoveNext())
- {
- if (num != 0)
- {
- stringBuilder.Append(" and ");
- }
- Strategy strategy = (Strategy)enumerator.Current;
- stringBuilder.Append(BuildSingleStrategyString(strategy));
- num++;
- }
- return stringBuilder.ToString();
- }
- public virtual string BuildOrderString()
- {
- if (orders.Count == 0)
- {
- return "";
- }
- StringBuilder stringBuilder = new StringBuilder();
- int count = orders.Count;
- for (int i = 0; i < count; i++)
- {
- if (i != 0)
- {
- stringBuilder.Append(" , ");
- }
- else
- {
- stringBuilder.Append(" Order By ");
- }
- QueryOrder queryOrder = (QueryOrder)orders[i];
- string name = queryOrder.Name;
- bool sort = queryOrder.Sort;
- stringBuilder.Append(name);
- if (sort)
- {
- stringBuilder.Append(" ASC ");
- }
- else
- {
- stringBuilder.Append(" DESC ");
- }
- }
- return stringBuilder.ToString();
- }
- public virtual string BuildSingleStrategyString(Strategy strategy)
- {
- return StandardStrategyStringBuilder.BuildStrategyString(strategy);
- }
- public virtual string BuildMainQueryString()
- {
- return QueryMainString + BuildStrategysString() + BuildOrderString();
- }
- public virtual string BuildKeyQueryString()
- {
- return QueryKeyString + BuildStrategysString() + BuildOrderString();
- }
- public virtual string BuildOtherQueryString()
- {
- return QueryOtherString + BuildStrategysString() + BuildOrderString();
- }
- }
- }
|