コード例 #1
0
ファイル: EditLinkForm.cs プロジェクト: Ne4to/DomainCommonSE
        public EditLinkForm(DomainObjectInquiry inquiry, DomainLinkConfig link = null)
        {
            InitializeComponent();

            m_inquiry = inquiry;
            m_link = link;

            FillObjects();

            if (link != null)
            {
                txtLinkCode.Enabled = false;
                txtLinkTableName.Enabled = false;

                rgLeftRelation.Enabled = false;
                rgRightRelation.Enabled = false;

                txtLeftIdField.Enabled = false;
                txtRightIdField.Enabled = false;

                gridLeftObject.Enabled = false;
                gridRightObject.Enabled = false;

                txtLinkCode.Text = link.Code;
                txtLinkTableName.Text = link.LinkTable;

                rgLeftRelation.SelectedIndex = link.LeftRelation == eRelation.One ? 0 : 1;
                rgRightRelation.SelectedIndex = link.RightRelation == eRelation.One ? 0 : 1;

                txtLeftIdField.Text = link.LeftObjectIdField;
                txtRightIdField.Text = link.RightObjectIdField;

                gridLeftObjectCodeColumn.View.ActiveFilterString = String.Format("[Code] LIKE '{0}'", link.LeftObject.Code);
                gridRightObjectCodeColumn.View.ActiveFilterString = String.Format("[Code] LIKE '{0}'", link.RightObject.Code);

                cbIsLeftToRight.Checked = link.IsLeftToRightActive;
                cbIsRightToLeft.Checked = link.IsRightToLeftActive;

                txtLeftCollectionName.Text = link.LeftCollectionName;
                txtRightCollectionName.Text = link.RightCollectionName;

                txtLeftToRightDescription.Text = link.LeftToRightDescription;
                txtRightToLeftDescription.Text = link.RightToLeftDescription;
            }
            else
            {
                rgLeftRelation.SelectedIndex = 0;
                rgRightRelation.SelectedIndex = 1;
            }

            EnableControlByRelation();
        }
コード例 #2
0
        public static string DomainLinkCode(DomainLinkConfig linkConfig)
        {
            throw new NotImplementedException();

            //CodeMemberField linkCodeConst = null;
            //CodeMemberProperty link = null;
            //EntityLinkCode(linkConfig, out linkCodeConst, out link);

            //CodeDomProvider provider = CreateProvider();
            //CodeGeneratorOptions createGeneratorOptions = CreateGeneratorOptions();

            //StringBuilder resultCode = new StringBuilder();
            //using (StringWriter sourceWriter = new StringWriter(resultCode))
            //{
            //    provider.GenerateCodeFromMember(linkCodeConst, sourceWriter, createGeneratorOptions);
            //    provider.GenerateCodeFromMember(link, sourceWriter, createGeneratorOptions);
            //}

            //return resultCode.ToString();
        }
コード例 #3
0
        private static CodeMemberField DomainLinkCodeConstCode(DomainLinkConfig linkConfig)
        {
            string linkConstName = String.Format("Link{0}", linkConfig.Code);
            CodeMemberField linkCodeConst = new CodeMemberField
            {
                Attributes = MemberAttributes.Family | MemberAttributes.Const,
                Name = linkConstName,
                Type = new CodeTypeReference(typeof(String)),
                InitExpression = new CodePrimitiveExpression(linkConfig.Code)
            };

            SetSummaryComment(linkCodeConst, String.Format("Код ссылки '{0}'", linkConfig.Code));

            return linkCodeConst;
        }
コード例 #4
0
 public override void SaveLink(DomainLinkConfig link, EditLinkParams editParams)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
 public override void DeleteLink(DomainLinkConfig link)
 {
     throw new NotImplementedException();
 }
