Skip to content

Commit

Permalink
start to rework subscriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
JFriel committed Jan 21, 2025
1 parent 5168e13 commit 54a2c21
Show file tree
Hide file tree
Showing 16 changed files with 57 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public ActivateItems(ITheme theme, RefreshBus refreshBus, DockPanel mainDockPane
new CatalogueProblemProvider()
};
RefreshProblemProviders();

//TODO
//RefreshBus.Subscribe(this);

// We can run subprocesses
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ public class RDMPSingleControlTab : DockContent, IRefreshBusSubscriber

protected RDMPSingleControlTab(RefreshBus refreshBus)
{
//refreshBus.Subscribe(this);
//FormClosed += (s, e) => refreshBus.Unsubscribe(this);
}

/// <summary>
Expand All @@ -46,6 +44,7 @@ protected RDMPSingleControlTab(RefreshBus refreshBus)
/// <param name="c"></param>
public RDMPSingleControlTab(RefreshBus refreshBus, Control c)
{
//TODO
//refreshBus.Subscribe(this);
//FormClosed += (s, e) => refreshBus.Unsubscribe(this);
Control = c;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using Rdmp.Core.Curation.Data;
using Rdmp.Core.Curation.Data.Cohort;
using Rdmp.Core.Curation.Data.DataLoad;
using Rdmp.Core.Curation.Data.Governance;
using Rdmp.Core.DataExport.Data;
using Rdmp.UI.CommandExecution.AtomicCommands;
using Rdmp.UI.CommandExecution.AtomicCommands.UIFactory;
Expand Down Expand Up @@ -39,9 +40,12 @@ public HomeUI(IActivateItems activator)
InitializeComponent();
}

private void BuildCommandLists()
private void BuildCommandLists(DatabaseEntity singularRefresh = null)
{
boxCatalogue.SetUp(Activator, "Catalogue", typeof(Catalogue), _uiFactory,
var singularRefreshType = singularRefresh?.GetType();
if (singularRefreshType is null || singularRefreshType == typeof(Catalogue))
{
boxCatalogue.SetUp(Activator, "Catalogue", typeof(Catalogue), _uiFactory,
new ExecuteCommandCreateNewCatalogueByImportingFileUI(_activator)
{
OverrideCommandName = GlobalStrings.FromFile
Expand All @@ -50,10 +54,15 @@ private void BuildCommandLists()
{
OverrideCommandName = GlobalStrings.FromDatabase
});
boxProject.SetUp(Activator, "Project", typeof(Project), _uiFactory,
}
if (singularRefreshType is null || singularRefreshType == typeof(Project))
{
boxProject.SetUp(Activator, "Project", typeof(Project), _uiFactory,
new ExecuteCommandCreateNewDataExtractionProject(_activator));

boxCohort.SetUp(Activator, "Cohort Builder", typeof(CohortIdentificationConfiguration), _uiFactory,
}
if (singularRefreshType is null || singularRefreshType == typeof(CohortIdentificationConfiguration))
{
boxCohort.SetUp(Activator, "Cohort Builder", typeof(CohortIdentificationConfiguration), _uiFactory,
new ExecuteCommandCreateNewCohortIdentificationConfiguration(_activator)
{
OverrideCommandName = "Cohort Builder Query",
Expand All @@ -64,23 +73,29 @@ private void BuildCommandLists()
OverrideCommandName = GlobalStrings.FromFile
}
);
boxDataLoad.SetUp(Activator, "Data Load", typeof(LoadMetadata), _uiFactory,
}
if (singularRefreshType is null || singularRefreshType == typeof(LoadMetadata))
{
boxDataLoad.SetUp(Activator, "Data Load", typeof(LoadMetadata), _uiFactory,
new ExecuteCommandCreateNewLoadMetadata(_activator));
}
}

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);

SetItemActivator(_activator);

_activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Catalogue).ToString());
_activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Project).ToString());
_activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(CohortIdentificationConfiguration).ToString());
_activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(LoadMetadata).ToString());
BuildCommandLists();

//_activator.RefreshBus.EstablishLifetimeSubscription(this);
}

