Пример #1
0
 /// <summary>
 /// Charge dans une collection tous les beans pour un type suivant
 /// une liste de critères donnés.
 /// </summary>
 /// <param name="collection">Collection à charger.</param>
 /// <param name="criteria">Liste des critères.</param>
 /// <param name="queryParameter">Paramètres de tri et de limite (vide par défaut).</param>
 public virtual void LoadAllByCriteria(ICollection <T> collection, FilterCriteria criteria, QueryParameter queryParameter = null)
 {
     using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
         _store.LoadAllByCriteria(collection, criteria, queryParameter);
         tx.Complete();
     }
 }
Пример #2
0
 /// <summary>
 /// Retourne un bean à partir d'un critère de recherche.
 /// </summary>
 /// <param name="destination">Bean à charger.</param>
 /// <param name="criteria">Le critère de recherche.</param>
 /// <exception cref="NotSupportedException">Si la recherche renvoie plus d'un élément.</exception>
 public virtual void LoadByCriteria(T destination, FilterCriteria criteria)
 {
     using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
         T value = _store.LoadByCriteria(destination, criteria);
         tx.Complete();
     }
 }
Пример #3
0
        /// <summary>
        /// Execution de l'intercepteur.
        /// </summary>
        /// <param name="input">Paramètres d'appel de la méthode cible.</param>
        /// <param name="getNext">Delegate à invoquer pour appeler le prochain handler de la chaine.</param>
        /// <returns>Valeur de retour de la cible.</returns>
        public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

            if (getNext == null)
            {
                throw new ArgumentNullException("getNext");
            }

            if (Transaction.Current != null)
            {
                return(getNext()(input, getNext));
            }

            TransactionFlowAttribute[] attrs = (TransactionFlowAttribute[])input.MethodBase.GetCustomAttributes(typeof(TransactionFlowAttribute), true);
            if (Transaction.Current == null && (attrs.Length != 0 && attrs[0].Transactions == TransactionFlowOption.NotAllowed))
            {
                return(getNext()(input, getNext));
            }

            IMethodReturn retValue;

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                retValue = getNext()(input, getNext);
                if (retValue.Exception == null && tx != null && Transaction.Current.TransactionInformation.Status != TransactionStatus.Aborted)
                {
                    tx.Complete();
                }
            }

            return(retValue);
        }
Пример #4
0
 /// <summary>
 /// Retourne un bean à partir d'un critère de recherche.
 /// </summary>
 /// <param name="criteria">Le critère de recherche.</param>
 /// <returns>Bean.</returns>
 /// <exception cref="CollectionBuilderException">Si la recherche renvoie plus d'un élément.</exception>
 /// <exception cref="CollectionBuilderException">Si la recherche ne renvoit pas d'élément.</exception>
 public virtual T GetByCriteria(FilterCriteria criteria)
 {
     using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
         T value = _store.LoadByCriteria(null, criteria);
         tx.Complete();
         return(value);
     }
 }
Пример #5
0
        /// <summary>
        /// Retourne tous les beans pour un type suivant
        /// une liste de critères donnés.
        /// </summary>
        /// <param name="criteria">Critères de sélection.</param>
        /// <param name="queryParameter">Paramètres de tri et de limite (vide par défaut).</param>
        /// <returns>Collection.</returns>
        public virtual ICollection <T> GetAllByCriteria(FilterCriteria criteria, QueryParameter queryParameter = null)
        {
            ICollection <T> coll;

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                coll = _store.LoadAllByCriteria(null, criteria, queryParameter);
                tx.Complete();
            }

            return(coll);
        }
Пример #6
0
        /// <summary>
        /// Charge dans un objet le bean à partir de sa clef primaire.
        /// </summary>
        /// <param name="destination">Objet à charger.</param>
        /// <param name="primaryKey">Valeur de la clef primaire.</param>
        public virtual void Load(T destination, object primaryKey)
        {
            if (primaryKey == null)
            {
                throw new ArgumentNullException("primaryKey");
            }

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                _store.Load(destination, primaryKey);
                tx.Complete();
            }
        }
Пример #7
0
        /// <summary>
        /// Insére l'ensemble des éléments.
        /// </summary>
        /// <param name="values">Valeurs à insérer.</param>
        /// <returns>Valeurs insérées.</returns>
        public ICollection <T> InsertAll(ICollection <T> values)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                ICollection <T> result = _store.PutAll(values);
                tx.Complete();
                return(result);
            }
        }
Пример #8
0
        /// <summary>
        /// Supprime un bean à partir de sa clef primaire.
        /// </summary>
        /// <param name="primaryKey">Clef primaire de l'objet.</param>
        public virtual void Delete(object primaryKey)
        {
            if (primaryKey == null)
            {
                throw new ArgumentNullException("primaryKey");
            }

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                _store.Remove(primaryKey);
                tx.Complete();
            }

            if (_hasCache)
            {
                FlushCache();
            }
        }
Пример #9
0
        /// <summary>
        /// Sauvegarde l'ensemble des éléments d'une association n-n.
        /// </summary>
        /// <param name="values">Les valeurs à ajouter via associations.</param>
        /// <param name="columnSelector">Sélecteur de colonnes à mettre à jour.</param>
        /// <exception cref="ArgumentException">Si la collection n'est pas composée d'objets implémentant l'interface IBeanState.</exception>
        public virtual void SaveAll(ICollection <T> values, ColumnSelector columnSelector = null)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }

            BeanPropertyDescriptor primaryKey = BeanDescriptor.GetDefinition(typeof(T), true).PrimaryKey;

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                if (typeof(IBeanState).IsAssignableFrom(typeof(T)))
                {
                    foreach (T value in values)
                    {
                        switch (((IBeanState)value).State)
                        {
                        case ChangeAction.Insert:
                        case ChangeAction.Update:
                            _store.Put(value, columnSelector);
                            break;

                        case ChangeAction.Delete:
                            _store.Remove(primaryKey.GetValue(value));
                            break;

                        default:
                            break;
                        }
                    }
                }
                else
                {
                    foreach (T value in values)
                    {
                        _store.Put(value, columnSelector);
                    }
                }

                tx.Complete();
            }

            if (_hasCache)
            {
                FlushCache();
            }
        }
Пример #10
0
        /// <summary>
        /// Supprimé tous les objets correspondant aux critères.
        /// </summary>
        /// <param name="criteria">Critères de suppression.</param>
        public virtual void DeleteAllByCriteria(FilterCriteria criteria)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException("criteria");
            }

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                _store.RemoveAllByCriteria(criteria);
                tx.Complete();
            }

            if (_hasCache)
            {
                FlushCache();
            }
        }
Пример #11
0
        /// <summary>
        /// Sauvegarde un bean.
        /// </summary>
        /// <param name="bean">Bean à enregistrer.</param>
        /// <param name="columnSelector">Selecteur de colonnes à mettre à jour ou ignorer.</param>
        /// <returns>Clef primaire.</returns>
        public virtual object Save(T bean, ColumnSelector columnSelector)
        {
            if (bean == null)
            {
                throw new ArgumentNullException("bean");
            }

            object primaryKey;

            using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) {
                primaryKey = _store.Put(bean, columnSelector);
                tx.Complete();
            }

            if (_hasCache)
            {
                FlushCache();
            }

            return(primaryKey);
        }