public override void CreateLink(CreateLinkParams createParams)
        {
            DbCommonCommand command = m_createLinkCommand.Value;

            command["ID"].Value = createParams.Id;
            command["CODE"].Value = createParams.Code;
            command["LEFT_RELATION"].Value = (int)createParams.LeftRelation;
            command["RIGHT_RELATION"].Value = (int)createParams.RightRelation;
            command["ID_LEFT_OBJECT"].Value = createParams.LeftObject.Id;
            command["ID_RIGHT_OBJECT"].Value = createParams.RightObject.Id;
            command["LINK_TABLE_NAME"].Value = createParams.LinkTable;
            command["LEFT_ID_FIELD"].Value = createParams.LeftObjectIdField;
            command["RIGHT_ID_FIELD"].Value = createParams.RightObjectIdField;

            command.ExecuteNonQuery(SessionIdentifier.SHARED_SESSION);
        }
Beispiel #2
0
        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);
            }
        }
        internal DomainLinkConfig(CreateLinkParams createParams, EditLinkParams editParams = null)
        {
            Id = createParams.Id;
            Code = createParams.Code;
            LeftRelation = createParams.LeftRelation;
            RightRelation = createParams.RightRelation;
            LeftObject = createParams.LeftObject;
            RightObject = createParams.RightObject;
            LinkTable = createParams.LinkTable;
            LeftObjectIdField = createParams.LeftObjectIdField;
            RightObjectIdField = createParams.RightObjectIdField;

            if (editParams != null)
                Update(editParams);

            Key = new DomainLinkKey(this);
        }
 public override void CreateLink(CreateLinkParams createParams)
 {
     throw new NotImplementedException();
 }
        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;
        }
 public abstract void CreateLink(CreateLinkParams createParams);
 bool IsLinkExist(CreateLinkParams createparams)
 {
     return false;
     //throw new NotImplementedException();
     return ALinks.FirstOrDefault(l => l.Code == createparams.Code &&
         ((l.LeftObject == createparams.LeftObject && l.RightObject == createparams.RightObject) ||
         (l.LeftObject == createparams.RightObject && l.RightObject == createparams.LeftObject))) != null;
 }
        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;
        }