Exemplo n.º 1
0
        /// <summary>
        /// Returns state of calendar.
        /// </summary>
        /// <param name="calendar">Calendar dummy.</param>
        /// <returns>Success of operation.</returns>
        protected virtual StoringObjectState GetCalendarState(T calendar)
        {
            Entity             entity = GetCalendarEntity();
            StoringObjectState state  = StoringObjectState.New;

            if (entity.FetchFromDB(calendar.Id))
            {
                state = StoringObjectState.Changed;
            }
            return(state);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Applies change.
        /// </summary>
        /// <param name="state">Calendar state.</param>
        /// <param name="calendar">Calendar dummy.</param>
        /// <returns>Success of operation.</returns>
        protected virtual bool ApplyChange(StoringObjectState state, T calendar)
        {
            bool result;

            switch (state)
            {
            case StoringObjectState.New: {
                result = InsertCalendar(calendar);
                break;
            }

            case StoringObjectState.Changed: {
                result = UpdateCalendar(calendar);
                break;
            }

            default:
                return(false);
            }
            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Saves changes of calendar.
        /// </summary>
        /// <param name="calendar">Calendar dummy.</param>
        /// <returns>Success of operation.</returns>
        public bool Save(T calendar)
        {
            if (calendar == null)
            {
                throw new ArgumentNullException("calendar");
            }
            StoringObjectState state = GetCalendarState(calendar);

            using (DBExecutor dbExecutor = _userConnection.EnsureDBConnection()) {
                dbExecutor.StartTransaction();
                try {
                    if (ApplyChange(state, calendar))
                    {
                        dbExecutor.CommitTransaction();
                        return(true);
                    }
                } catch {
                    dbExecutor.RollbackTransaction();
                    throw;
                }
                dbExecutor.RollbackTransaction();
                return(false);
            }
        }