public void RefreshBus_RefreshObject(object sender, RefreshObjectEventArgs e)
{
BuildCommandLists();

BuildCommandLists(e.Object);
}
}
1 change: 0 additions & 1 deletion Rdmp.UI/CohortUI/ExtractableCohortCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ public void SetupForAllCohorts(IActivateItems activator)
{
if (!haveSubscribed)
{
//activator.RefreshBus.EstablishLifetimeSubscription(this);
activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(ExtractableCohort).ToString());
activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(ExternalCohortTable).ToString());
haveSubscribed = true;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 1 addition & 6 deletions Rdmp.UI/Collections/CohortIdentificationCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace Rdmp.UI.Collections;
/// INTERSECT, EXCEPT) for example Cohort Set 1 '3+ diabetes drug prescriptions' UNION 'hospital admissions for amputations'. Cohort sets can be from the same or different data sets (as
/// long as they have a common identifier).
/// </summary>
public partial class CohortIdentificationCollectionUI : RDMPCollectionUI, ILifetimeSubscriber
public partial class CohortIdentificationCollectionUI : RDMPCollectionUI
{
private bool _firstTime = true;

Expand Down Expand Up @@ -98,8 +98,6 @@ public override void SetItemActivator(IActivateItems activator)
new ExecuteCommandMergeCohortIdentificationConfigurations(a, null)
};

//Activator.RefreshBus.EstablishLifetimeSubscription(this);

var factory = new AtomicCommandUIFactory(activator);

CommonFunctionality.Add(
Expand Down Expand Up @@ -142,9 +140,6 @@ root is FolderNode<CohortIdentificationConfiguration> f
? f.Name == FolderHelper.Root
: root is AllOrphanAggregateConfigurationsNode or AllTemplateAggregateConfigurationsNode;

public void RefreshBus_RefreshObject(object sender, RefreshObjectEventArgs e)
{
}

private string FrozenAspectGetter(object o) =>
o is CohortIdentificationConfiguration cic ? cic.Frozen ? "Yes" : "No" : null;
Expand Down
1 change: 0 additions & 1 deletion Rdmp.UI/Collections/ConfigurationsCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ public override void SetItemActivator(IActivateItems activator)
CommonTreeFunctionality.SetUp(RDMPCollection.Configurations, tlvConfigurations, activator, olvName, olvName,
new RDMPCollectionCommonFunctionalitySettings());
CommonTreeFunctionality.WhitespaceRightClickMenuCommandsGetter = e => GetWhitespaceRightClickMenu();
//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Dataset).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(RegexRedactionConfiguration).ToString());

Expand Down
6 changes: 5 additions & 1 deletion Rdmp.UI/Collections/DataExportCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using Rdmp.Core.CommandExecution.AtomicCommands.CatalogueCreationCommands;
using Rdmp.Core.CommandExecution.AtomicCommands.CohortCreationCommands;
using Rdmp.Core.Curation.Data;
using Rdmp.Core.Curation.Data.Cohort;
using Rdmp.Core.DataExport.Data;
using Rdmp.Core.Icons.IconProvision;
using Rdmp.Core.Providers;
Expand Down Expand Up @@ -121,7 +122,10 @@ public override void SetItemActivator(IActivateItems activator)

SetupToolStrip();

//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Project).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(CohortIdentificationConfiguration).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Catalogue).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(ExternalCohortTable).ToString());

}

Expand Down
1 change: 0 additions & 1 deletion Rdmp.UI/Collections/FavouritesCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ public override void SetItemActivator(IActivateItems activator)
new ExecuteCommandAddFavourite(a),
new ExecuteCommandClearFavourites(a)
};
//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Favourite).ToString());


