private void AddParentToChildJoins(DbJoin arg) { TableKey childTable = arg.Destination; TableKey parent = null; Dictionary <int, string> localGeneratedJoins = new Dictionary <int, string> ( ); while ((parent = childTable.Parent) != null && (arg.Source != childTable)) { DbJoin join = new DbJoin(parent, childTable); if (!_generatedJoins.ContainsKey(join)) { var joins = _cachedJoins.GetOrAdd(join, GenerateAndAddJoinWithChild); localGeneratedJoins.Add(join, joins.First( )); } childTable = parent; } if (arg.Source == childTable) { Merge(_generatedJoins, localGeneratedJoins); } }
public void TryCopy(IEnumerable <KeyValuePair <string, string> > keyCopies, DateTimeOffset expiry, out HashSet <string> fromKeysWhichDidNotExist, out HashSet <string> toKeysWhichAlreadyExisted, AvailabilityLevel requiredAvailabilityLevel = AvailabilityLevel.SavedToDisk) { var(notExists1, existed1) = _lmdb.WriteAsync(txn => { var notExists = new List <string>(); var existed = new List <string>(); foreach (var fromTo in keyCopies) { var from = new TableKey(fromTo.Key); var to = new TableKey(fromTo.Value); var val = txn.TryGet(_kvTable, from); if (!val.HasValue) { notExists.Add(fromTo.Key); } else if (txn.ContainsKey(_kvTable, to)) { existed.Add(fromTo.Value); } else { txn.Add(_kvTable, to, val.Value); } } return(notExists, existed); }, false).Result; fromKeysWhichDidNotExist = new HashSet <string>(notExists1); toKeysWhichAlreadyExisted = new HashSet <string>(existed1); }
public SingleResultQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IObjectId instance) { TableKey studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName); TableKey seriesTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName); TableKey instanceTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName); QueryBuilder queryBuilder = CreateQueryBuilder( ); SingleValueMatching uidMatching = new SingleValueMatching( ); ColumnInfo metadataColumn = SchemaProvider.GetColumn(instanceTable.Name, StorageDbSchemaProvider.MetadataTable.MetadataColumn); queryBuilder.ProcessColumn(instanceTable, seriesTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SeriesInstanceUID }); queryBuilder.ProcessColumn(instanceTable, studyTable.ModelKeyColumns[0], uidMatching, new string[] { instance.StudyInstanceUID }); queryBuilder.ProcessColumn(instanceTable, instanceTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SOPInstanceUID }); queryBuilder.ProcessColumn(instanceTable, metadataColumn); return(new SingleResultQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(instanceTable)), instanceTable, metadataColumn.ToString( ), CreateMetadata)); //IDbCommand command = CreateCommand ( ) ; //var sopParam = CreateParameter ( "@" + DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn, instance.SOPInstanceUID ) ; // command.CommandText = string.Format ( "SELECT {0} FROM {1} WHERE {2}=@{2}", // DB.Schema.StorageDbSchemaProvider.MetadataTable.MetadataColumn, // DB.Schema.StorageDbSchemaProvider.MetadataTable.TableName, // DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn ) ; //command.Parameters.Add ( sopParam ); //SetConnectionIfNull ( command ) ; //return command ; }
public ObjectHandle CreateObject(TableKey tableKey) { var result = NativeMethods.create_object(this, tableKey, out NativeException ex); ex.ThrowIfNecessary(); return(new ObjectHandle(this, result)); }
public virtual void Sort(IQueryOptions options, TableKey queryLeveTable) { IEnumerable <ColumnInfo> orderByColumns = null; Direction = SortingDirection.ASC; if (queryLeveTable == StorageDbSchemaProvider.StudyTableName) { var studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName); orderByColumns = new ColumnInfo [] { studyTable.KeyColumn }; Direction = SortingDirection.DESC; } else if (queryLeveTable == StorageDbSchemaProvider.SeriesTableName) { orderByColumns = SchemaProvider.GetColumnInfo((uint)DicomTag.SeriesNumber); } if (queryLeveTable == StorageDbSchemaProvider.ObjectInstanceTableName) { orderByColumns = SchemaProvider.GetColumnInfo((uint)DicomTag.InstanceNumber); } if (null != orderByColumns) { SortBy = string.Join(",", orderByColumns.Select(column => (string)column)); } }
public void Test1() { Locks locks = Locks.Instance; TableKey tk1 = new TableKey(1, 1); TableKey tk2 = new TableKey(1, 1); Lockey lock1 = new Lockey(tk1); Lockey lock2 = new Lockey(tk2); Assert.AreEqual(lock1, lock2); Lockey lock1ref = locks.Get(lock1); Assert.IsTrue(lock1ref == lock1); // first Get. self Lockey lock2ref = locks.Get(lock2); Assert.IsTrue(lock2ref == lock1); // second Get. the exist TableKey tk3 = new TableKey(1, 2); Lockey lock3 = new Lockey(tk3); Lockey lock3ref = locks.Get(lock3); Assert.IsTrue(lock3ref == lock3); Assert.IsFalse(lock3ref == lock1); }
public DbJoin(TableKey source, TableKey destination) { Source = source; Destination = destination; _key = GenerateKey(source, destination); }
/* * {0} = @NewPatientKey * {1} = [PatientKey] * {2} = [Patient] * {3} = [PatientId] * {4} = @PatientId * {5} = columns * {6} = values */ public static string GetInsertIntoTable ( TableKey table ) { IList <ColumnInfo> whereColumns = table.ModelKeyColumns; string [] conditions = new string [whereColumns.Count]; string newPrimaryParam = "@New" + table.KeyColumn.Name; string primaryColumn = wrap(table.KeyColumn.Name); string tableName = wrap(table.Name); string whereColumnsString = ""; string columns = "{0}"; string values = "{1}"; if (table.ForeignColumn != null) { columns = table.ForeignColumn.Name + ", " + columns; values = "@New" + table.Parent.KeyColumn.Name + ", " + values; } for (int index = 0; index < whereColumns.Count; index++) { ColumnInfo column = whereColumns[index]; conditions [index] = wrap(column.Name) + " = @" + column.Name; } whereColumnsString = string.Join(" AND ", conditions); return(string.Format(InsertTableFormatted, newPrimaryParam, primaryColumn, tableName, whereColumnsString, columns, values)); }
private Table(TableKey key, string tableName) { Dialect = key.Dialect; ModelType = key.Type; if (tableName.IsNullOrEmpty()) { tableName = GetModelName(ModelType); } Name = tableName.GetAsEscapedSQLName(); var props = key.Type.GetProperties(BindingFlags.Public | BindingFlags.Instance); PropertyToColumns = GetPropertiesToColumnsMappings(props, out HashSet <string> ignoredProperties); PropertyNamesToColumns = PropertyToColumns.ToDictionary(kv => kv.Key.Name, kv => kv.Value); IgnoredProperties = ignoredProperties; Select = Dialect.GetSelectQuery(this); Delete = Dialect.GetDeleteQuery(this); GetKeyProperty(props, out IdentityColumn, out HasIdentityColumn); UpdateAll = Dialect.GetUpdateQuery(this, true); InsertAll = Dialect.GetInsertQuery(this, true); if (HasIdentityColumn) { UpdateIdentity = Dialect.GetUpdateQuery(this, false); InsertIdentity = Dialect.GetInsertQuery(this, false); } }
public Metadata(TableKey tableKey, IRealmObjectHelper helper, IDictionary <string, IntPtr> propertyIndices, ObjectSchema schema) { TableKey = tableKey; Helper = helper; PropertyIndices = new ReadOnlyDictionary <string, IntPtr>(propertyIndices); Schema = schema; }
public override string ObjectName(Table table, TableKey fk = null) { string name = fk == null ? string.Join("And", table.PrimaryKey.Select(c => ToTitleCase(c.ColumnName))) : string.Join("And", fk.Select(c => ToTitleCase(c.ColumnName))); return($"[{table.Schema}].[{table.TableName}_GetByListOf{name}]"); }
internal static Table MakeOrGet <T>(Dialect dialect, string name) { Ensure.NotNull(dialect, nameof(dialect)); var key = new TableKey(typeof(T), dialect, name.GetHashCode()); return(Cache.GetOrAdd(key, k => new Table(k, name))); }
public KvMetadata TryGet(AbstractTransaction txn, TableKey key) { var ret = txn.TryGet(_table, key); return(ret.HasValue ? FromTableValue(ret.Value) : null); }
public ReplicaStatusTable(LightningPersistence lmdb, string tableName, string replicaId) { _lmdb = lmdb; _replicaId = replicaId; _table = _lmdb.OpenTable(tableName); _clockKey = new TableKey(KEY_CLOCK); _countersKey = new TableKey(KEY_COUNTERS); }
public override bool CanPaginate ( QueryBuilder queryBuilder, IQueryOptions options, TableKey queryLeveTable ) { return(null != options && options.Limit > 0); }
private string GetJoinWithChild(TableKey child) { return(string.Format(SqlQueries.Joins.OuterJoinFormattedTemplate, child.Name, child.Parent.Name, child.Parent.KeyColumn.Name, child.ForeignColumn.Name)); //child.Name + _aliasGenerator.Next ( 1000 ) ) ; }
protected virtual QueryBuilder BuildQuery ( IEnumerable <IMatchingCondition> conditions, IQueryOptions options, TableKey queryLeveTable ) { QueryBuilder queryBuilder = CreateQueryBuilder( ); if (null != conditions && conditions.Count( ) > 0) { foreach (var condition in conditions) { if (condition.VR == fo.DicomVR.PN) { List <PersonNameData> pnValues = new List <PersonNameData> ( ); pnValues = condition.GetPNValues( ); foreach (var values in pnValues) { int index = -1; string[] stringValues = values.ToArray( ); List <string> pnConditions = new List <string> ( ); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { var columnValues = new string [] { stringValues[++index] }; queryBuilder.ProcessColumn(queryLeveTable, column, condition, columnValues); } } } else { IList <string> columnValues = GetValues(condition); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { queryBuilder.ProcessColumn(queryLeveTable, column, condition, columnValues); } } } } else { foreach (var column in SchemaProvider.GetTableInfo(queryLeveTable).Columns) { queryBuilder.ProcessColumn(queryLeveTable, column); } } return(queryBuilder); }
/// <summary> /// Creates the table referred by this reference. /// </summary> /// <param name="key">The definition of the key schema for this table. Must contain at least a primary key.</param> /// <param name="provisionType">Type of provisioning (number of read/write operations per second).</param> /// <param name="provisionLoad">Option of provision load (how the number of operations are divided between the read and write throughput).</param> /// <returns>This table reference.</returns> public UnityTask <StorageResponse <TableMetadata> > Create(TableKey key, ProvisionType provisionType, ProvisionLoad provisionLoad) { return(_repository.CreateTable(new TableMetadata { provisionLoad = provisionLoad, provisionType = provisionType, name = TableName, key = key, })); }
static void WriteActionTableValue(Dictionary <TableKey, string> ACTION, int I, char J, string action) { TableKey Key = MakeTableKey(I, J); if (ACTION.ContainsKey(Key) && !ACTION[Key].Equals(action)) { throw new Exception(); // not an LR(1) kind } ACTION[Key] = action; }
protected virtual QueryBuilder BuildQuery ( IEnumerable <IMatchingCondition> conditions, IQueryOptions options, string queryLevel ) { QueryBuilder queryBuilder = CreateQueryBuilder( ); TableKey sourceTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (sourceTable == null) { throw new ArgumentException("querylevel not supported"); } if (null != conditions) { foreach (var condition in conditions) { if (condition.VR == fo.DicomVR.PN) { List <PersonNameData> pnValues = new List <PersonNameData> ( ); pnValues = condition.GetPNValues( ); foreach (var values in pnValues) { int index = -1; string[] stringValues = values.ToArray( ); List <string> pnConditions = new List <string> ( ); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { var columnValues = new string [] { stringValues[++index] }; queryBuilder.ProcessColumn(sourceTable, column, condition, columnValues); } } } else { IList <string> columnValues = GetValues(condition); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { queryBuilder.ProcessColumn(sourceTable, column, condition, columnValues); } } } } return(queryBuilder); }
public override string ObjectName(Table table, TableKey key = null) { if (key == null) { return($"[{table.Schema}].[{table.TableName}_Get]"); } var name = string.Join("And", key.Select(c => c.ColumnName.ToPascalCase())); return($"[{table.Schema}].[{table.TableName}_GetBy{name}]"); }
public void AddJoins(TableKey source, TableKey destination) { if (source == destination) { return; } DbJoin join = new DbJoin(source, destination); CreateJoin(join); }
/// <summary> /// Creates the table referred by this reference with a customized throughput. /// </summary> /// <param name="key">The definition of the key schema for this table. Must contain at least a primary key.</param> /// <param name="throughput">The custom provision to apply.</param> /// <returns>This table reference.</returns> public UnityTask <StorageResponse <TableMetadata> > Create(TableKey key, TableThroughput throughput) { return(_repository.CreateTable(new TableMetadata { throughput = throughput, provisionLoad = ProvisionLoad.Balanced, provisionType = ProvisionType.Custom, name = TableName, key = key, })); }
public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study) { TableKey studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName); QueryBuilder queryBuilder = CreateQueryBuilder( ); ProcessSelectStudy(study, queryBuilder, studyTable, studyTable); return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)), studyTable.Name, studyTable.KeyColumn.Name)); }
public void BuildQuery(IEnumerable <IMatchingCondition> conditions, string queryLevel) { TableKey sourceTable = base.SchemaProvider.GetTableInfo(queryLevel); if (sourceTable == null) { throw new ArgumentException("querylevel not supported"); } if (null != conditions) { _returns = new List <string> ( ); _conditions = new List <string> ( ); _joins = new SqlJoinBuilder( ); foreach (var condition in conditions) { //string[] values = GetValues ( condition ) ; if (condition.VR == DicomVr.PNvr) { List <PersonNameData> pnValues = new List <PersonNameData> ( ); pnValues = condition.GetPNValues( ); foreach (var values in pnValues) { int index = -1; string[] stringValues = values.ToArray( ); List <string> pnConditions = new List <string> ( ); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { var columnValues = new string [] { stringValues[++index] }; ProcessColumn(sourceTable, condition, column, columnValues); } } } else { IList <string> columnValues = GetValues(condition); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { ProcessColumn(sourceTable, condition, column, columnValues); } } } } }
public override string ObjectName(Table table, TableKey key = null) { if (key == null) { return($"[{table.Schema}].[{table.TableName}_TABLE_TYPE]"); } if (key.Count() == 1) { return($"[{table.Schema}].[{key.First().ColumnName.ToUpper()}_TABLE_TYPE]"); } return($"[{table.Schema}].[{key.ConstraintName.ToUpper()}_TABLE_TYPE]"); }
private string GetJoinWithParent(TableKey table) { //{0}=Patient (parent/destination) //{1}=Study (child/source) //{2}=Study_PatientKey (child foriegn) //{3}=PatientKey (parent foriegn) return(string.Format(SqlQueries.Joins.JoinFormattedTemplate, table.Parent.Name, table.Name, table.ForeignColumn.Name, table.Parent.KeyColumn.Name)); }
public void Test1() { TableKey root = new TableKey(1, 1); // 特殊测试,拼凑一个record用来提供需要的信息。 var r = new Record <long, TestBegin.MyBean>(null, 1, bean); bean.InitRootInfo(r.CreateRootInfoIfNeed(root), null); int rc = demo.App.Instance.Zeze.NewProcedure(ProcNest, "ProcNest").Call(); Assert.IsTrue(rc == Procedure.Success); // 最后一个 Call,事务外,bean 已经没法访问事务支持的属性了。直接访问内部变量。 Assert.AreEqual(bean._i, 123); }
public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study) { TableKey studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName); QueryBuilder queryBuilder = CreateQueryBuilder( ); SingleValueMatching uidMatching = new SingleValueMatching( ); queryBuilder.ProcessColumn(studyTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { study.StudyInstanceUID }); return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)), studyTable.Name, studyTable.KeyColumn.Name)); }
public double GetQValue(State state, Action currentPlayerAction, Action opposingPlayerAction) { double currentQValue; var qValueTableKey = new TableKey(state, currentPlayerAction, opposingPlayerAction); if (!_qValues.TryGetValue(qValueTableKey, out currentQValue)) { //Default Q Value is 1.0 currentQValue = 1.0; } return(currentQValue); }
public void TestTableKeyFunctionality() { var list = new[] {TestModel.MakeTestModel(), TestModel.MakeTestModel()}; Func<int, TestModel> getter = i => (from t in list where t.Key.Equals(i) select t).FirstOrDefault(); var key1 = new TableKey<TestModel, int>(list[0].Key, getter); var key2 = new TableKey<TestModel, int>(list[1].Key, getter); Assert.AreEqual(key1.Key, list[0].Key, "Key mismatch."); Assert.AreEqual(key2.Key, list[1].Key, "Key mismatch."); Assert.IsFalse(key1.LazyValue.IsValueCreated, "Lazy model already created."); var testModel1 = key1.LazyValue.Value; Assert.IsTrue(key1.LazyValue.IsValueCreated, "Lazy value created was not set."); Assert.AreSame(list[0], testModel1, "First key returned invalid instance."); Assert.AreSame(list[1], key2.LazyValue.Value, "Second key return invalid instance."); }
public static TableData ReadFromTable(TableKey k) { return TableData.ReconstructFromData(ReadFromTableRaw(k), k.Table); }
static byte[] ReadFromTableRaw(TableKey k) { return table[k]; }
static void WriteToTableRaw(TableKey k, byte[] Data) { table[k] = Data; }
public static void WriteToTable(TableKey k, TableData t) { WriteToTableRaw(k, t.GetBytes()); }