コード例 #6
0
        public void DeleteLink(DomainLinkConfig link)
        {
            if (link == null)
                throw new ArgumentNullException("link");

            if (link.LeftRelation == eRelation.Many && link.RightRelation == eRelation.Many)
            {
                Connection.RemoveTable(link.LinkTable);
            }
            else
            {
                if (link.LeftRelation == eRelation.One)
                {
                    Connection.RemoveTableField(link.RightObject.TableName, link.LeftObjectIdField);
                }
                else
                {
                    Connection.RemoveTableField(link.LeftObject.TableName, link.RightObjectIdField);
                }
            }

            m_provider.DeleteLink(link);

            ALinks.Remove(link);

            if (DeleteLinkCompleted != null)
                DeleteLinkCompleted(this, new LinkConfigArgs(link));

            IsModified = true;
        }
コード例 #7
0
 private void AppendLinkConfigNode(DomainObjectInquiry inquiry, TreeListNode objLinksNode, DomainLinkConfig link)
 {
     AppendNode(objLinksNode, GetNodeTitle(link), new ObjectExplorerNodeTag(inquiry, eObjectExplorerNode.LinkConfig, link));
 }
コード例 #8
0
 private static CodeMemberField LeftLinkPrivateCollection(DomainLinkConfig linkConfig)
 {
     return new CodeMemberField(typeof(DomainObjectCollection), String.Format("m_{0}{1}", linkConfig.LeftCollectionName.ToLower()[0], linkConfig.LeftCollectionName.Substring(1)));
 }
コード例 #9
0
ファイル: UI.cs プロジェクト: Ne4to/DomainCommonSE
 public void DeleteLinkConfig(DomainObjectInquiry inquiry, DomainLinkConfig link)
 {
     if (MessageBox.Show(String.Format(UILocalization.DeleteEntityObjectLinkQuestion, link.Code), UILocalization.DeleteEntityObjectLinkCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         throw new NotImplementedException();
         //DomainObjectConfig parentObject = inquiry.AObject[link.BaseObjectCode];
         //inquiry.RemoveLink(parentObject, link.DirectCode);
     }
 }
コード例 #10
0
 public abstract void SaveLink(DomainLinkConfig link, EditLinkParams editParams);
コード例 #11
0
 public abstract void DeleteLink(DomainLinkConfig link);
コード例 #12
0
 public DomainLinkBrokerBuilder(DomainLinkConfig linkConfig, IDbCommonConnection dbConnection)
 {
     m_linkConfig = linkConfig;
     m_dbConnection = dbConnection;
 }
コード例 #13
0
 public LinkConfigArgs(DomainLinkConfig link)
 {
     Link = link;
 }
コード例 #14
0
 public EditLinkConfigArgs(DomainLinkConfig link)
     : base(link)
 {
     //throw new NotImplementedException("add prev state changed params");
 }
コード例 #15
0
        public void SaveLink(DomainLinkConfig link, EditLinkParams editParams)
        {
            if (!editParams.IsLeftToRightActive && !editParams.IsRightToLeftActive)
                throw new ArgumentException();

            if (!Utils.CheckEnglishString(editParams.LeftCollectionName))
                throw new ArgumentOutOfRangeException("editParams.LeftCollectionName", Resources.OnlyLatinString);

            if (!Utils.CheckEnglishString(editParams.RightCollectionName))
                throw new ArgumentOutOfRangeException("editParams.RightCollectionName", Resources.OnlyLatinString);

            m_provider.SaveLink(link, editParams);

            link.Update(editParams);

            if (EditLinkCompleted != null)
                EditLinkCompleted(this, new EditLinkConfigArgs(link));

            IsModified = true;
        }
コード例 #16
0
ファイル: UI.cs プロジェクト: Ne4to/DomainCommonSE
 public void EditLinkConfig(DomainObjectInquiry inquiry, DomainLinkConfig link)
 {
     using (EditLinkForm form = new EditLinkForm(inquiry, link))
     {
         form.ShowDialog();
     }
 }
コード例 #17
0
        private static CodeMemberProperty LeftLinkCollection(DomainLinkConfig linkConfig, CodeMemberField privateCollection)
        {
            CodeMemberProperty link = new CodeMemberProperty()
            {
                Name = linkConfig.LeftCollectionName,
                Attributes = MemberAttributes.Public | MemberAttributes.Final,
                Type = new CodeTypeReference(typeof(DomainObjectCollection)),
            };

            link.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), privateCollection.Name)));

            SetSummaryComment(link, linkConfig.LeftToRightDescription);

            return link;
        }
