Exemple #1
0
            public void ChnageFunctionalId()
            {
                FunctionalId toChangeFunctionalId = FunctionalIds.New("ChangeAccount", "CA_", IdFormat.Hash);

                Entities["Account"].Refactor.SetFunctionalId(toChangeFunctionalId, ApplyAlgorithm.ReapplyAll);
                Assert.AreEqual(Entities["Account"].FunctionalId, toChangeFunctionalId);
            }
Exemple #2
0
            public void UpdateFunctionalId()
            {
                FunctionalId account = FunctionalIds.New("Account", "A_", IdFormat.Hash);

                Entities["Account"].Refactor.SetFunctionalId(account);
                Assert.AreEqual(Entities["Account"].FunctionalId, account);
            }
        internal virtual void Compile(FunctionalId functionalId, CompileState state)
        {
            if (PersistenceProvider is Neo4jPersistenceProvider neo4j && neo4j.Major < 4)
            {
                throw new NotSupportedException("Setting functional-id's on (batch) queries is not supported for Neo4j versions before v4.0.0");
            }

            if (!HasBlueprint41FunctionalidFnNext.Value || !HasBlueprint41FunctionalidFnNextNumeric.Value)
            {
                throw new NotSupportedException("Setting functional-id's on (batch) queries is not supported if the Blueprint41 plug-in is not installed or a lower version than 'blueprint41-4.0.2.jar'.");
            }

            if (functionalId.Guid == Guid.Empty)
            {
                state.Text.Append(FnUuidCreate);
            }
            if (functionalId.Format == IdFormat.Hash)
            {
                state.Text.AppendFormat(FnFunctionalIdNextHash, functionalId.Label);
            }
            else
            {
                state.Text.AppendFormat(FnFunctionalIdNextNumeric, functionalId.Label);
            }
        }
        protected override void ApplyFunctionalId(FunctionalId functionalId)
        {
            if (functionalId == null)
            {
                return;
            }

            if (functionalId.wasApplied || functionalId.highestSeenId == -1)
            {
                return;
            }

            lock (functionalId)
            {
                string    getFidQuery = $"CALL blueprint41.functionalid.current('{functionalId.Label}')";
                RawResult result      = Run(getFidQuery);
                long?     currentFid  = result.FirstOrDefault()?.Values["Sequence"].As <long?>();
                if (currentFid.HasValue)
                {
                    functionalId.SeenUid(currentFid.Value);
                }

                string setFidQuery = $"CALL blueprint41.functionalid.setSequenceNumber('{functionalId.Label}', {functionalId.highestSeenId}, {(functionalId.Format == IdFormat.Numeric).ToString().ToLowerInvariant()})";
                Run(setFidQuery);
                functionalId.wasApplied    = true;
                functionalId.highestSeenId = -1;
            }
        }
        public override string NextFunctionID(FunctionalId functionalId)
        {
            if (functionalId is null)
            {
                throw new ArgumentNullException("functionalId");
            }

            var result = Transaction.RunningTransaction.Run(NextFunctionalIdQuery(functionalId)).First();

            return(result["key"]?.ToString() !);
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            this.IsNewFunctionalId = false;
            FunctionalId selectedFunctionalId = GetSelected();

            SetupForEdit();

            cmbType.SelectedItem = selectedFunctionalId.Type;
            txtPrefix.Text       = selectedFunctionalId.Value;
            txtName.Text         = selectedFunctionalId.Name;
            chkDefault.Checked   = selectedFunctionalId.IsDefault;
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            string type   = cmbType.SelectedItem.ToString();
            string prefix = txtPrefix.Text.Trim();
            string name   = txtName.Text.Trim();

            if (string.IsNullOrEmpty(name))
            {
                MessageBox.Show("Name cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtName.Focus();
                return;
            }

            if (string.IsNullOrEmpty(prefix))
            {
                MessageBox.Show("Prefix cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtPrefix.Focus();
                return;
            }

            if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Name == name))
            {
                MessageBox.Show($"Name \"{name}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtName.Focus();
                return;
            }

            if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Value == prefix))
            {
                MessageBox.Show($"Prefix \"{prefix}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtPrefix.Focus();
                return;
            }

            FunctionalId funcId = new FunctionalId(Model);

            funcId.Type  = type;
            funcId.Value = prefix;
            funcId.Name  = name;
            funcId.Guid  = Model.GenerateGuid(name).ToString();

            this.Model.FunctionalIds.FunctionalId.Add(funcId);
            string displayName = string.Concat(string.Concat(name, " - "), prefix);

            ParentControl.RefreshEntity();
            ParentControl.FunctionalIdComboBox.SelectedIndex = ParentControl.FunctionalIdComboBox.FindStringExact(displayName);
            this.Close();

            MessageBox.Show("Functional Id saved in memory.", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Exemple #8
0
            public void Initialize()
            {
                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
                FunctionalId account = FunctionalIds.New("Account", "A_", IdFormat.Hash);

                Entities.New("BaseAccount", account)
                .AddProperty("Uid", typeof(string), false, IndexType.Unique)
                .SetKey("Uid", true);

                Entities.New("Account", Entities["BaseAccount"])
                .AddProperty("Name", typeof(string), false)
                .SetFullTextProperty("Name");

                Assert.AreEqual(Entities["Account"].FunctionalId, account);
            }
        protected virtual long FindMaxId(FunctionalId functionalId)
        {
            bool          first           = true;
            string        templateNumeric = "MATCH (node:{0}) WHERE toInt(node.Uid) IS NOT NULL WITH toInt(node.Uid) AS decoded RETURN case Max(decoded) WHEN NULL THEN 0 ELSE Max(decoded) END as MaxId";
            string        templateHash    = "MATCH (node:{0}) where node.Uid STARTS WITH '{1}' AND Length(node.Uid) >= {2} CALL blueprint41.hashing.decode(replace(node.Uid, '{1}', '')) YIELD value as decoded RETURN  case Max(decoded) WHEN NULL THEN 0 ELSE Max(decoded) END as MaxId";
            string        actualFidValue  = "CALL blueprint41.functionalid.current('{0}') YIELD Sequence as sequence RETURN sequence";
            StringBuilder queryBuilder    = new StringBuilder();

            foreach (var entity in Model.Entities.Where(entity => entity.FunctionalId?.Label == functionalId.Label))
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    queryBuilder.AppendLine("UNION");
                }

                if (functionalId.Format == IdFormat.Hash)
                {
                    queryBuilder.AppendFormat(templateHash, entity.Label.Name, functionalId.Prefix, functionalId.Prefix.Length + 6);
                }
                else
                {
                    queryBuilder.AppendFormat(templateNumeric, entity.Label.Name);
                }
                queryBuilder.AppendLine();
            }

            if (queryBuilder.Length != 0)
            {
                var ids = LoadData(queryBuilder.ToString(), record => record.Values["MaxId"].As <long>());
                if (ids.Count == 0)
                {
                    return(0);
                }
                else
                {
                    return(ids.Max() + 1);
                }
            }
            else
            {
                return(LoadData(string.Format(actualFidValue, functionalId.Label), record => record.Values["sequence"].As <int?>()).FirstOrDefault() ?? 0);
            }
        }
        private string NextFunctionalIdQuery(FunctionalId functionalId)
        {
            QueryTranslator t = PersistenceProviderFactory.Translator;

            if (functionalId.Guid == Guid.Empty)
            {
                return(t.CallUuidCreate);
            }
            if (functionalId.Format == IdFormat.Hash)
            {
                return(string.Format(t.CallFunctionalIdNextHash, functionalId.Label));
            }
            else
            {
                return(string.Format(t.CallFunctionalIdNextNumeric, functionalId.Label));
            }
        }
