FormCreateVersion.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using ESRI.ArcGIS.Geodatabase;
  8. using Tofly.Data.General;
  9. using Tofly.GIS.ArcGIS.Util;
  10. namespace AutoCreateVersion.Win
  11. {
  12. public partial class FormCreateVersion : Form
  13. {
  14. public FormCreateVersion()
  15. {
  16. InitializeComponent();
  17. this.tsbtnCreateVersion.Enabled = false;
  18. }
  19. private void tsbtnLoadVersions_Click(object sender, EventArgs e)
  20. {
  21. try
  22. {
  23. string __strServer = ConfigurationManager.AppSettings["LicServer"];
  24. string __strDBUser = ConfigurationManager.AppSettings["DBUser"];
  25. string __strPassword = ConfigurationManager.AppSettings["Password"];
  26. SpatialDbHelper.InitHelper(WorkspaceType.Oracle, __strServer, __strDBUser, __strPassword);
  27. DataTable __dtUser = new DataTable();
  28. string __strSQL = "select t.username,t.realname,t.sde_version from tf_jurisdiction_user t where instr(trim(t.sde_version), '.')>1 order by t.sde_version";
  29. SpatialDbHelper.GetTable(__strSQL, ref __dtUser);
  30. this.dgridVersions.DataSource = __dtUser;
  31. foreach(DataGridViewColumn __dgvCol in this.dgridVersions.Columns)
  32. {
  33. switch (__dgvCol.Name.ToLower())
  34. {
  35. case "username":
  36. __dgvCol.HeaderText = "用户名";
  37. break;
  38. case "realname":
  39. __dgvCol.HeaderText = "用户实名";
  40. break;
  41. case "sde_version":
  42. __dgvCol.HeaderText = "用户版本";
  43. break;
  44. }
  45. __dgvCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
  46. __dgvCol.SortMode = DataGridViewColumnSortMode.NotSortable;
  47. //__dgvCol.Width = 150;
  48. __dgvCol.Resizable = DataGridViewTriState.True;
  49. }
  50. //this.dgridVersions.AllowUserToResizeColumns = true;
  51. this.tsbtnCreateVersion.Enabled = (this.dgridVersions.Rows.Count > 0);
  52. }
  53. catch (System.Exception ex)
  54. {
  55. MessageBox.Show("加载失败: " + ex.Message, "加载版本信息");
  56. }
  57. }
  58. private void tsbtnCreateVersion_Click(object sender, EventArgs e)
  59. {
  60. Tofly.CoreUI.Win.Form.Forms.FormProgress __frmProgress = null;
  61. try
  62. {
  63. __frmProgress = new Tofly.CoreUI.Win.Form.Forms.FormProgress(Tofly.CoreUI.Message.tfProgressType.ProgressProcess, true)
  64. {
  65. Text = "自动创建版本",
  66. StartPosition = FormStartPosition.CenterScreen
  67. };
  68. __frmProgress.Show(this);
  69. Application.DoEvents();
  70. string __strServer = string.Format("sde:oracle11g:{0}", ConfigurationManager.AppSettings["SdeServer"]);
  71. string __strSDE_PWD = ConfigurationManager.AppSettings["SDE_Password"];
  72. GeoDataSourceHelper __geoDSHelper = new GeoDataSourceHelper();
  73. List<string> __lstExistVersion = new List<string>();
  74. #region 获取已有版本集合
  75. ESRI.ArcGIS.Geodatabase.IWorkspace __wsProcessing = __geoDSHelper.ConnectToTransactionalVersion("", __strServer, "sde", __strSDE_PWD, "");
  76. IVersionedWorkspace4 __vwsProcessing = __wsProcessing as IVersionedWorkspace4;
  77. IEnumVersionInfo2 __enumVersionInfo = __vwsProcessing.Versions as IEnumVersionInfo2;
  78. IVersionInfo2 __vinfo = null;
  79. __enumVersionInfo.Reset();
  80. while ((__vinfo = __enumVersionInfo.Next() as IVersionInfo2) != null)
  81. {
  82. __lstExistVersion.Add(__vinfo.VersionName.ToLower());
  83. }
  84. System.Runtime.InteropServices.Marshal.ReleaseComObject(__enumVersionInfo);
  85. __enumVersionInfo = null;
  86. #endregion
  87. List<string> __lstCreateVersion = new List<string>();
  88. string __strDBUserPrevious = "", __strDBUserCurrent = "";
  89. IVersion __vDefaultProcessing = null, __vNew = null;
  90. DataTable __dtVersions = this.dgridVersions.DataSource as DataTable;
  91. string __strVersionCurrent = "";
  92. for (int __iRow = 0; __iRow < __dtVersions.Rows.Count; __iRow++)
  93. {
  94. __strVersionCurrent = __dtVersions.Rows[__iRow]["sde_version"].ToString().ToLower();
  95. if (__lstExistVersion.Contains(__strVersionCurrent) == false)
  96. {
  97. __frmProgress.UpdateTitle(string.Format("自动创建版本-正在创建版本({0})", __strVersionCurrent));
  98. Application.DoEvents();
  99. __strDBUserCurrent = __strVersionCurrent.Substring(0, __strVersionCurrent.IndexOf("."));
  100. __strVersionCurrent = __strVersionCurrent.Substring(__strVersionCurrent.IndexOf(".") + 1);
  101. if (__strDBUserPrevious != __strDBUserCurrent) //获取对应数据库用户的工作空间
  102. {
  103. ESRI.ArcGIS.Geodatabase.IWorkspace __wsProcessing2 = __geoDSHelper.ConnectToTransactionalVersion("", __strServer, __strDBUserCurrent, __strDBUserCurrent, "");
  104. IVersionedWorkspace4 __vwsProcessing2 = __wsProcessing2 as IVersionedWorkspace4; //获取当前用户连接下的Default版本对象
  105. __vDefaultProcessing = __vwsProcessing2.DefaultVersion;
  106. __strDBUserPrevious = __strDBUserCurrent;
  107. }
  108. __vNew = __vDefaultProcessing.CreateVersion(__strVersionCurrent);
  109. __vNew.Access = esriVersionAccess.esriVersionAccessPublic;
  110. __vNew.Description = __dtVersions.Rows[__iRow]["realname"].ToString();
  111. __lstCreateVersion.Add(__dtVersions.Rows[__iRow]["sde_version"].ToString());
  112. }
  113. }
  114. for (int __iRow = 0; __iRow < this.dgridVersions.Rows.Count; __iRow++)
  115. {
  116. if (__lstCreateVersion.Contains(this.dgridVersions.Rows[__iRow].Cells["sde_version"].Value.ToString()))
  117. {
  118. this.dgridVersions.Rows[__iRow].DefaultCellStyle.BackColor = Color.LawnGreen;
  119. }
  120. }
  121. MessageBox.Show("完成用户版本的创建.", "创建版本");
  122. }
  123. catch (System.Exception ex)
  124. {
  125. Tofly.CoreUI.Message.WaitManager.Close();
  126. MessageBox.Show("创建失败: " + ex.Message, "创建版本");
  127. }
  128. finally
  129. {
  130. if (__frmProgress != null)
  131. {
  132. __frmProgress.Dispose();
  133. __frmProgress = null;
  134. }
  135. }
  136. }
  137. private void tsbtnExit_Click(object sender, EventArgs e)
  138. {
  139. this.Close();
  140. }
  141. private void dgridVersions_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
  142. {
  143. try
  144. {
  145. if (sender == null)
  146. {
  147. return;
  148. }
  149. DataGridView __dgvSender = sender as DataGridView;
  150. Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, __dgvSender.RowHeadersWidth - 4, e.RowBounds.Height);
  151. TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), __dgvSender.RowHeadersDefaultCellStyle.Font, rectangle, __dgvSender.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
  152. }
  153. catch { }
  154. }
  155. }
  156. }