aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs153
1 files changed, 0 insertions, 153 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
deleted file mode 100644
index dfabacfea..000000000
--- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Diagnostics;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-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);
-
- if (typeof(T) != value.GetType())
- {
- return (T)Convert.ChangeType(value, typeof(T));
- }
- else
- {
- return (T)value;
- }
- }
-
- /// <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);
-
- if (typeof(T) != value.GetType())
- {
- return (T)Convert.ChangeType(value, typeof(T));
- }
- else
- {
- return (T)value;
- }
- }
-
- internal void Init(Func<String, Object> getFuncKey, Func<int, Object> getFuncIndex)
- {
- _getFuncKey = getFuncKey;
- _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>();
- Map<T>(obj);
- 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>())
- {
- try
- {
- var columnName = prop.GetCustomAttribute<ColumnAttribute>().Name;
- var value = Get(columnName).ToStringSafe();
- prop.SetValue(obj, Convert.ChangeType(value, prop.PropertyType));
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex);
- }
- }
- }
- }
-}