public void ChnageFunctionalId() { FunctionalId toChangeFunctionalId = FunctionalIds.New("ChangeAccount", "CA_", IdFormat.Hash); Entities["Account"].Refactor.SetFunctionalId(toChangeFunctionalId, ApplyAlgorithm.ReapplyAll); Assert.AreEqual(Entities["Account"].FunctionalId, toChangeFunctionalId); }
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); }
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)); } }
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() !); }
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(); } }
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(); }
public void UpdateFunctionalId() { FunctionalId toChangeFunctionalId = FunctionalIds.New("ChangeAccount", "CA_", IdFormat.Hash); Entities["Account"].Refactor.SetFunctionalId(toChangeFunctionalId); }