Skip to content

Commit e8a148f

Browse files
committed
Moved static GetEntities to context GetEntityNodes to use more generally
1 parent b3292b5 commit e8a148f

File tree

5 files changed

+66
-51
lines changed

5 files changed

+66
-51
lines changed

FetchXmlBuilder/Builder/TreeNodeHelper.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.Xrm.Sdk.Metadata;
22
using Rappen.XRM.Helpers.Extensions;
33
using Rappen.XRM.Helpers.FetchXML;
4-
using Rappen.XTB.FetchXmlBuilder.ControlsClasses;
54
using Rappen.XTB.FetchXmlBuilder.DockControls;
65
using Rappen.XTB.FetchXmlBuilder.Settings;
76
using System;
@@ -719,23 +718,5 @@ internal static string GetNodeAttributeValue(this TreeNode node, string attribut
719718
}
720719
return null;
721720
}
722-
723-
internal static List<EntityNode> GetEntities(TreeNode node, bool needsalias)
724-
{
725-
var result = new List<EntityNode>();
726-
if (node.HeritanceOfFilter())
727-
{
728-
return result;
729-
}
730-
if (node.Name == "link-entity" && (!needsalias || !string.IsNullOrWhiteSpace(node.Value("alias"))))
731-
{
732-
result.Add(new EntityNode(node));
733-
}
734-
foreach (TreeNode child in node.Nodes)
735-
{
736-
result.AddRange(GetEntities(child, needsalias));
737-
}
738-
return result;
739-
}
740721
}
741722
}