コード例 #18
0
        public override void DeleteLink(DomainLinkConfig link)
        {
            DbCommonCommand command = m_removeLinkCommand.Value;

            command["ID"].Value = link.Id;
            command.ExecuteNonQuery(SessionIdentifier.SHARED_SESSION);
        }
コード例 #19
0
 private static CodeMemberProperty RightLinkCollection(DomainLinkConfig linkConfig)
 {
     throw new NotImplementedException();
 }
コード例 #20
0
        public override List<DomainLinkConfig> LoadLink()
        {
            List<DomainLinkConfig> result = new List<DomainLinkConfig>();
            DbCommonCommand command = m_loadLinkCommand.Value;

            using (IDbCommonDataReader reader = command.ExecuteReader(SessionIdentifier.SHARED_SESSION))
            {
                while (reader.Read())
                {
                    CreateLinkParams createParams = new CreateLinkParams();

                    createParams.Id = reader.GetValue<long>(0);
                    createParams.Code = reader.GetValue<String>(1);
                    createParams.LeftRelation = (eRelation)reader.GetValue<Int32>(2);
                    createParams.RightRelation = (eRelation)reader.GetValue<Int32>(3);

                    string leftObjectCode = reader.GetValue<string>(4);
                    createParams.LeftObject = m_objectConfig[leftObjectCode];

                    string rightObjectCode = reader.GetValue<string>(5);
                    createParams.RightObject = m_objectConfig[rightObjectCode];

                    createParams.LinkTable = reader.GetValue<string>(6);
                    createParams.LeftObjectIdField = reader.GetValue<string>(7);
                    createParams.RightObjectIdField = reader.GetValue<string>(8);

                    EditLinkParams editParams = new EditLinkParams();

                    editParams.IsLeftToRightActive = reader.GetValue<bool>(9);
                    editParams.IsRightToLeftActive = reader.GetValue<bool>(10);
                    editParams.LeftToRightDescription = reader.GetValue<string>(11);
                    editParams.RightToLeftDescription = reader.GetValue<string>(12);
                    editParams.LeftCollectionName = reader.GetValue<string>(13);
                    editParams.RightCollectionName = reader.GetValue<string>(14);

                    DomainLinkConfig loadLink = new DomainLinkConfig(createParams, editParams);
                    result.Add(loadLink);
                }
                reader.Close();
            }

            return result;
        }
コード例 #21
0
 private static string GetNodeTitle(DomainLinkConfig link)
 {
     return String.Format("{0}, {1} | {2}", link.LeftObject.Code, link.RightObject.Code, link.Code);
 }
コード例 #22
0
        public override void SaveLink(DomainLinkConfig link, EditLinkParams editParams)
        {
            DbCommonCommand command = m_editLinkCommand.Value;

            command["ID"].Value = link.Id;
            command["IS_LEFT_TO_RIGHT_ACTIVE"].Value = editParams.IsLeftToRightActive;
            command["IS_RIGHT_TO_LEFT_ACTIVE"].Value = editParams.IsRightToLeftActive;
            command["LEFT_COLLECTION_NAME"].Value = editParams.LeftCollectionName;
            command["RIGHT_COLLECTION_NAME"].Value = editParams.RightCollectionName;
            command["LEFT_TO_RIGHT_DESCRIPTION"].Value = editParams.LeftToRightDescription;
            command["RIGHT_TO_LEFT_DESCRIPTION"].Value = editParams.RightToLeftDescription;

            command.ExecuteNonQuery(SessionIdentifier.SHARED_SESSION);
        }
