亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hibernateworkflowstore.cs

?? 基于DotNet的工作流引擎實(shí)現(xiàn)
?? CS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
			if (expression.Nested)
			{
				expr = buildNested((NestedExpression) expression);
			}
			else
			{
				expr = queryComparison((FieldExpression) expression);
			}
			
			//get results and send them back
			ICriteria criteria = session.CreateCriteria(entityClass);
			criteria.Add(expr);
			
			try
			{
				ISet results = new HashedSet();
				
				foreach(Object next in results){
					Object item;
					
					if (next is HibernateStep)
					{
						HibernateStep step = (HibernateStep) next;
						item = step.EntryId;
					}
					else
					{
						IWorkflowEntry entry = (IWorkflowEntry) next;
						item = entry.Id;
					}
					
					results.Add(item);
				}
				
				return new ArrayList(results);
			}
			catch (HibernateException e)
			{
				throw new StoreException("Error executing query " + expression, e);
			}
		}
		
		public virtual IList Query(WorkflowQuery query)
		{
			Type entityClass;
			
			int qtype = query.Type;
			
			if (qtype == 0)
			{
				// then not set, so look in sub queries
				
				if (query.Left != null)
				{
					qtype = query.Left.Type;
				}
			}
			
			if (qtype == WorkflowQuery.CURRENT)
			{
				entityClass = typeof(HibernateCurrentStep);
			}
			else
			{
				entityClass = typeof(HibernateHistoryStep);
			}
			
			ICriteria criteria = session.CreateCriteria(entityClass);
			ICriterion expression = buildExpression(query);
			criteria.Add(expression);
			
			//get results and send them back
			try
			{
				ISet results = new HashedSet();
				IEnumerator iter = criteria.List().GetEnumerator();
				
				while (iter.MoveNext())
				{
					HibernateStep step = (HibernateStep) iter.Current;
					results.Add(step.EntryId);
				}
				
				return new ArrayList(results);
			}
			catch (HibernateException e)
			{
				throw new StoreException("Error executing query " + expression, e);
			}
		}
		
		/// <summary> Returns an expression generated from this query
		/// </summary>
		private ICriterion getExpression(WorkflowQuery query)
		{
			int operator_Renamed = query.Operator;
			
			switch (operator_Renamed)
			{
				
				case WorkflowQuery.EQUALS: 
					return Expression.Eq(getFieldName(query.Field), query.Value);
				
				
				case WorkflowQuery.NOT_EQUALS: 
					return Expression.Not(Expression.Like(getFieldName(query.Field), query.Value));
				
				
				case WorkflowQuery.GT: 
					return Expression.Gt(getFieldName(query.Field), query.Value);
				
				
				case WorkflowQuery.LT: 
					return Expression.Lt(getFieldName(query.Field), query.Value);
				
				
				default: 
					return Expression.Eq(getFieldName(query.Field), query.Value);
				
			}
		}
		
		/// <summary> returns the correct name of the field given or "1" if none is found
		/// which matches the input.
		/// </summary>
		/// <param name="field">
		/// </param>
		/// <returns>
		/// 
		/// </returns>
		private String getFieldName(int field)
		{
			switch (field)
			{
				
				case FieldExpression.ACTION: 
					return "actionId";
				
				
				case FieldExpression.CALLER: 
					return "caller";
				
				
				case FieldExpression.FINISH_DATE: 
					return "finishDate";
				
				
				case FieldExpression.OWNER: 
					return "owner";
				
				
				case FieldExpression.START_DATE: 
					return "startDate";
				
				
				case FieldExpression.STEP: 
					return "stepId";
				
				
				case FieldExpression.STATUS: 
					return "status";
				
				
				case FieldExpression.STATE: 
					return "state";
				
				
				case FieldExpression.NAME: 
					return "workflowName";
				
				
				case FieldExpression.DUE_DATE: 
					return "dueDate";
				
				
				default: 
					return "1";
				
			}
		}
		
		private Type getQueryClass(Query.Expression expr, IList classesCache)
		{
			if (classesCache == null)
			{
				classesCache = new ArrayList();
			}
			
			if (expr is FieldExpression)
			{
				FieldExpression fieldExpression = (FieldExpression) expr;
				
				switch (fieldExpression.Context)
				{
					
					case FieldExpression.CURRENT_STEPS: 
						classesCache.Add(typeof(HibernateCurrentStep));
						
						break;
					
					
					case FieldExpression.HISTORY_STEPS: 
						classesCache.Add(typeof(HibernateHistoryStep));
						
						break;
					
					
					case FieldExpression.ENTRY: 
						classesCache.Add(typeof(HibernateWorkflowEntry));
						
						break;
					
					
					default: 
						throw new QueryNotSupportedException("Query for unsupported context " + fieldExpression.Context);
					
				}
			}
			else
			{
				NestedExpression nestedExpression = (NestedExpression) expr;
				
				for (int i = 0; i < nestedExpression.ExpressionCount; i++)
				{
					Query.Expression expression = nestedExpression.getExpression(i);
					
					if (expression.Nested)
					{
						classesCache.Add(getQueryClass(nestedExpression.getExpression(i), classesCache));
					}
					else
					{
						classesCache.Add(getQueryClass(expression, classesCache));
					}
				}
			}
			
			if (classesCache.Count > 1)
			{
				throw new QueryNotSupportedException("Store does not support nested queries of different types (types found:" + classesCache + ")");
			}
			
			return (Type) classesCache[0];
		}
		
		/// <summary>  Recursive method for building Expressions using Query objects.
		/// </summary>
		private ICriterion buildExpression(WorkflowQuery query)
		{
			if (query.Left == null)
			{
				if (query.Right == null)
				{
					return getExpression(query); //leaf node
				}
				else
				{
					throw new StoreException("Invalid WorkflowQuery object.  QueryLeft is null but QueryRight is not.");
				}
			}
			else
			{
				if (query.Right == null)
				{
					throw new StoreException("Invalid WorkflowQuery object.  QueryLeft is not null but QueryRight is.");
				}
				
				int operator_Renamed = query.Operator;
				WorkflowQuery left = query.Left;
				WorkflowQuery right = query.Right;
				
				switch (operator_Renamed)
				{
					
					case WorkflowQuery.AND: 
						return Expression.And(buildExpression(left), buildExpression(right));
					
					
					case WorkflowQuery.OR: 
						return Expression.Or(buildExpression(left), buildExpression(right));
					
					
					case WorkflowQuery.XOR: 
						throw new StoreException("XOR Operator in Queries not supported by " + this.GetType().FullName);
					
					
					default: 
						throw new StoreException("Operator '" + operator_Renamed + "' is not supported by " + this.GetType().FullName);
					
				}
			}
		}
		
		private ICriterion buildNested(NestedExpression nestedExpression)
		{
			ICriterion full = null;
			
			for (int i = 0; i < nestedExpression.ExpressionCount; i++)
			{
				ICriterion expr;
				Query.Expression expression = nestedExpression.getExpression(i);
				
				if (expression.Nested)
				{
					expr = buildNested((NestedExpression) nestedExpression.getExpression(i));
				}
				else
				{
					FieldExpression sub = (FieldExpression) nestedExpression.getExpression(i);
					expr = queryComparison(sub);
					
					if (sub.Negate)
					{
						expr = Expression.Not(expr);
					}
				}
				
				if (full == null)
				{
					full = expr;
				}
				else
				{
					switch (nestedExpression.ExpressionOperator)
					{
						
						case NestedExpression.AND: 
							full = Expression.And(full, expr);
							
							break;
						
						
						case NestedExpression.OR: 
							full = Expression.Or(full, expr);
							break;
						}
				}
			}
			
			return full;
		}
		
		private ICriterion queryComparison(FieldExpression expression)
		{
			int operator_Renamed = expression.Operator;
			
			switch (operator_Renamed)
			{
				
				case FieldExpression.EQUALS: 
					return Expression.Eq(getFieldName(expression.Field), expression.Value);
				
				
				case FieldExpression.NOT_EQUALS: 
					return Expression.Not(Expression.Like(getFieldName(expression.Field), expression.Value));
				
				
				case FieldExpression.GT: 
					return Expression.Gt(getFieldName(expression.Field), expression.Value);
				
				
				case FieldExpression.LT: 
					return Expression.Lt(getFieldName(expression.Field), expression.Value);
				
				
				default: 
					return Expression.Eq(getFieldName(expression.Field), expression.Value);
				
			}
		}
		static HibernateWorkflowStore()
		{
			log = LogManager.GetLogger(typeof(HibernateWorkflowStore));
		}
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合激情| 欧美一区二区三级| 欧美日韩夫妻久久| 国产日韩影视精品| 男男视频亚洲欧美| 91亚洲精品一区二区乱码| 精品人在线二区三区| 一区二区三区四区中文字幕| 国产在线不卡一卡二卡三卡四卡| 日本久久一区二区三区| 久久日韩粉嫩一区二区三区| 日韩高清电影一区| 欧洲精品视频在线观看| 久久久久高清精品| 国产一区二区在线视频| 欧美一区二区三区喷汁尤物| 亚洲自拍偷拍麻豆| 9i看片成人免费高清| 精品999在线播放| 亚洲aaa精品| 欧美日韩在线三级| 亚洲精品视频免费观看| 91丨porny丨中文| 国产精品不卡在线| 成人听书哪个软件好| 国产视频一区二区在线| 国产乱人伦精品一区二区在线观看 | 色综合色综合色综合| 国产女人水真多18毛片18精品视频| 麻豆精品在线观看| 精品少妇一区二区| 麻豆精品新av中文字幕| 日韩亚洲欧美一区| 麻豆国产欧美日韩综合精品二区 | 国产精品久久久久久亚洲伦| 国产一区二区不卡在线| 久久久久久毛片| 国产乱子伦一区二区三区国色天香| 日韩欧美亚洲一区二区| 麻豆精品新av中文字幕| 欧美成人精品3d动漫h| 六月丁香婷婷色狠狠久久| 日韩欧美综合一区| 国产精品综合一区二区三区| 国产午夜精品理论片a级大结局| 国产成人免费视频| 国产精品久久久久久妇女6080| av在线这里只有精品| 亚洲日本成人在线观看| 欧美伊人久久久久久久久影院 | 日韩电影在线看| 欧美电视剧在线观看完整版| 激情成人综合网| 国产精品无人区| 色吊一区二区三区| 日韩高清一区二区| 久久精品亚洲精品国产欧美| 91在线国内视频| 日韩福利电影在线| 国产日韩精品一区| 色综合亚洲欧洲| 青青草视频一区| 亚洲国产高清在线| 欧美日韩在线精品一区二区三区激情| 日韩黄色片在线观看| 久久精品欧美一区二区三区麻豆| 91蜜桃视频在线| 蜜臀av亚洲一区中文字幕| 国产亚洲精品超碰| 欧美视频中文一区二区三区在线观看 | 日本精品裸体写真集在线观看| 日韩一区精品字幕| 国产视频911| 欧美精品一二三四| 成人av在线电影| 日韩av一级电影| 亚洲人成电影网站色mp4| 日韩午夜在线播放| 日本道精品一区二区三区| 黄色成人免费在线| 亚洲精品高清在线| 国产午夜久久久久| 欧美二区三区91| 91麻豆自制传媒国产之光| 久久福利视频一区二区| 亚洲精品欧美在线| 国产日韩欧美精品一区| 欧美一区二区在线看| 99视频精品免费视频| 久久激五月天综合精品| 亚洲国产一区二区在线播放| 欧美激情自拍偷拍| 精品日本一线二线三线不卡| 欧美日韩亚洲高清一区二区| 99久久精品国产网站| 国产又粗又猛又爽又黄91精品| 亚洲chinese男男1069| 亚洲乱码中文字幕| 国产精品久久综合| 久久精品亚洲精品国产欧美 | 丰满亚洲少妇av| 久久精品国内一区二区三区| 亚洲一区二区欧美激情| 国产精品短视频| 欧美国产精品一区二区三区| 精品国产sm最大网站免费看| 欧美人与性动xxxx| 欧美三级日韩三级国产三级| 91老司机福利 在线| jvid福利写真一区二区三区| 国产一区二区三区免费观看| 九色综合狠狠综合久久| 日本不卡高清视频| 青青青伊人色综合久久| 日韩高清中文字幕一区| 丝袜国产日韩另类美女| 视频在线在亚洲| 日韩中文字幕区一区有砖一区| 亚洲激情校园春色| 亚洲一区二区在线观看视频| 亚洲午夜激情av| 亚洲香肠在线观看| 亚洲国产精品久久久男人的天堂| 亚洲成人免费观看| 天天射综合影视| 美女网站一区二区| 麻豆91在线播放| 国产精品一区二区男女羞羞无遮挡| 国产美女视频一区| 成人免费高清视频| 91在线精品一区二区| 91九色最新地址| 欧美丝袜第三区| 欧美电影免费观看高清完整版在线| 欧美成人vps| 欧美国产精品一区| 一区二区欧美国产| 婷婷亚洲久悠悠色悠在线播放 | 香蕉成人啪国产精品视频综合网| 亚洲制服丝袜一区| 日韩和欧美一区二区三区| 美女视频黄a大片欧美| 国产成人一级电影| 在线观看视频一区| 日韩午夜电影av| 国产精品乱码妇女bbbb| 亚洲一区二区三区激情| 久久精品国产**网站演员| 国产一区二区三区免费在线观看| 成人高清免费在线播放| 欧美少妇xxx| 精品精品国产高清a毛片牛牛| 欧美高清在线一区二区| 午夜视黄欧洲亚洲| 国v精品久久久网| 欧美浪妇xxxx高跟鞋交| 久久精品视频免费| 一区二区三区四区高清精品免费观看| 三级在线观看一区二区| 国产白丝精品91爽爽久久| 欧美偷拍一区二区| 国产欧美视频在线观看| 亚洲成年人网站在线观看| 丁香婷婷深情五月亚洲| 欧美高清视频在线高清观看mv色露露十八| 精品国产伦一区二区三区观看体验| 亚洲日本丝袜连裤袜办公室| 精品在线播放免费| 欧美在线观看视频一区二区| 日本一区二区综合亚洲| 免费在线观看日韩欧美| 在线免费观看日韩欧美| 中文字幕免费不卡在线| 美脚の诱脚舐め脚责91 | 欧美美女黄视频| 国产精品理论片| 国产一区欧美二区| 51精品秘密在线观看| 亚洲免费视频成人| 成人av网址在线观看| 久久青草国产手机看片福利盒子 | 欧美日韩午夜影院| 亚洲精品视频在线看| 成人性色生活片| 久久麻豆一区二区| 免费xxxx性欧美18vr| 欧美午夜精品一区二区蜜桃| 亚洲欧洲三级电影| 成人美女视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 香蕉久久一区二区不卡无毒影院| 色播五月激情综合网| 亚洲婷婷综合久久一本伊一区| 国产不卡视频一区二区三区| 久久久久久毛片| 韩国一区二区三区| 欧美xxxxxxxx| 久久99热99| 欧美xxxx在线观看| 国产一区视频在线看|