FetchXmlBuilder/Controls/conditionControl.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ private void RefreshAttributes()
411411
{
412412
return;
413413
}
414-
entityName = entityNode.EntityName;
414+
entityName = entityNode.LogicalName;
415415
if (fxb.NeedToLoadEntity(entityName))
416416
{
417417
if (!fxb.working)
@@ -475,7 +475,7 @@ private void RefreshValueOf()
475475
{
476476
aliasNode = new EntityNode(Node.LocalEntityNode());
477477
}
478-
var entityName = aliasNode.EntityName;
478+
var entityName = aliasNode.LogicalName;
479479
if (fxb.NeedToLoadEntity(entityName))
480480
{
481481
if (!fxb.working)
@@ -533,7 +533,7 @@ private void SetEntitiesAliases(ComboBox cmb, bool needsalias)
533533
if (closestEntity != null && closestEntity.Name == "entity")
534534
{
535535
cmb.Items.Add("");
536-
cmb.Items.AddRange(TreeNodeHelper.GetEntities(Tree.tvFetch.Nodes[0], needsalias).ToArray());
536+
cmb.Items.AddRange(fxb.dockControlBuilder?.GetEntityNodes(needsalias: needsalias, excludefromfilter: true).ToArray());
537537
}
538538
cmb.Enabled = cmb.Items.Count > 1;
539539
if (cmb.Parent is Panel pan)
@@ -690,7 +690,7 @@ enummeta.OptionSet is OptionSetMetadata options &&
690690
if (attrmeta.IsLogical == false)
691691
{
692692
var entitynode = new EntityNode(Node.LocalEntityNode());
693-
dlgLookup.LogicalName = entitynode.EntityName;
693+
dlgLookup.LogicalName = entitynode.LogicalName;
694694
}
695695
else if (attrmeta.LogicalName.EndsWith("addressid"))
696696
{

FetchXmlBuilder/Controls/orderControl.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public orderControl(TreeNode node, AttributeMetadata[] attributes, FetchXmlBuild
3131

3232
protected override void PopulateControls()
3333
{
34-
SetEntitiesAliases(cmbEntity, false);
34+
SetEntitiesAliases(cmbEntity);
3535
var aggregate = Node.IsFetchAggregate();
3636
cmbAttribute.Items.Clear();
3737
cmbAlias.Items.Clear();
@@ -64,7 +64,7 @@ private void RefreshAttributes()
6464
{
6565
return;
6666
}
67-
entityName = entityNode.EntityName;
67+
entityName = entityNode.LogicalName;
6868
if (fxb.NeedToLoadEntity(entityName))
6969
{
7070
if (!fxb.working)
@@ -84,14 +84,14 @@ private void RefreshAttributes()
8484
EndInit();
8585
}
8686

87-
private void SetEntitiesAliases(ComboBox cmb, bool needsalias)
87+
private void SetEntitiesAliases(ComboBox cmb)
8888
{
8989
cmb.Items.Clear();
9090
var closestEntity = Node.LocalEntityNode();
9191
if (closestEntity != null && closestEntity.Name == "entity")
9292
{
9393
cmb.Items.Add("");
94-
cmb.Items.AddRange(TreeNodeHelper.GetEntities(Tree.tvFetch.Nodes[0], needsalias).ToArray());
94+
cmb.Items.AddRange(fxb.dockControlBuilder?.GetEntityNodes(needsalias: true, excludefromfilter: true)?.ToArray());
9595
}
9696
cmb.Enabled = cmb.Items.Count > 1;
9797
if (cmb.Parent is Panel pan)

FetchXmlBuilder/ControlsClasses/EntityNode.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ public class EntityNode
77
{
88
#region Public Fields
99

10-
public string EntityName;
10+
public TreeNode Node { get; }
11+
public string LogicalName { get; }
12+
public string Alias { get; }
1113

1214
#endregion Public Fields
1315

@@ -21,19 +23,17 @@ public class EntityNode
2123

2224
public EntityNode(TreeNode node)
2325
{
24-
EntityName = node.Value("name");
25-
var alias = node.Value("alias");
26-
name = !string.IsNullOrEmpty(alias) ? alias : EntityName;
26+
Node = node;
27+
LogicalName = node.Value("name");
28+
Alias = node.Value("alias");
29+
name = !string.IsNullOrEmpty(Alias) ? Alias : LogicalName;
2730
}
2831

2932
#endregion Public Constructors
3033

3134
#region Public Methods
3235

33-
public override string ToString()
34-
{
35-
return name;
36-
}
36+
public override string ToString() => name;
3737

3838
#endregion Public Methods
3939
}

FetchXmlBuilder/DockControls/TreeBuilderControl.cs

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Rappen.XRM.Helpers.Interfaces;
77
using Rappen.XTB.FetchXmlBuilder.Builder;
88
using Rappen.XTB.FetchXmlBuilder.Controls;
9+
using Rappen.XTB.FetchXmlBuilder.ControlsClasses;
910
using Rappen.XTB.FetchXmlBuilder.Extensions;
1011
using Rappen.XTB.FetchXmlBuilder.Forms;
1112
using Rappen.XTB.FetchXmlBuilder.Views;
@@ -202,6 +203,32 @@ internal FetchXmlElementControlBase GetCurrentControl()
202203
.Nodes.Cast<TreeNode>()?
203204
.FirstOrDefault(n => n.Name == "attribute" && n.Value("name") == PrimaryIdName);
204205

206+
internal List<EntityNode> GetEntityNodes(TreeNode node = null, bool needsalias = false, bool excludefromfilter = false)
207+
{
208+
if (node == null)
209+
{
210+
node = tvFetch.Nodes[0];
211+
}
212+
var result = new List<EntityNode>();
213+
if (node == null)
214+
{
215+
return result;
216+
}
217+
if (excludefromfilter && node.HeritanceOfFilter())
218+
{
219+
return result;
220+
}
221+
if (node.Name == "link-entity" && (!needsalias || !string.IsNullOrWhiteSpace(node.Value("alias"))))
222+
{
223+
result.Add(new EntityNode(node));
224+
}
225+
foreach (TreeNode child in node.Nodes)
226+
{
227+
result.AddRange(GetEntityNodes(child, needsalias, excludefromfilter));
228+
}
229+
return result;
230+
}
231+
205232
private int GetUniqueLinkEntitySuffix(TreeNode entity)
206233
{
207234
var root = tvFetch.Nodes.Cast<TreeNode>().FirstOrDefault(n => n.Name == "fetch");
@@ -515,7 +542,7 @@ private static string GetNodeAsString(TreeNode node)
515542
XmlNode rootNode = doc.CreateElement("root");
516543
doc.AppendChild(rootNode);
517544
TreeNodeHelper.AddXmlNode(node, rootNode);
518-
XDocument xdoc = XDocument.Parse(rootNode.InnerXml);
545+
var xdoc = XDocument.Parse(rootNode.InnerXml);
519546
var result = xdoc.ToString();
520547
return result;
521548
}
@@ -586,7 +613,10 @@ private XmlDocument GetFetchDocument(bool includelayout = false)
586613
private void HandleNodeMenuClick(string ClickedTag)
587614
{
588615
if (ClickedTag == null || ClickedTag == "Add")
616+
{
589617
return;
618+
}
619+
590620
TreeNode updateNode = null;
591621
if (ClickedTag == "Delete")
592622
{
@@ -696,7 +726,7 @@ private void HandleNodeSelection(TreeNode node)
696726
}
697727

698728
ctrl = null;
699-
Control existingControl = panelContainer.Controls.Count > 0 ? panelContainer.Controls[0] : null;
729+
var existingControl = panelContainer.Controls.Count > 0 ? panelContainer.Controls[0] : null;
700730
if (node != null)
701731
{
702732
TreeNodeHelper.AddContextMenu(node, this, fxb.settings.QueryOptions);
@@ -746,7 +776,7 @@ private void HandleNodeSelection(TreeNode node)
746776
}
747777
break;
748778
}
749-
AttributeMetadata[] attributes = fxb.GetDisplayAttributes(entity).ToArray();
779+
var attributes = fxb.GetDisplayAttributes(entity).ToArray();
750780
if (node.Name == "attribute")
751781
{
752782
ctrl = new attributeControl(node, attributes, fxb, this);
@@ -787,7 +817,11 @@ private void HandleNodeSelection(TreeNode node)
787817
ctrl.BringToFront();
788818
ctrl.Dock = DockStyle.Top;
789819
}
790-
if (existingControl != null) panelContainer.Controls.Remove(existingControl);
820+
if (existingControl != null)
821+
{
822+
panelContainer.Controls.Remove(existingControl);
823+
}
824+
791825
fxb.ShowMetadata(ctrl?.Metadata());
792826
}
793827
ManageMenuDisplay();
@@ -852,7 +886,7 @@ private void HandleTVKeyDown(KeyEventArgs e)
852886

853887
private void ManageMenuDisplay()
854888
{
855-
TreeNode selectedNode = tvFetch.SelectedNode;
889+
var selectedNode = tvFetch.SelectedNode;
856890
moveUpToolStripMenuItem.Enabled = selectedNode != null && selectedNode.Parent != null &&
857891
selectedNode.Index != 0;
858892
moveDownToolStripMenuItem.Enabled = selectedNode != null && selectedNode.Parent != null &&
@@ -898,7 +932,7 @@ private void SelectAttributes()
898932
var i = 0;
899933
while (i < entityNode.Nodes.Count)
900934
{ // Remove unselected previously added attributes
901-
TreeNode subnode = entityNode.Nodes[i];
935+
var subnode = entityNode.Nodes[i];
902936
var attributename = subnode.Value("name");
903937
if (subnode.Name == "attribute" && !selectedAttributes.Contains(attributename))
904938
{
@@ -1019,13 +1053,13 @@ private void toolStripButtonMoveDown_Click(object sender, EventArgs e)
10191053
{
10201054
moveDownToolStripMenuItem.Enabled = false;
10211055
fxb.working = true;
1022-
TreeNode tnmNode = tvFetch.SelectedNode;
1023-
TreeNode tnmNextNode = tnmNode.NextNode;
1056+
var tnmNode = tvFetch.SelectedNode;
1057+
var tnmNextNode = tnmNode.NextNode;
10241058
if (tnmNextNode != null)
10251059
{
1026-
int idxBegin = tnmNode.Index;
1027-
int idxEnd = tnmNextNode.Index;
1028-
TreeNode tnmNodeParent = tnmNode.Parent;
1060+
var idxBegin = tnmNode.Index;
1061+
var idxEnd = tnmNextNode.Index;
1062+
var tnmNodeParent = tnmNode.Parent;
10291063
if (tnmNodeParent != null)
10301064
{
10311065
tnmNode.Remove();
@@ -1045,13 +1079,13 @@ private void toolStripButtonMoveUp_Click(object sender, EventArgs e)
10451079
{
10461080
moveUpToolStripMenuItem.Enabled = false;
10471081
fxb.working = true;
1048-
TreeNode tnmNode = tvFetch.SelectedNode;
1049-
TreeNode tnmPreviousNode = tnmNode.PrevNode;
1082+
var tnmNode = tvFetch.SelectedNode;
1083+
var tnmPreviousNode = tnmNode.PrevNode;
10501084
if (tnmPreviousNode != null)
10511085
{
1052-
int idxBegin = tnmNode.Index;
1053-
int idxEnd = tnmPreviousNode.Index;
1054-
TreeNode tnmNodeParent = tnmNode.Parent;
1086+
var idxBegin = tnmNode.Index;
1087+
var idxEnd = tnmPreviousNode.Index;
1088+
var tnmNodeParent = tnmNode.Parent;
10551089
if (tnmNodeParent != null)
10561090
{
10571091
tnmNode.Remove();

0 commit comments

Comments
 (0)