Ejemplo n.º 1
0
 private bool ReconcileVersionFindConflicts(IFeatureWorkspace pFeatureWorkspace, string strTargetVersion)
 {
     try
     {
         bool         flag = false;
         IVersionEdit edit = pFeatureWorkspace as IVersionEdit;
         edit.CanPost();
         if (edit.Reconcile(strTargetVersion))
         {
             IVersion           startEditingVersion   = edit.StartEditingVersion;
             IVersion           preReconcileVersion   = edit.PreReconcileVersion;
             IVersion           commonAncestorVersion = edit.CommonAncestorVersion;
             IVersion           reconcileVersion      = edit.ReconcileVersion;
             IEnumConflictClass conflictClasses       = edit.ConflictClasses;
             conflictClasses.Reset();
             for (IConflictClass class3 = conflictClasses.Next(); class3 != null; class3 = conflictClasses.Next())
             {
                 IDataset dataset = (IDataset)class3;
                 if (class3.HasConflicts)
                 {
                     flag = true;
                     string   str = dataset.Name + ":";
                     IEnumIDs iDs = class3.UpdateUpdates.IDs;
                     iDs.Reset();
                     int num = iDs.Next();
                     while (num != -1)
                     {
                         str = str + num.ToString() + ";";
                         num = iDs.Next();
                     }
                     iDs = class3.DeleteUpdates.IDs;
                     iDs.Reset();
                     num = iDs.Next();
                     while (num != -1)
                     {
                         str = str + num.ToString() + ";";
                         num = iDs.Next();
                     }
                     iDs = class3.UpdateDeletes.IDs;
                     iDs.Reset();
                     for (num = iDs.Next(); num != -1; num = iDs.Next())
                     {
                         str = str + num.ToString() + ";";
                     }
                     MessageBox.Show("发现冲突," + str, "版本编辑", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                 }
                 else
                 {
                     MessageBox.Show(dataset.Name + " Does Not Have Conflicts", "版本编辑", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                 }
             }
         }
         return(flag);
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "ShapeEdit.Editor", "ReconcileVersionFindConflicts", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(false);
     }
 }
Ejemplo n.º 2
0
        private bool method_8(IVersionEdit iversionEdit_0, string string_0, bool bool_2, bool bool_3)
        {
            bool flag = true;

            try
            {
                if (iversionEdit_0.Reconcile(string_0))
                {
                    this.method_10(iversionEdit_0 as IWorkspaceEdit, false);
                    flag = false;
                }
                else if (iversionEdit_0.CanPost() && bool_2)
                {
                    iversionEdit_0.Post(string_0);
                    this.method_10(iversionEdit_0 as IWorkspaceEdit, true);
                    if (!bool_3)
                    {
                    }
                }
                else
                {
                    this.method_10(iversionEdit_0 as IWorkspaceEdit, true);
                }
                if (!flag)
                {
                }
            }
            catch
            {
                this.method_10(iversionEdit_0 as IWorkspaceEdit, false);
                flag = false;
            }
            return(flag);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 提交当前版本
        /// </summary>
        /// <param name="pWorkspace">工作区</param>
        /// <param name="VersionName">父版本名称</param>
        /// <returns>是否提交成功(经过仲裁)</returns>
        public static bool PostVersion(IWorkspace pWorkspace, string VersionName)
        {
            IVersionEdit pVersionEdit = (IVersionEdit)pWorkspace;

            pVersionEdit.Reconcile(VersionName);
            pVersionEdit.Post(VersionName);
            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 提交当前版本(经过仲裁)
        /// </summary>
        /// <param name="pWorkspace">工作区</param>
        /// <param name="sVersion">父版本名称</param>
        public static void PostVerison(IWorkspace pWorkspace, string sVersion)
        {
            IVersion pVersion = (IVersion)pWorkspace;

            if (!IsLocked(pVersion))
            {
                throw new Exception("不能提交数据到父版本,其它用户正在编辑");
            }

            IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pVersion;

            if (!pWorkspaceEdit.IsBeingEdited())
            {
                throw new Exception("请开始编辑会话");
            }

            IVersionEdit pVersionEdit = (IVersionEdit)pVersion;
            IVersionInfo pVersionInfo = pVersion.VersionInfo;

            try
            {
                string sParentName = pVersionInfo.VersionName;
                bool   bConflicts  = pVersionEdit.Reconcile(sParentName);
                if (bConflicts)
                {
                    pWorkspaceEdit.StopEditing(true);
                }
                else
                {
                    if (pVersionEdit.CanPost())
                    {
                        pVersionEdit.Post(sParentName);
                        pWorkspaceEdit.StopEditing(true);
                    }
                    else
                    {
                        pWorkspaceEdit.StopEditing(true); // false
                        //MessageBox.Show("不能提交数据到父版本[" + sParentName + "]");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (pWorkspaceEdit.IsBeingEdited())
                {
                    pWorkspaceEdit.StopEditing(true); // false
                }
                pWorkspaceEdit.StartEditing(true);
            }
        }
Ejemplo n.º 5
0
        private bool method_4(IVersionEdit iversionEdit_0, string string_0, bool bool_0, bool bool_1)
        {
            bool     flag    = true;
            IVersion version = iversionEdit_0 as IVersion;

            this.method_10(version, 0);
            try
            {
                if (this.method_11(iversionEdit_0 as IVersion))
                {
                    flag = false;
                }
                else
                {
                    this.method_5(iversionEdit_0 as IWorkspaceEdit);
                    this.txtMessage.Text = "正在将版本 " + version.VersionName + " 合并到版本 " + string_0;
                    if (iversionEdit_0.Reconcile(string_0))
                    {
                        this.txtMessage.Text = "在合并版本 " + version.VersionName + " 到版本 " + string_0 + " 时发现冲突";
                        this.method_6(iversionEdit_0 as IWorkspaceEdit, false);
                        flag = false;
                    }
                    else if (iversionEdit_0.CanPost() && bool_0)
                    {
                        this.txtMessage.Text = "合并 " + version.VersionName;
                        iversionEdit_0.Post(string_0);
                        this.method_6(iversionEdit_0 as IWorkspaceEdit, true);
                        if (bool_1)
                        {
                            this.method_7(iversionEdit_0 as IVersion);
                        }
                    }
                    else
                    {
                        this.method_6(iversionEdit_0 as IWorkspaceEdit, true);
                    }
                }
                if (flag)
                {
                    this.method_10(version, 2);
                    return(flag);
                }
                this.method_10(version, 1);
            }
            catch
            {
                this.method_6(iversionEdit_0 as IWorkspaceEdit, false);
                flag = false;
            }
            return(flag);
        }
Ejemplo n.º 6
0
 private void method_0()
 {
     if (this.iconflictClass_0 != null)
     {
         IVersionEdit      edit                = (this.iconflictClass_0 as IDataset).Workspace as IVersionEdit;
         IFeatureWorkspace workspace           = edit as IFeatureWorkspace;
         IFeatureWorkspace reconcileVersion    = edit.ReconcileVersion as IFeatureWorkspace;
         IFeatureWorkspace preReconcileVersion = edit.PreReconcileVersion as IFeatureWorkspace;
         IFeatureWorkspace startEditingVersion = edit.StartEditingVersion as IFeatureWorkspace;
         workspace.OpenTable((this.iconflictClass_0 as IDataset).Name);
         ITable table  = reconcileVersion.OpenTable((this.iconflictClass_0 as IDataset).Name);
         ITable table2 = preReconcileVersion.OpenTable((this.iconflictClass_0 as IDataset).Name);
         ITable table3 = startEditingVersion.OpenTable((this.iconflictClass_0 as IDataset).Name);
         try
         {
             this.irow_0 = (this.iconflictClass_0 as ITable).GetRow(this.int_0);
         }
         catch
         {
         }
         try
         {
             this.irow_1 = table.GetRow(this.int_0);
         }
         catch
         {
         }
         try
         {
             this.irow_2 = table2.GetRow(this.int_0);
         }
         catch
         {
         }
         try
         {
             this.irow_3 = table3.GetRow(this.int_0);
         }
         catch
         {
         }
     }
 }
Ejemplo n.º 7
0
        private void method_0()
        {
            TreeNode     node = new TreeNode("冲突");
            IVersionEdit edit = this.ifeatureWorkspace_0 as IVersionEdit;

            if (edit != null)
            {
                IEnumConflictClass conflictClasses = edit.ConflictClasses;
                conflictClasses.Reset();
                for (IConflictClass class3 = conflictClasses.Next(); class3 != null; class3 = conflictClasses.Next())
                {
                    IDataset dataset = class3 as IDataset;
                    TreeNode node2   = new TreeNode(dataset.Name);
                    node.Nodes.Add(node2);
                    node2.Tag = class3;
                    this.method_1(node2, class3);
                }
                this.treeView1.Nodes.Add(node);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 仲裁版本
        /// </summary>
        /// <param name="pWorkspace">工作区</param>
        /// <param name="VersionName">版本名称</param>
        /// <returns>是否(产生冲突)经过仲裁</returns>
        public static bool ReconcileVersion(IWorkspace pWorkspace, string VersionName)
        {
            IVersionEdit pVersionEdit = (IVersionEdit)pWorkspace;

            return(pVersionEdit.Reconcile(VersionName));
        }