Expand Down
1 change: 0 additions & 1 deletion Rdmp.UI/Collections/LoadMetadataCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ public LoadMetadataCollectionUI()
public override void SetItemActivator(IActivateItems activator)
{
base.SetItemActivator(activator);
//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(LoadMetadata).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(PermissionWindow).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(CacheProgress).ToString());
Expand Down
14 changes: 12 additions & 2 deletions Rdmp.UI/Collections/RDMPCollectionCommonFunctionality.cs
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,16 @@ public void SetUp(RDMPCollection collection, TreeListView tree, IActivateItems a
Collection = collection;
IsSetup = true;
_activator = activator;
//_activator.RefreshBus.Subscribe(this);
switch (collection)
{
case RDMPCollection.Catalogue:
_activator.RefreshBus.Subscribe(this, typeof(Catalogue).ToString());
break;
//todo the rest
default:
break;
}
//_activator.RefreshBus.Subscribe(this, collection.ToString());//todo check this is right

RepositoryLocator = _activator.RepositoryLocator;
Filter = filter;
Expand Down Expand Up @@ -927,7 +936,8 @@ public void TearDown()
{
if (IsSetup)
{
//_activator.RefreshBus.Unsubscribe(this);
_activator.RefreshBus.Unsubscribe(this, Collection.ToString());//todo check this is right

_activator.Emphasise -= _activator_Emphasise;
}
}
Expand Down
2 changes: 1 addition & 1 deletion Rdmp.UI/Collections/SavedCohortsCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public override void SetItemActivator(IActivateItems activator)

SetupToolStrip();

//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, RDMPCollection.SavedCohorts.ToString());//to test

CommonTreeFunctionality.SetupColumnTracking(olvName, new Guid("6857032b-4b28-4f92-8b38-f532f11c7a44"));
CommonTreeFunctionality.SetupColumnTracking(olvVersion, new Guid("637fcb62-8395-4b36-a5ce-76ed3194b4e0"));
Expand Down
1 change: 0 additions & 1 deletion Rdmp.UI/Collections/TableInfoCollectionUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ public override void SetItemActivator(IActivateItems activator)
new ExecuteCommandBulkImportTableInfos(a)
};

//Activator.RefreshBus.EstablishLifetimeSubscription(this);
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(DataAccessCredentials).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(Catalogue).ToString());
Activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(TableInfo).ToString());
Expand Down
1 change: 0 additions & 1 deletion Rdmp.UI/ProjectUI/Datasets/ConfigureDatasetUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,6 @@ public override void SetDatabaseObject(IActivateItems activator, SelectedDataSet
{
base.SetDatabaseObject(activator, databaseObject);

//activator.RefreshBus.EstablishLifetimeSubscription(this);
activator.RefreshBus.EstablishLifetimeSubscription(this, typeof(ExtractionInformation).ToString());

SelectedDataSet = databaseObject;
Expand Down
19 changes: 8 additions & 11 deletions Rdmp.UI/Refreshing/RefreshBus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ public void Publish(object sender, RefreshObjectEventArgs e)
private void RefreshSubscriptions(object sender, RefreshObjectEventArgs e)
{
var o = e.Object;
var x = o.GetType().ToString();
//todo
// there are a lof of subscriptions to the wrong type i.e. "dataset" not "rdmp.core.dataset" - fix those
//then check that they all update AS EXPECTED
if (subscribers.TryGetValue(o.GetType().ToString(), out var subs))
{
foreach (var sub in subs)
Expand All @@ -102,9 +106,9 @@ public void Subscribe(IRefreshBusSubscriber subscriber, string typeToWatch)
{
RefreshObject += RefreshSubscriptions;
}
//RefreshObject += subscriber.RefreshBus_RefreshObject;
if (subs is null) subs = new List<IRefreshBusSubscriber>();
subs ??= [];
subs.Add(subscriber);
subscribers[typeToWatch]=subs;
}

public void Unsubscribe(IRefreshBusSubscriber unsubscriber, string typeToWatch)
Expand All @@ -117,11 +121,8 @@ public void Unsubscribe(IRefreshBusSubscriber unsubscriber, string typeToWatch)

}

//RefreshObject -= unsubscriber.RefreshBus_RefreshObject;
if (subs is not null)
{
subs.Remove(unsubscriber);
}
subs?.Remove(unsubscriber);
subscribers[typeToWatch] = subs;
}


Expand All @@ -136,10 +137,6 @@ public void EstablishLifetimeSubscription(ILifetimeSubscriber c, string typeToWa
if (subs.Contains(subscriber)) return;
}

////ignore double requests for subscription
//if (subscribers.Contains(subscriber))
//return;

if (c is not ContainerControl containerControl)
throw new ArgumentOutOfRangeException(nameof(c));

Expand Down
3 changes: 2 additions & 1 deletion Rdmp.UI/SubComponents/CohortIdentificationConfigurationUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ public override void SetDatabaseObject(IActivateItems activator, CohortIdentific

if (_commonFunctionality == null)
{
//activator.RefreshBus.Subscribe(this);
activator.RefreshBus.Subscribe(this, typeof(CohortIdentificationConfiguration).ToString());
//todo this needs the full tree of the CIC
_commonFunctionality = new RDMPCollectionCommonFunctionality();

_commonFunctionality.SetUp(RDMPCollection.Cohort, tlvCic, activator, olvNameCol, olvNameCol,
Expand Down

0 comments on commit 54a2c21

Please sign in to comment.