PageRenderTime 22ms CodeModel.GetById 35ms RepoModel.GetById 1ms app.codeStats 0ms

/Ximura Data Persistence/Persistence Managers/SQLDB Based/SQLDBPersistenceManager_ResolveReference.cs

https://github.com/mbmccormick/Ximura
C# | 198 lines | 164 code | 24 blank | 10 comment | 12 complexity | 5d5a84326d910da1a4d6bc35237c661a MD5 | raw file
  1. #region Copyright
  2. // *******************************************************************************
  3. // Copyright (c) 2000-2009 Paul Stancer.
  4. // All rights reserved. This program and the accompanying materials
  5. // are made available under the terms of the Eclipse Public License v1.0
  6. // which accompanies this distribution, and is available at
  7. // http://www.eclipse.org/legal/epl-v10.html
  8. //
  9. // Contributors:
  10. // Paul Stancer - initial implementation
  11. // *******************************************************************************
  12. #endregion
  13. #region using
  14. using System;
  15. using System.ComponentModel;
  16. using System.Collections;
  17. using System.Collections.Generic;
  18. using System.Diagnostics;
  19. using System.IO;
  20. using System.Text;
  21. using System.Data;
  22. using System.Data.Common;
  23. using System.Data.SqlClient;
  24. using System.Reflection;
  25. using System.Transactions;
  26. using System.Data.SqlTypes;
  27. using Ximura;
  28. using Ximura.Data;
  29. using Ximura.Data;
  30. using Ximura.Framework;
  31. using Ximura.Framework;
  32. using CH = Ximura.Common;
  33. using AH = Ximura.AttributeHelper;
  34. #endregion
  35. namespace Ximura.Data
  36. {
  37. public partial class SQLDBPersistenceManager<CONT, DCONT>
  38. {
  39. protected override bool ResolveReference(CDSContext context)
  40. {
  41. string strConn = SQLConnectionResolve(context);
  42. Guid? typeID = context.Request.DataTypeID;
  43. if (!typeID.HasValue)
  44. typeID = context.Request.DataType.GetContentTypeAttributeID();
  45. object vid = null;
  46. object cid = null;
  47. object tid = null;
  48. try
  49. {
  50. using (SqlConnection sqlConn = new SqlConnection(strConn))
  51. {
  52. sqlConn.Open();
  53. SqlCommand sqlCmd = new SqlCommand("EntityResolveReference", sqlConn);
  54. sqlCmd.CommandType = CommandType.StoredProcedure;
  55. sqlCmd.Parameters.Add("@TypeID", SqlDbType.UniqueIdentifier).Value = typeID.Value;
  56. sqlCmd.Parameters.Add("@RefType", SqlDbType.VarChar, 50).Value = context.Request.DataReferenceType;
  57. sqlCmd.Parameters.Add("@RefValue", SqlDbType.NVarChar, 255).Value = context.Request.DataReferenceValue;
  58. SqlParameter paramStatus = new SqlParameter();
  59. paramStatus.ParameterName = "@Status";
  60. paramStatus.SqlDbType = SqlDbType.Int;
  61. paramStatus.IsNullable = true;
  62. paramStatus.Direction = ParameterDirection.InputOutput;
  63. paramStatus.Value = System.DBNull.Value;
  64. sqlCmd.Parameters.Add(paramStatus);
  65. SqlParameter paramSubstatus = new SqlParameter();
  66. paramSubstatus.ParameterName = "@Substatus";
  67. paramSubstatus.SqlDbType = SqlDbType.NVarChar;
  68. paramSubstatus.Size = 100;
  69. paramSubstatus.IsNullable = true;
  70. paramSubstatus.Direction = ParameterDirection.InputOutput;
  71. paramSubstatus.Value = System.DBNull.Value;
  72. sqlCmd.Parameters.Add(paramSubstatus);
  73. SqlParameter paramReturnValue = new SqlParameter();
  74. paramReturnValue.ParameterName = "@Return_Value";
  75. paramReturnValue.SqlDbType = SqlDbType.Int;
  76. paramReturnValue.Direction = ParameterDirection.ReturnValue;
  77. sqlCmd.Parameters.Add(paramReturnValue);
  78. using (SqlDataReader reader = sqlCmd.ExecuteReader())
  79. {
  80. if (reader.HasRows)
  81. {
  82. reader.Read();
  83. vid = reader.GetSqlValue(0);
  84. cid = reader.GetSqlValue(1);
  85. tid = reader.GetSqlValue(2);
  86. }
  87. reader.Close();
  88. }
  89. int response = (int)paramStatus.Value;
  90. if (response == 200)
  91. {
  92. context.Request.DataVersionID = vid == null ? (Guid?)null : new Guid(vid.ToString());
  93. context.Request.DataContentID = cid == null ? (Guid?)null : new Guid(cid.ToString());
  94. context.Request.DataTypeID = tid == null ? (Guid?)null : new Guid(tid.ToString());
  95. }
  96. else
  97. return false;
  98. }
  99. }
  100. catch (NullReferenceException nrefex)
  101. {
  102. context.Response.Status = CH.HTTPCodes.InternalServerError_500;
  103. context.Response.Substatus = nrefex.Message;
  104. }
  105. catch (Exception ex)
  106. {
  107. context.Response.Status = CH.HTTPCodes.InternalServerError_500;
  108. context.Response.Substatus = ex.Message;
  109. }
  110. return true;
  111. }
  112. protected string ResolveReferenceInternal(string strConn,
  113. string refType, string refValue, Guid tid, out Guid? cid, out Guid? vid)
  114. {
  115. cid = null;
  116. vid = null;
  117. try
  118. {
  119. using (SqlConnection sqlConn = new SqlConnection(strConn))
  120. {
  121. sqlConn.Open();
  122. SqlCommand sqlCmd = new SqlCommand("EntityResolveReference", sqlConn);
  123. sqlCmd.CommandType = CommandType.StoredProcedure;
  124. sqlCmd.Parameters.Add("@TypeID", SqlDbType.UniqueIdentifier).Value = tid;
  125. sqlCmd.Parameters.Add("@RefType", SqlDbType.VarChar, 50).Value = refType;
  126. sqlCmd.Parameters.Add("@RefValue", SqlDbType.NVarChar, 255).Value = refValue;
  127. SqlParameter paramStatus = new SqlParameter();
  128. paramStatus.ParameterName = "@Status";
  129. paramStatus.SqlDbType = SqlDbType.Int;
  130. paramStatus.IsNullable = true;
  131. paramStatus.Direction = ParameterDirection.InputOutput;
  132. paramStatus.Value = System.DBNull.Value;
  133. sqlCmd.Parameters.Add(paramStatus);
  134. SqlParameter paramSubstatus = new SqlParameter();
  135. paramSubstatus.ParameterName = "@Substatus";
  136. paramSubstatus.SqlDbType = SqlDbType.NVarChar;
  137. paramSubstatus.Size = 100;
  138. paramSubstatus.IsNullable = true;
  139. paramSubstatus.Direction = ParameterDirection.InputOutput;
  140. paramSubstatus.Value = System.DBNull.Value;
  141. sqlCmd.Parameters.Add(paramSubstatus);
  142. SqlParameter paramReturnValue = new SqlParameter();
  143. paramReturnValue.ParameterName = "@return_value";
  144. paramReturnValue.SqlDbType = SqlDbType.Int;
  145. paramReturnValue.Direction = ParameterDirection.ReturnValue;
  146. sqlCmd.Parameters.Add(paramReturnValue);
  147. object ovid = null;
  148. object ocid = null;
  149. using (SqlDataReader reader = sqlCmd.ExecuteReader())
  150. {
  151. if (reader.HasRows)
  152. {
  153. reader.Read();
  154. ovid = reader.GetSqlValue(0);
  155. ocid = reader.GetSqlValue(1);
  156. }
  157. reader.Close();
  158. }
  159. int response = (int)paramStatus.Value;
  160. if (response == 200)
  161. {
  162. vid = ovid == null ? (Guid?)null : new Guid(ovid.ToString());
  163. cid = ocid == null ? (Guid?)null : new Guid(ocid.ToString());
  164. }
  165. }
  166. }
  167. catch (Exception ex)
  168. {
  169. return CH.HTTPCodes.InternalServerError_500;
  170. }
  171. return CH.HTTPCodes.OK_200;
  172. }
  173. }
  174. }