aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Shared
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Shared')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumn.cs28
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumnCollection.cs31
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlDataSet.cs35
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs55
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj4
5 files changed, 153 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumn.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumn.cs
index 328dbb492..54431bdbe 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumn.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumn.cs
@@ -6,19 +6,47 @@ using System.Threading.Tasks;
namespace Tango.PPC.Shared.SQL
{
+ /// <summary>
+ /// Represents a <see cref="RemoteSqlDataSet"/> column.
+ /// </summary>
public class RemoteSqlColumn
{
+ /// <summary>
+ /// Gets or sets the column name.
+ /// </summary>
public String Name { get; set; }
+
+ /// <summary>
+ /// Gets or sets the column index.
+ /// </summary>
public int Index { get; set; }
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RemoteSqlColumn"/> class.
+ /// </summary>
public RemoteSqlColumn()
{
}
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RemoteSqlColumn"/> class.
+ /// </summary>
+ /// <param name="name">The column name.</param>
public RemoteSqlColumn(String name)
{
Name = name;
}
+
+ /// <summary>
+ /// Returns a <see cref="System.String" /> that represents this instance.
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String" /> that represents this instance.
+ /// </returns>
+ public override string ToString()
+ {
+ return Name;
+ }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumnCollection.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumnCollection.cs
index 5358e047b..dfda6c3b7 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumnCollection.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlColumnCollection.cs
@@ -7,15 +7,27 @@ using System.Threading.Tasks;
namespace Tango.PPC.Shared.SQL
{
+ /// <summary>
+ /// Represents a <see cref="RemoteSqlDataSet"/> columns collection.
+ /// </summary>
+ /// <seealso cref="System.Collections.ObjectModel.Collection{Tango.PPC.Shared.SQL.RemoteSqlColumn}" />
public class RemoteSqlColumnCollection : Collection<RemoteSqlColumn>
{
private Dictionary<String, RemoteSqlColumn> _dictionary;
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RemoteSqlColumnCollection"/> class.
+ /// </summary>
public RemoteSqlColumnCollection()
{
_dictionary = new Dictionary<string, RemoteSqlColumn>();
}
+ /// <summary>
+ /// Inserts an element into the <see cref="T:System.Collections.ObjectModel.Collection`1" /> at the specified index.
+ /// </summary>
+ /// <param name="index">The zero-based index at which <paramref name="item" /> should be inserted.</param>
+ /// <param name="item">The object to insert. The value can be null for reference types.</param>
protected override void InsertItem(int index, RemoteSqlColumn item)
{
item.Index = Count;
@@ -23,22 +35,41 @@ namespace Tango.PPC.Shared.SQL
base.InsertItem(index, item);
}
+ /// <summary>
+ /// Removes the element at the specified index of the <see cref="T:System.Collections.ObjectModel.Collection`1" />.
+ /// </summary>
+ /// <param name="index">The zero-based index of the element to remove.</param>
+ /// <exception cref="NotSupportedException"></exception>
protected override void RemoveItem(int index)
{
throw new NotSupportedException();
}
+ /// <summary>
+ /// Removes all elements from the <see cref="T:System.Collections.ObjectModel.Collection`1" />.
+ /// </summary>
protected override void ClearItems()
{
_dictionary.Clear();
base.ClearItems();
}
+ /// <summary>
+ /// Replaces the element at the specified index.
+ /// </summary>
+ /// <param name="index">The zero-based index of the element to replace.</param>
+ /// <param name="item">The new value for the element at the specified index. The value can be null for reference types.</param>
+ /// <exception cref="NotSupportedException"></exception>
protected override void SetItem(int index, RemoteSqlColumn item)
{
throw new NotSupportedException();
}
+ /// <summary>
+ /// Gets the column index by column name.
+ /// </summary>
+ /// <param name="columnName">Column name.</param>
+ /// <returns></returns>
public int GetIndexOf(String columnName)
{
return _dictionary[columnName].Index;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlDataSet.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlDataSet.cs
index 089908e5a..72b8d2eb2 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlDataSet.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlDataSet.cs
@@ -9,17 +9,37 @@ using System.Threading.Tasks;
namespace Tango.PPC.Shared.SQL
{
+ /// <summary>
+ /// Represents remote database query result composed of rows and columns.
+ /// </summary>
+ /// <example>
+ /// <para>
+ /// <i>
+ /// The following example demonstrates how to set the connected machine's demo state and query for the connected machine's jobs.
+ /// </i>
+ /// </para>
+ /// <code lang="C#" source="../Tango.FSE.Procedures/Examples/Sql/Program.cs" title="Remote SQL" region="Example" />
+ /// </example>
public class RemoteSqlDataSet
{
+ /// <summary>
+ /// Gets or sets the dataset columns.
+ /// </summary>
public RemoteSqlColumnCollection Columns { get; set; }
private ObservableCollection<RemoteSqlRow> _rows;
+ /// <summary>
+ /// Gets or sets the dataset rows.
+ /// </summary>
public ObservableCollection<RemoteSqlRow> Rows
{
get { return _rows; }
set { _rows = value; OnRowsChanged(); }
}
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RemoteSqlDataSet"/> class.
+ /// </summary>
public RemoteSqlDataSet()
{
Columns = new RemoteSqlColumnCollection();
@@ -61,6 +81,11 @@ namespace Tango.PPC.Shared.SQL
}
}
+ /// <summary>
+ /// Creates a new <see cref="RemoteSqlDataSet"/> using the specified <see cref="SqlDataReader"/>.
+ /// </summary>
+ /// <param name="reader">The reader.</param>
+ /// <returns></returns>
public static Task<RemoteSqlDataSet> Load(SqlDataReader reader)
{
return Task.Factory.StartNew<RemoteSqlDataSet>(() =>
@@ -100,11 +125,21 @@ namespace Tango.PPC.Shared.SQL
});
}
+ /// <summary>
+ /// Returns a <see cref="System.String" /> that represents this instance.
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String" /> that represents this instance.
+ /// </returns>
public override string ToString()
{
return String.Join(", ", Columns.Select(x => x.Name)) + "\n" + String.Join(Environment.NewLine, Rows.Select(x => x.ToString()));
}
+ /// <summary>
+ /// Formats this dataset as a string with columns and rows.
+ /// </summary>
+ /// <returns></returns>
public String ToTableString()
{
Dictionary<int, int> columnsMaxLength = new Dictionary<int, int>();
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
index bf6b0ba0c..dfabacfea 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
@@ -10,28 +10,61 @@ using Tango.BL.Entities;
namespace Tango.PPC.Shared.SQL
{
+ /// <summary>
+ /// Represents a <see cref="RemoteSqlDataSet"/> row.
+ /// </summary>
+ /// <example>
+ /// <para>
+ /// <i>
+ /// The following example demonstrates how to set the connected machine's demo state and query for the connected machine's jobs.
+ /// </i>
+ /// </para>
+ /// <code lang="C#" source="../Tango.FSE.Procedures/Examples/Sql/Program.cs" title="Remote SQL" region="Example" />
+ /// </example>
public class RemoteSqlRow
{
private Func<String, Object> _getFuncKey;
private Func<int, Object> _getFuncIndex;
+ /// <summary>
+ /// Gets or sets the row values.
+ /// </summary>
public List<Object> Values { get; set; }
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RemoteSqlRow"/> class.
+ /// </summary>
public RemoteSqlRow()
{
Values = new List<object>();
}
+ /// <summary>
+ /// Gets a row value by its column name.
+ /// </summary>
+ /// <param name="columnName">Name of the column.</param>
+ /// <returns>The column value.</returns>
public Object Get(String columnName)
{
return _getFuncKey.Invoke(columnName);
}
+ /// <summary>
+ /// Gets a row value by its column index.
+ /// </summary>
+ /// <param name="columnIndex">Index of the column.</param>
+ /// <returns>The column value.</returns>
public Object Get(int columnIndex)
{
return _getFuncIndex.Invoke(columnIndex);
}
+ /// <summary>
+ /// Gets a row value as type T by its column name.
+ /// </summary>
+ /// <typeparam name="T">Expected column type.</typeparam>
+ /// <param name="columnName">Name of the column.</param>
+ /// <returns>The column value.</returns>
public T Get<T>(String columnName)
{
var value = _getFuncKey.Invoke(columnName);
@@ -46,6 +79,12 @@ namespace Tango.PPC.Shared.SQL
}
}
+ /// <summary>
+ /// Gets a row value by its column index.
+ /// </summary>
+ /// <typeparam name="T">Expected column type</typeparam>
+ /// <param name="columnIndex">Index of the column.</param>
+ /// <returns>The column value.</returns>
public T Get<T>(int columnIndex)
{
var value = _getFuncIndex.Invoke(columnIndex);
@@ -66,11 +105,22 @@ namespace Tango.PPC.Shared.SQL
_getFuncIndex = getFuncIndex;
}
+ /// <summary>
+ /// Returns a <see cref="System.String" /> that represents this instance.
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String" /> that represents this instance.
+ /// </returns>
public override string ToString()
{
return String.Join(", ", Values);
}
+ /// <summary>
+ /// Creates an object of type T and maps this row to it based on its properties decorated with <see cref="ColumnAttribute"/>.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
public T Map<T>() where T : class, new()
{
var obj = Activator.CreateInstance<T>();
@@ -78,6 +128,11 @@ namespace Tango.PPC.Shared.SQL
return obj;
}
+ /// <summary>
+ /// Maps this row to the specified object based on its properties decorated with <see cref="ColumnAttribute"/>.
+ /// </summary>
+ /// <typeparam name="T">Model type</typeparam>
+ /// <param name="obj">The object.</param>
public void Map<T>(T obj) where T : class
{
foreach (var prop in typeof(T).GetPropertiesWithAttribute<ColumnAttribute>())
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj
index 10993399c..a0cc9b153 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj
@@ -22,6 +22,8 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\Build\PPC\Debug\Tango.PPC.Shared.xml</DocumentationFile>
+ <NoWarn>1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -30,6 +32,8 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\Build\PPC\Release\Tango.PPC.Shared.xml</DocumentationFile>
+ <NoWarn>1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />