Пример #1
0
        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));
            }
        }
Пример #3
0
 /**
  * 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>());
     }
 }
Пример #4
0
 public UniqueResultOperation(IShardedCriteria shardedCriteria)
 {
     this.shardedCriteria = shardedCriteria;
 }
Пример #5
0
 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;
 }