Exemple #11
0
        public override string NextFunctionID(FunctionalId functionalId)
        {
            if (functionalId == null)
            {
                throw new ArgumentNullException("functionalId");
            }

            string nextKey = string.Format("CALL blueprint41.functionalid.next('{0}') YIELD value as key", functionalId.Label);

            if (functionalId.Format == IdFormat.Numeric)
            {
                nextKey = string.Format("CALL blueprint41.functionalid.nextNumeric('{0}') YIELD value as key", functionalId.Label);
            }

            var result = Transaction.RunningTransaction.Run(nextKey).First();

            return(result["key"]?.ToString() !);
        }
Exemple #12
0
            public void Initialize()
            {
                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
                FunctionalId accountId = FunctionalIds.New("Acct", "A_", IdFormat.Hash, 0);

                Entities.New("AccountType", accountId)
                .Summary("The type of an Account")
                .HasStaticData(true)
                .AddProperty("Uid", typeof(string), false, IndexType.Unique)
                .SetKey("Uid", true)
                .AddProperty("Name", typeof(string), false, IndexType.Unique)
                .SetFullTextProperty("Name");

                Entities["AccountType"].Refactor.CreateNode(new { Uid = "6", Name = "Account" });

                Assert.IsNotNull(Entities["AccountType"].FunctionalId);
                Assert.AreEqual(Entities["AccountType"].FunctionalId, accountId);
            }
        private void btnDelete_Click(object sender, EventArgs e)
        {
            FunctionalId selectedFunctionalId = GetSelected();

            if (this.Model.Entities.Entity.Where(ent => ent.FunctionalId == selectedFunctionalId.Guid).Count() > 0)
            {
                MessageBox.Show($"Cannot delete functionalId \"{selectedFunctionalId.Name}\" because 1 or more entities are using it.", "Functional ID", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            DialogResult dialogResult = MessageBox.Show($"Are you want to delete functionalId: \"{selectedFunctionalId.Name}\"?", "Delete", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                this.Model.FunctionalIds.FunctionalId.Remove(selectedFunctionalId);

                InitializeDataBindings();
                SetupForSelection();
            }
        }
Exemple #14
0
 protected override void ApplyFunctionalId(FunctionalId functionalId)
 {
 }
 public abstract string NextFunctionID(FunctionalId functionalId);
        private void Save()
        {
            FunctionalId defaultFunctionalId = GetDefaultFunctionalId();

            string type   = cmbType.SelectedItem.ToString();
            string prefix = txtPrefix.Text.Trim();
            string name   = txtName.Text.Trim();

            if (string.IsNullOrEmpty(name))
            {
                MessageBox.Show("Name cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtName.Focus();
                return;
            }

            if (string.IsNullOrEmpty(prefix))
            {
                MessageBox.Show("Prefix cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtPrefix.Focus();
                return;
            }

            if (this.IsNewFunctionalId)
            {
                if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Name == name))
                {
                    MessageBox.Show($"Name \"{name}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txtName.Focus();
                    return;
                }

                if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Value == prefix))
                {
                    MessageBox.Show($"Prefix \"{prefix}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txtPrefix.Focus();
                    return;
                }

                FunctionalId funcId = new FunctionalId(Model);
                funcId.Type  = type;
                funcId.Value = prefix;
                funcId.Name  = name;
                funcId.Guid  = Model.GenerateGuid(name).ToString();

                if (chkDefault.Checked)
                {
                    if (defaultFunctionalId != null)
                    {
                        defaultFunctionalId.IsDefault = false;
                    }
                }
                else
                {
                    if (defaultFunctionalId == null)
                    {
                        MessageBox.Show($"Model must have a default functional id.");
                        return;
                    }
                }

                funcId.IsDefault = chkDefault.Checked;

                this.Model.FunctionalIds.FunctionalId.Add(funcId);
            }
            else
            {
                if (this.Model.FunctionalIds.FunctionalId.Where(fi => fi.Name == name && fi.Guid != this.SelectedFunctionalIdGuid).Count() > 0)
                {
                    MessageBox.Show($"Name \"{name}\" already exists.", "Functional ID", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Value == prefix && functionalId.Guid != this.SelectedFunctionalIdGuid))
                {
                    MessageBox.Show($"Prefix \"{prefix}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txtPrefix.Focus();
                    return;
                }

                FunctionalId selectedFunctionalId = GetSelected();
                selectedFunctionalId.Type  = type;
                selectedFunctionalId.Value = prefix;
                selectedFunctionalId.Name  = name;

                if (chkDefault.Checked && !selectedFunctionalId.IsDefault)
                {
                    if (defaultFunctionalId != null)
                    {
                        defaultFunctionalId.IsDefault = false;
                    }
                }

                if (!chkDefault.Checked)
                {
                    if (defaultFunctionalId == null || (defaultFunctionalId?.Guid == selectedFunctionalId.Guid))
                    {
                        MessageBox.Show($"Model must have a default functional id.", "Functional ID", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                selectedFunctionalId.IsDefault = chkDefault.Checked;
            }

            InitializeDataBindings();
            SetupForSelection();
        }
Exemple #17
0
            public void UpdateFunctionalId()
            {
                FunctionalId toChangeFunctionalId = FunctionalIds.New("ChangeAccount", "CA_", IdFormat.Hash);

                Entities["Account"].Refactor.SetFunctionalId(toChangeFunctionalId);
            }