bingo/sqlserver/Source/BingoConfig.cs (84 lines of code) (raw):
using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
namespace indigo
{
class BingoConfig
{
public class TautomerRule
{
public int n;
public string beg;
public string end;
}
private static object get (SqlConnection connection, string bingo_schema,
string name, int id, string table)
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = connection;
cmd.CommandText = String.Format(
@"select value from {0}.{1} where name='{2}' and n in (0, {3}) order by n desc",
bingo_schema, table, name, id);
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 3600;
object result = cmd.ExecuteScalar();
if (result == null)
throw new Exception("Key " + name + " isn't present in the configuration table");
return result;
}
}
private static object _set (SqlConnection connection, string bingo_schema,
string name, int id, string table, object value)
{
_remove(connection, bingo_schema, name, id, table);
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = connection;
cmd.CommandTimeout = 3600;
cmd.CommandText = String.Format(
@"insert into {0}.{1} values({2}, '{3}', @data)",
bingo_schema, table, id, name);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@data", value);
return cmd.ExecuteScalar();
}
}
public static int getInt (SqlConnection connection, string bingo_schema, string name, int id)
{
object res = get(connection, bingo_schema, name, id, "CONFIG");
return Convert.ToInt32(res);
}
public static double getDouble (SqlConnection connection, string bingo_schema, string name, int id)
{
object res = get(connection, bingo_schema, name, id, "CONFIG");
return Convert.ToDouble(res);
}
public static string getString (SqlConnection connection, string bingo_schema, string name, int id)
{
object res = get(connection, bingo_schema, name, id, "CONFIG");
return Convert.ToString(res);
}
public static byte[] getBinary (SqlConnection connection, string bingo_schema, string name, int id)
{
object res = get(connection, bingo_schema, name, id, "CONFIG_BIN");
return (byte[])res;
}
public static void setBinary (SqlConnection connection, string bingo_schema,
string name, int id, byte[] data)
{
_set(connection, bingo_schema, name, id, "CONFIG_BIN", data);
}
public static void setInt (SqlConnection connection, string bingo_schema,
string name, int id, int data)
{
remove(connection, bingo_schema, name, id);
_set(connection, bingo_schema, name, id, "CONFIG", data);
}
public static void _remove (SqlConnection connection, string bingo_schema, string name, int id, string table)
{
BingoSqlUtils.ExecNonQueryNoThrow(connection, "DELETE FROM {0}.{1} where name='{2}' and n={3}",
bingo_schema, table, name, id);
}
public static void remove (SqlConnection connection, string bingo_schema, string name, int id)
{
_remove(connection, bingo_schema, name, id, "CONFIG");
}
public static void removeBinary (SqlConnection connection, string bingo_schema, string name, int id)
{
_remove(connection, bingo_schema, name, id, "CONFIG_BIN");
}
public static ArrayList getTautomerRules (SqlConnection connection, string bingo_schema)
{
ArrayList result = new ArrayList();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandText = String.Format(@"select id, begg, endd from
{0}.TAUTOMER_RULES", bingo_schema);
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 3600;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
TautomerRule rule = new TautomerRule();
rule.n = Convert.ToInt32(reader[0]);
rule.beg = Convert.ToString(reader[1]);
rule.end = Convert.ToString(reader[2]);
result.Add(rule);
}
}
return result;
}
}
}