/// <summary> /// Constructs DisposeILBOEx /// </summary> /// <returns>CodeMemberMethod</returns> private CodeMemberMethod DisposeILBOEx() { CodeMemberMethod DisposeILBOEx = null; CodeMethodInvokeExpression MethodInvokation = null; try { DisposeILBOEx = new CodeMemberMethod { Name = "DisposeILBOEx", Attributes = MemberAttributes.Public | MemberAttributes.Override }; //method parameters DisposeILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(System.String)), "sILBOCode")); DisposeILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(long)), "lILBOIndex")); //method summary AddMethodSummary(DisposeILBOEx, "Disposes the Object Handle of the ILBO"); CodeTryCatchFinallyStatement TryBlock = CodeDomHelper.AddTryBlock(DisposeILBOEx); TryBlock.TryStatements.Add(AddTrace(DisposeILBOEx, TraceSeverity.Info)); //switch case TryBlock.TryStatements.Add(SnippetStatement("switch(sILBOCode)")); TryBlock.TryStatements.Add(SnippetStatement("{")); //for each ilbo foreach (ILBO ilbo in this._activity.ILBOs) { string mILBOName = string.Format("m_o{0}", ilbo.Code); TryBlock.TryStatements.Add(SnippetStatement(string.Format("case \"{0}\":", ilbo.Code))); CodeConditionStatement ILBOIndexCheck = new CodeConditionStatement(new CodeBinaryOperatorExpression(ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name), CodeBinaryOperatorType.GreaterThan, PrimitiveExpression(0))); //ILBOIndexCheck.TrueStatements.Add( MethodInvocationExp( CastExpression(ilbo.Name.ToLowerInvariant(), ArrayIndexerExpression(string.Format("{0}_Cyclic", mILBOName), BinaryOpertorExpression(ArgumentReferenceExp("lILBOIndex"), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)))),"Clear")); MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "Remove"); AddParameters(MethodInvokation, new Object[] { new CodeBinaryOperatorExpression(ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)) }); ILBOIndexCheck.TrueStatements.Add(MethodInvokation); MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "Clear"); ILBOIndexCheck.FalseStatements.Add(MethodInvokation); TryBlock.TryStatements.Add(ILBOIndexCheck); TryBlock.TryStatements.Add(SnippetExpression("break")); } //default case TryBlock.TryStatements.Add(SnippetStatement(string.Format("default:"))); MethodInvokation = MethodInvocationExp(BaseReferenceExp(), DisposeILBOEx.Name); AddParameters(MethodInvokation, new Object[] { ArgumentReferenceExp(DisposeILBOEx.Parameters[0].Name), ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name) }); TryBlock.TryStatements.Add(MethodInvokation); TryBlock.TryStatements.Add(SnippetExpression("break")); TryBlock.TryStatements.Add(SnippetStatement("}//ENDSWITCH")); //close braces for switch case CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock); catchBlock.Statements.Add(FillMessageObject(DisposeILBOEx, SnippetExpression("string.Format(\"activity : DisposeILBOEx(sILBOCode=\\\"{0}\\\")\",sILBOCode)"))); ThrowException(catchBlock); } catch (Exception ex) { throw new Exception(string.Format("DiposeILBOEx->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message)); } return(DisposeILBOEx); }
/// <summary> /// Constructs DisposeILBO method /// </summary> /// <returns>CodeMemberMethod</returns> private CodeMemberMethod DisposeILBO() { CodeMemberMethod DisposeILBO = null; CodeMethodInvokeExpression MethodInvokation = null; try { DisposeILBO = new CodeMemberMethod { Name = "DisposeILBO", Attributes = MemberAttributes.Public | MemberAttributes.Override }; //method parameters DisposeILBO.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sILBOCode")); //method summary AddMethodSummary(DisposeILBO, "Disposes the Object Handle of the ILBO"); //try block CodeTryCatchFinallyStatement TryBlock = CodeDomHelper.AddTryBlock(DisposeILBO); TryBlock.TryStatements.Add(AddTrace(DisposeILBO, TraceSeverity.Info)); //switch case TryBlock.TryStatements.Add(SnippetStatement("switch(sILBOCode)")); TryBlock.TryStatements.Add(SnippetStatement("{")); //case for each ilbo foreach (ILBO ilbo in this._activity.ILBOs) { string mILBOName = string.Format("m_o{0}", ilbo.Code); TryBlock.TryStatements.Add(SnippetStatement(string.Format("case \"{0}\":", ilbo.Code))); CodeConditionStatement ILBONullCheck = new CodeConditionStatement(new CodeBinaryOperatorExpression(TypeReferenceExp(string.Format("{0}", mILBOName)), CodeBinaryOperatorType.IdentityInequality, SnippetExpression("null"))); //ILBONullCheck.TrueStatements.Add(MethodInvocationExp(TypeReferenceExp(mILBOName), "Clear")); ILBONullCheck.TrueStatements.Add(AssignVariable(mILBOName, SnippetExpression("null"))); AddExpressionToTryBlock(TryBlock, ILBONullCheck); TryBlock.TryStatements.Add(SnippetExpression("break")); } //default case TryBlock.TryStatements.Add(SnippetStatement(string.Format("default:"))); MethodInvokation = MethodInvocationExp(BaseReferenceExp(), "DisposeILBO"); AddParameters(MethodInvokation, new Object[] { VariableReferenceExp("sILBOCode") }); TryBlock.TryStatements.Add(MethodInvokation); TryBlock.TryStatements.Add(SnippetExpression("break")); TryBlock.TryStatements.Add(SnippetStatement("}//ENDSWITCH"));//close braces for switch case CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock); catchBlock.Statements.Add(FillMessageObject(DisposeILBO, SnippetExpression("string.Format(\"activity : DisposeILBO(sILBOCode=\\\"{0}\\\")\",sILBOCode)"))); CodeDomHelper.ThrowException(catchBlock); } catch (Exception ex) { throw new Exception(string.Format("DisposeILBO->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message)); } return(DisposeILBO); }