Free cookie consent management tool by TermsFeed Policy Generator

Changeset 416


Ignore:
Timestamp:
07/31/08 17:42:20 (16 years ago)
Author:
gkronber
Message:

worked on #211 (Full operator-graphs are stored multiple times in the database even though most of it is static anyway)

By introducing a table of operators in the CEDMA database.

Location:
trunk/sources
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj

    r403 r416  
    6262      <SubType>UserControl</SubType>
    6363    </Compile>
     64    <Compile Include="DatabaseOperatorLibrary.cs" />
    6465    <Compile Include="Result.cs" />
    6566    <Compile Include="IResult.cs" />
  • trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/HeuristicLab.CEDMA.DB.Interfaces.csproj

    r390 r416  
    5555  <ItemGroup>
    5656    <Compile Include="AgentEntry.cs" />
     57    <Compile Include="OperatorEntry.cs" />
    5758    <Compile Include="ProcessStatus.cs" />
    5859    <Compile Include="ResultEntry.cs" />
  • trunk/sources/HeuristicLab.CEDMA.DB.Interfaces/IDatabase.cs

    r398 r416  
    4848    long InsertSubResult(long resultId, string summary, string description, byte[] rawData);
    4949
     50    [OperationContract]
     51    long InsertOperator(string name, string rawData);
     52
    5053    // should be replaced by more powerful querying interface (LINQ provider?)
    5154    [OperationContract]
     
    6164    ICollection<ResultEntry> GetSubResults(long parentResultId);
    6265
     66    [OperationContract]
     67    ICollection<OperatorEntry> GetOperators();
     68
    6369  }
    6470}
  • trunk/sources/HeuristicLab.CEDMA.DB/Database.cs

    r408 r416  
    6161            using(DbCommand cmd = cnn.CreateCommand()) {
    6262              cmd.CommandText = "CREATE TABLE Result (ID integer primary key autoincrement, AgentId integer, ParentResultId integer, Summary text, Description text, CreationTime DateTime, RawData Blob)";
     63              cmd.Transaction = t;
     64              cmd.ExecuteNonQuery();
     65            }
     66            using(DbCommand cmd = cnn.CreateCommand()) {
     67              cmd.CommandText = "CREATE TABLE Operator (ID integer primary key autoincrement, Name text, RawData text)";
    6368              cmd.Transaction = t;
    6469              cmd.ExecuteNonQuery();
     
    194199      }
    195200    }
     201
     202    public long InsertOperator(string name, string rawData) {
     203      rwLock.EnterWriteLock();
     204      try {
     205        using(DbConnection cnn = new SQLiteConnection(connectionString)) {
     206          cnn.Open();
     207          long id;
     208          using(DbTransaction t = cnn.BeginTransaction()) {
     209            using(DbCommand c = cnn.CreateCommand()) {
     210              c.Transaction = t;
     211              c.CommandText = "Insert into Operator (Name, RawData) values (@Name, @RawData); select last_insert_rowid()";
     212              DbParameter nameParam = c.CreateParameter();
     213              nameParam.ParameterName = "@Name";
     214              nameParam.Value = name;
     215              c.Parameters.Add(nameParam);
     216              DbParameter dataParam = c.CreateParameter();
     217              dataParam.ParameterName = "@RawData";
     218              dataParam.Value = rawData;
     219              c.Parameters.Add(dataParam);
     220              id = (long)c.ExecuteScalar();
     221            }
     222            t.Commit();
     223            return id;
     224          }
     225        }
     226      } finally {
     227        rwLock.ExitWriteLock();
     228      }
     229    }
    196230    #endregion
    197231
     
    433467      return results;
    434468    }
     469
     470    public ICollection<OperatorEntry> GetOperators() {
     471      rwLock.EnterReadLock();
     472      List<OperatorEntry> operators = new List<OperatorEntry>();
     473      try {
     474        using(DbConnection cnn = new SQLiteConnection(connectionString)) {
     475          cnn.Open();
     476          using(DbCommand c = cnn.CreateCommand()) {
     477            c.CommandText = "Select id, name, rawdata from Operator";
     478            using(DbDataReader r = c.ExecuteReader()) {
     479              while(r.Read()) {
     480                OperatorEntry op = new OperatorEntry();
     481                op.Id = r.GetInt32(0);
     482                op.Name = r.IsDBNull(1) ? "-" : r.GetString(1);
     483                op.RawData = r.GetString(2);
     484                operators.Add(op);
     485              }
     486            }
     487          }
     488        }
     489      } finally {
     490        rwLock.ExitReadLock();
     491      }
     492      return operators;
     493    }
    435494    #endregion
    436495  }
Note: See TracChangeset for help on using the changeset viewer.