コード例 #23
0
ファイル: EditLinkForm.cs プロジェクト: Ne4to/DomainCommonSE
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_link == null)
                {
                    CreateLinkParams createParams = new CreateLinkParams();

                    createParams.Code = txtLinkCode.Text.Trim();

                    createParams.LeftObject = viewLeftObject.GetFocusedRow() as DomainObjectConfig;
                    createParams.RightObject = viewRightObject.GetFocusedRow() as DomainObjectConfig;

                    createParams.LeftRelation = rgLeftRelation.SelectedIndex == 0 ? eRelation.One : eRelation.Many;
                    createParams.RightRelation = rgRightRelation.SelectedIndex == 0 ? eRelation.One : eRelation.Many;

                    createParams.LeftObjectIdField = txtLeftIdField.Text.Trim();
                    createParams.RightObjectIdField = txtRightIdField.Text.Trim();

                    createParams.LinkTable = txtLinkTableName.Text.Trim();

                    m_link = m_inquiry.CreateLink(createParams);
                }

                EditLinkParams editParams = new EditLinkParams();

                editParams.IsLeftToRightActive = cbIsLeftToRight.Checked;
                editParams.IsRightToLeftActive = cbIsRightToLeft.Checked;

                editParams.LeftCollectionName = txtLeftCollectionName.Text.Trim();
                editParams.RightCollectionName = txtRightCollectionName.Text.Trim();

                editParams.LeftToRightDescription = txtLeftToRightDescription.Text.Trim();
                editParams.RightToLeftDescription = txtRightToLeftDescription.Text.Trim();

                m_inquiry.SaveLink(m_link, editParams);

                DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message);
            }
        }
コード例 #24
0
        public DomainLinkConfig CreateLink(CreateLinkParams createParams)
        {
            if (createParams == null)
                throw new ArgumentNullException("createParams");

            if (String.IsNullOrEmpty(createParams.Code))
                throw new ArgumentNullException("createParams.Code", Resources.EmptyLinkCode);

            if (!Utils.CheckEnglishString(createParams.Code))
            {
                throw new ArgumentOutOfRangeException("createParams.Code", Resources.OnlyLatinString);
            }

            if (createParams.LeftObject == null)
                throw new ArgumentNullException("createParams.LeftObject", Resources.LeftObjectNotAssigned);

            if (createParams.RightObject == null)
                throw new ArgumentNullException("createParams.RightObject", Resources.RightObjectNotAssigned);

            if (createParams.LeftRelation == eRelation.One && createParams.RightRelation == eRelation.One)
                throw new NotSupportedException();

            if (IsLinkExist(createParams))
                throw new ArgumentException("link with this params already exists");

            if (createParams.LeftRelation == eRelation.Many && createParams.RightRelation == eRelation.Many)
            {
                Connection.CreateLinkTable(createParams.LinkTable, createParams.LeftObjectIdField, createParams.RightObjectIdField);
            }
            else
            {
                if (createParams.LeftRelation == eRelation.One)
                {
                    Connection.AddTableField(createParams.RightObject.TableName, createParams.LeftObjectIdField, typeof(long));
                }
                else
                {
                    Connection.AddTableField(createParams.LeftObject.TableName, createParams.RightObjectIdField, typeof(long));
                }
            }

            long newId = Connection.NewSequence();
            createParams.Id = newId;

            m_provider.CreateLink(createParams);

            DomainLinkConfig newLink = new DomainLinkConfig(createParams);
            ALinks.Add(newLink);

            if (CreateLinkCompleted != null)
                CreateLinkCompleted(this, new LinkConfigArgs(newLink));

            IsModified = true;

            return newLink;
        }