diff --git a/Config/Entities/Enums.cs b/Config/Entities/Enums.cs
index d4ee6580c..0558d7dcd 100644
--- a/Config/Entities/Enums.cs
+++ b/Config/Entities/Enums.cs
@@ -61,7 +61,22 @@ namespace Config.Entities
Count,
}
- public enum ProcedureState
+ ///
+ /// Contains a procedure name and a database specification (local/remote).
+ ///
+ public class ProcedureInfo
+ {
+ public readonly string Name;
+ public readonly Users.Entities.DBKind DBKind;
+
+ public ProcedureInfo(string name, Users.Entities.DBKind dbKind)
+ {
+ Name = name;
+ DBKind = dbKind;
+ }
+ }
+
+ public enum ProcedureState
{
Active,
History,
diff --git a/Config/FluentCommon.cs b/Config/FluentCommon.cs
index c873c745f..ca8b42f6c 100644
--- a/Config/FluentCommon.cs
+++ b/Config/FluentCommon.cs
@@ -41,7 +41,7 @@ namespace Config
break;
case Users.Entities.DBKind.RemoteConfig:
dbType = Data.CurrentBench.UsersDBSettings.DbType;
- connectionString = Data.CurrentBench.WaterMetersDBSettings.ConnectionString;
+ connectionString = Data.CurrentBench.UsersDBSettings.ConnectionString;
break;
}
diff --git a/TBF/BenchControl/Operations/LoadProcedureOp.cs b/TBF/BenchControl/Operations/LoadProcedureOp.cs
index f21b413fe..591588ea1 100644
--- a/TBF/BenchControl/Operations/LoadProcedureOp.cs
+++ b/TBF/BenchControl/Operations/LoadProcedureOp.cs
@@ -44,7 +44,7 @@ namespace TBF.BenchControl.Operations
{
ISession session = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config);
StateMachine.LoadPathsAndTransitions(session);
- StateMachine.LoadProcedure(session);
+ StateMachine.LoadProcedure(session, TBF.UiBridge.Bridge.SelectedProcedure.Name);
StateMachine.LoadProcedureParams(StateMachine.Procedure);
completed = true;
diff --git a/TBF/BenchControl/Sequences/MainSeq.cs b/TBF/BenchControl/Sequences/MainSeq.cs
index b79f716af..d93e06a4f 100644
--- a/TBF/BenchControl/Sequences/MainSeq.cs
+++ b/TBF/BenchControl/Sequences/MainSeq.cs
@@ -318,58 +318,32 @@ namespace TBF.BenchControl.Sequences
{
StateMachine.LoadPathsAndTransitions(localSession);
}
- }
- catch (Exception) { continue; }
-
- Users.Entities.DBKind[] configDBs;
- ///
- if (BenchInfo == null || BenchInfo.RemoteDBUse == RemoteDBUse.LocalDBOnly)
- {
- configDBs = new Users.Entities.DBKind[] { Users.Entities.DBKind.Config };
- }
- else if (BenchInfo.RemoteDBUse == RemoteDBUse.RemoteDBOnly)
- {
- configDBs = new Users.Entities.DBKind[] { Users.Entities.DBKind.RemoteConfig };
- }
- else if (BenchInfo.RemoteDBUse == RemoteDBUse.BothDBsLocalFirst)
- {
- configDBs = new Users.Entities.DBKind[] { Users.Entities.DBKind.Config, Users.Entities.DBKind.RemoteConfig };
- }
- else if (BenchInfo.RemoteDBUse == RemoteDBUse.BothDBsRemoteFirst)
- {
- configDBs = new Users.Entities.DBKind[] { Users.Entities.DBKind.RemoteConfig, Users.Entities.DBKind.Config };
- }
- else
- {
- configDBs = new Users.Entities.DBKind[] { Users.Entities.DBKind.Config };
- }
-
- ///
- /// Try to load all parameters for the selected procedure from databases as specifie in BenchInfo
- ///
- foreach (var cfgDb in configDBs)
- {
- try
+ ///
+ /// Try to load all parameters for the selected procedure from databases as specifie in BenchInfo
+ ///
+ if ((Bridge.SelectedProcedure != null) && !string.IsNullOrEmpty(Bridge.SelectedProcedure.Name))
{
/// TODO: Repeate twice for Users.Entities.DBKind.Config and Users.Entities.DBKind.RemoteConfig
- using (ISession remoteOrLocalSession = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config))
+ using (ISession remoteOrLocalSession = Config.FluentCommon.CreateSession(Bridge.SelectedProcedure.DBKind))
{
- StateMachine.LoadProcedure(remoteOrLocalSession);
+ StateMachine.LoadProcedure(remoteOrLocalSession, Bridge.SelectedProcedure.Name);
StateMachine.LoadProcedureParams(StateMachine.Procedure);
/// This is to load Procedure.Tests and tets.MoreParams for each test
int a = 0;
foreach (var test in StateMachine.Procedure.Tests) a += test.MoreParams.Count;
}
-
- if (StateMachine.Procedure != null) break;
}
- catch (Exception)
+ else
{
StateMachine.Procedure = null;
}
}
+ catch (Exception)
+ {
+ StateMachine.Procedure = null;
+ }
}
while (StateMachine.Procedure == null); /// Make sure a valid procedure is selected
diff --git a/TBF/BenchControl/StateMachine.cs b/TBF/BenchControl/StateMachine.cs
index d4e41d2ee..87bbec0ae 100644
--- a/TBF/BenchControl/StateMachine.cs
+++ b/TBF/BenchControl/StateMachine.cs
@@ -403,13 +403,13 @@ namespace TBF.BenchControl
/// Loads selected procedure from the DB.
/// Updates StateMachine.Procedure and StateMachine.Tests
///
- public static bool LoadProcedure(ISession session)
+ public static bool LoadProcedure(ISession session, string procedureName)
{
Procedure = null;
IList selectedProcs = session.QueryOver()
.Where(x => (x.ProcedureState == ProcedureState.Active))
- .And(x => (x.Name == TBF.UiBridge.Bridge.SelectedProcedureName))
+ .And(x => (x.Name == procedureName))
.List();
if (selectedProcs.Count != 1) return false;
diff --git a/TBF/LocalSettings.cs b/TBF/LocalSettings.cs
index 97336f746..f227bfb08 100644
--- a/TBF/LocalSettings.cs
+++ b/TBF/LocalSettings.cs
@@ -50,6 +50,7 @@ namespace TBF
///
[XmlElementAttribute("LastProcedure")]
public string LastProcedureName;
+ public Users.Entities.DBKind LastProcedureDB;
public int LastProcedureNr;
public int BatchNr;
diff --git a/TBF/MainWnd.cs b/TBF/MainWnd.cs
index 40e5183d8..64226c968 100644
--- a/TBF/MainWnd.cs
+++ b/TBF/MainWnd.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2018 Sensus Metering Systems
+/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -13,6 +13,9 @@ using System.Threading;
namespace TBF
{
+ ///
+ /// Main program window
+ ///
public partial class MainWnd : Form
{
static readonly ILog log = LogManager.GetLogger(typeof(MainWnd));
@@ -20,7 +23,7 @@ namespace TBF
const string ProcSeparator = " "; /// string separating procedure number and procedure name
public UiControls.BenchControlPanel BenchControlPanel;
- public string ProcedureName;
+ public ProcedureInfo SelectedProcedure;
public Procedure CurrentProcedure;
public bool CycleRunning;
@@ -257,7 +260,8 @@ namespace TBF
}
procedureComboBox.Text = string.Format("{0}{1}{2}", Program.LocalSettings.LastProcedureNr, ProcSeparator, Program.LocalSettings.LastProcedureName);
- ProcedureName = Program.LocalSettings.LastProcedureName;
+ SelectedProcedure = new ProcedureInfo(Program.LocalSettings.LastProcedureName, Program.LocalSettings.LastProcedureDB);
+
rightHorizSplitContainer.SplitterDistance = Program.LocalSettings.RightPaneHorizSplitterDistance;
topVerticalSplitContainer.SplitterDistance = Program.LocalSettings.TopPaneVerticalSplitterDistance;
@@ -286,6 +290,7 @@ namespace TBF
new System.ComponentModel.ComponentResourceManager(typeof(MainWnd)).ApplyResources(BenchControlPanel, "benchControlPanel");
BenchControlPanel.Name = "benchControlPanel";
rightHorizSplitContainer.Panel2.Controls.Add(BenchControlPanel);
+
ReloadProcedureComboBoxItems();
/// Select the initial tab page
@@ -448,50 +453,85 @@ namespace TBF
public void ReloadProcedureComboBoxItems()
{
int separPos = procedureComboBox.Text.IndexOf(ProcSeparator);
- ReloadProcedureComboBoxItems((separPos >= 0) ? procedureComboBox.Text.Substring(separPos + ProcSeparator.Length) : string.Empty);
+ string procName = (separPos >= 0) ? procedureComboBox.Text.Substring(separPos + ProcSeparator.Length) : string.Empty;
+ ReloadProcedureComboBoxItems(procName);
}
public void ReloadProcedureComboBoxItems(string procedureNameToSelect)
{
+ BenchControl.GenericDevices.IBenchInfo benchInfo = BenchControl.Sequences.ProcessData.BenchInfo;
+ RemoteDBUse remoteDbUse = (benchInfo != null) ? benchInfo.RemoteDBUse : RemoteDBUse.LocalDBOnly;
+
+ Users.Entities.DBKind[] dBase;
+ string[] signature;
+ ///
+ switch (remoteDbUse)
+ {
+ default:
+ case RemoteDBUse.LocalDBOnly:
+ dBase = new Users.Entities.DBKind[] { Users.Entities.DBKind.Config };
+ signature = new string[] { "" };
+ break;
+ case RemoteDBUse.RemoteDBOnly:
+ dBase = new Users.Entities.DBKind[] { Users.Entities.DBKind.RemoteConfig };
+ signature = new string[] { "R" };
+ break;
+ case RemoteDBUse.BothDBsLocalFirst:
+ dBase = new Users.Entities.DBKind[] { Users.Entities.DBKind.Config, Users.Entities.DBKind.RemoteConfig };
+ signature = new string[] { "L", "R" };
+ break;
+ case RemoteDBUse.BothDBsRemoteFirst:
+ dBase = new Users.Entities.DBKind[] { Users.Entities.DBKind.RemoteConfig, Users.Entities.DBKind.Config };
+ signature = new string[] { "R", "L" };
+ break;
+ }
+
if (procedureComboBox.Enabled)
{
- IList procedures = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config)
- .QueryOver()
- .Where(x => (x.ProcedureState == ProcedureState.Active))
- .OrderBy(x => x.ItemNr).Asc
- .List();
bool procedureSet = false;
procedureComboBox.Items.Clear();
- foreach (var proc in procedures)
+ IList allProcedures = new List();
+
+ for (int i = 0; i < dBase.Length; i++)
{
- string itemText = string.Format("{0}{1}{2}", proc.ItemNr + 1, ProcSeparator, proc.Name);
- procedureComboBox.Items.Add(itemText);
- if (procedureNameToSelect == proc.Name)
+ IList procedures = Config.FluentCommon.CreateSession(dBase[i])
+ .QueryOver()
+ .Where(x => (x.ProcedureState == ProcedureState.Active))
+ .OrderBy(x => x.ItemNr).Asc
+ .List();
+ foreach (var proc in procedures)
{
- procedureComboBox.Text = itemText;
- ProcedureName = procedureNameToSelect;
- procedureSet = true;
+ string itemText = string.Format("{0}{1}{2}{3}", signature[i], proc.ItemNr + 1, ProcSeparator, proc.Name);
+ procedureComboBox.Items.Add(itemText);
+ if ((procedureNameToSelect == proc.Name) && !procedureSet)
+ {
+ procedureComboBox.Text = itemText;
+ SelectedProcedure = new ProcedureInfo(procedureNameToSelect, dBase[i]);
+ procedureSet = true;
+ }
}
}
if (!procedureSet)
{
- if (procedures.Count > 0)
+ if (allProcedures.Count > 0)
{
- procedureComboBox.Text = string.Format("{0}{1}{2}", procedures[0].ItemNr + 1, ProcSeparator, procedures[0].Name);
- ProcedureName = procedures[0].Name;
+ procedureComboBox.Text = string.Format("{0}{1}{2}", allProcedures[0].ItemNr + 1, ProcSeparator, allProcedures[0].Name);
+ Users.Entities.DBKind dbKind = ((remoteDbUse == RemoteDBUse.BothDBsRemoteFirst) || (remoteDbUse == RemoteDBUse.RemoteDBOnly)) ? Users.Entities.DBKind.RemoteConfig : Users.Entities.DBKind.Config;
+ SelectedProcedure = new ProcedureInfo(allProcedures[0].Name, dbKind);
+ procedureSet = true;
}
else
{
procedureComboBox.Text = string.Empty;
- ProcedureName = null;
+ SelectedProcedure = null;
}
}
ProceduresUpdated = false;
- BenchControlPanel.ReloadTests();
+ if (SelectedProcedure != null) BenchControlPanel.ReloadTests();
}
else
{
@@ -501,16 +541,30 @@ namespace TBF
private void procedureComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
- int ix = procedureComboBox.Text.IndexOf(ProcSeparator);
- int procNr = int.Parse(procedureComboBox.Text.Substring(0, ix));
- string procName = procedureComboBox.Text.Substring(ix + ProcSeparator.Length);
- UpdateProcedure(procNr, procName);
+ int startFrom;
+ Users.Entities.DBKind dbKind;
+ if (!string.IsNullOrEmpty(procedureComboBox.Text) && (procedureComboBox.Text[0] == 'L' || procedureComboBox.Text[0] == 'R'))
+ {
+ startFrom = 1;
+ dbKind = (procedureComboBox.Text[0] == 'L') ? Users.Entities.DBKind.Config : Users.Entities.DBKind.RemoteConfig;
+ }
+ else
+ {
+ startFrom = 0;
+ dbKind = Users.Entities.DBKind.Config;
+ }
+
+ int separPos = procedureComboBox.Text.IndexOf(ProcSeparator);
+
+ int procNr = int.Parse(procedureComboBox.Text.Substring(startFrom, separPos));
+ string procName = procedureComboBox.Text.Substring(separPos + ProcSeparator.Length);
+ UpdateProcedure(procNr, procName, dbKind);
}
- public void UpdateProcedure(int procedureNr, string procedureName)
+ public void UpdateProcedure(int procedureNr, string procedureName, Users.Entities.DBKind dbKind)
{
- ProcedureName = procedureName;
- BenchControlPanel.ReloadTests();
+ SelectedProcedure = new ProcedureInfo(procedureName, dbKind);
+ BenchControlPanel.ReloadTests();
if (CurrentProcedure != null && CurrentProcedure.Description != null)
{
descriptionLabel.Text = CurrentProcedure.Description;
@@ -522,6 +576,7 @@ namespace TBF
if (!string.IsNullOrEmpty(procedureName))
{
Program.LocalSettings.LastProcedureName = procedureName;
+ Program.LocalSettings.LastProcedureDB = dbKind;
Program.LocalSettings.LastProcedureNr = procedureNr;
Program.LocalSettings.Save();
}
diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index b3bd23afe..0d59948e4 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.18.937.0")]
-[assembly: AssemblyFileVersion("2.18.937.0")]
+[assembly: AssemblyVersion("2.18.938.0")]
+[assembly: AssemblyFileVersion("2.18.938.0")]
diff --git a/TBF/UiBridge/Bridge.cs b/TBF/UiBridge/Bridge.cs
index 470adb7c9..6a3960e33 100644
--- a/TBF/UiBridge/Bridge.cs
+++ b/TBF/UiBridge/Bridge.cs
@@ -3,6 +3,7 @@
///
using System;
using System.Collections.Generic;
+using Config.Entities;
using log4net;
namespace TBF.UiBridge
@@ -18,15 +19,9 @@ namespace TBF.UiBridge
public static int BatchNr;
- public static string SelectedProcedureName
- {
- get { return Program.MainWnd.ProcedureName; }
- }
+ public static ProcedureInfo SelectedProcedure { get { return Program.MainWnd.SelectedProcedure; } }
- public static string SelectedTestName
- {
- get { return Program.MainWnd.BenchControlPanel.TestName; }
- }
+ public static string SelectedTestName { get { return Program.MainWnd.BenchControlPanel.TestName; } }
static Bridge()
diff --git a/TBF/UiControls/BenchControlPanel.cs b/TBF/UiControls/BenchControlPanel.cs
index 946d04295..a8b43b693 100644
--- a/TBF/UiControls/BenchControlPanel.cs
+++ b/TBF/UiControls/BenchControlPanel.cs
@@ -160,16 +160,16 @@ namespace TBF.UiControls
/// Read the database and re-initialize testComboBox items.
/// Try to preserve the original selection.
///
- public void ReloadTests()
+ public void ReloadTests()
{
- if (Program.MainWnd.ProcedureName == null) return;
+ if (Program.MainWnd.SelectedProcedure == null || string.IsNullOrEmpty(Program.MainWnd.SelectedProcedure.Name)) return;
string oriTestName = testComboBox.Text;
- IList procedures = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config)
+ IList procedures = Config.FluentCommon.CreateSession(Program.MainWnd.SelectedProcedure.DBKind)
.QueryOver()
.Where(x => (x.ProcedureState == ProcedureState.Active))
- .And(x => (x.Name == Program.MainWnd.ProcedureName))
+ .And(x => (x.Name == Program.MainWnd.SelectedProcedure.Name))
.List();
if (procedures.Count != 1)
{