public ICriteria EstablishCriteria(IShardedCriteria shardedCriteria) { CriteriaId critId = shardedCriteria.CriteriaId; ICriteria crit = null; if (criteriaMap.Keys.Contains(critId)) { crit = criteriaMap[critId]; } if (crit == null) { crit = shardedCriteria.CriteriaFactory.CreateCriteria(EstablishSession()); criteriaMap.Add(critId, crit); ICollection <ICriteriaEvent> critEvents = null; if (criteriaEventMap.Keys.Contains(critId)) { critEvents = criteriaEventMap[critId]; } if (critEvents != null) { foreach (ICriteriaEvent critEvent in critEvents) { critEvent.OnEvent(crit); } critEvents.Clear(); } } return(crit); }
private void Add(string key, IShardedCriteria shardedCriteria, Func <IList> resultFactory) { entries.Add(new CriteriaEntry(key, shardedCriteria, resultFactory)); foreach (var pair in this.establishedMultiCriteriaByShard) { pair.Value.Add(key, shardedCriteria.EstablishFor(pair.Key)); } }
/** * Construct a ShardedSubcriteriaImpl * * @param shards the shards that we're aware of * @param parent our parent */ public ShardedSubcriteriaImpl(IList <IShard> shards, IShardedCriteria parent) { Preconditions.CheckNotNull(shards); Preconditions.CheckNotNull(parent); Preconditions.CheckArgument(!(shards.Count == 0)); this.shards = shards; this.parent = parent; //let's set up our maps foreach (IShard shard in shards) { shardToCriteriaMap.Add(shard, null); shardToEventListMap.Add(shard, new List <ICriteriaEvent>()); } }
public UniqueResultOperation(IShardedCriteria shardedCriteria) { this.shardedCriteria = shardedCriteria; }
public ListShardOperation(IShardedCriteria shardedCriteria) { this.shardedCriteria = shardedCriteria; }
public CriteriaEntry(string key, IShardedCriteria shardedCriteria, Func <IList> resultFactory) { this.Key = key; this.ShardedCriteria = shardedCriteria; this.resultFactory = resultFactory; }