Exemple #1
0
        /// <summary>
        /// Publish a partitionable message
        /// </summary>
        /// <param name="message">IPartitionable</param>
        public void Publish(IPartitionable message)
        {
            Logger.Info("PPC gateway Message :" );
            Logger.Info(message.SerializeToXML());

            producer.Publish(message, messagingSystem, messagingEnvironment, messagingModuleName, MESSAGING_CONTEXT);
        }
        private void ClonePartitionDescriptor(IPartitionable newObject, IPartitionable oldObject)
        {
            var oldPartitionDescriptor = oldObject.PartitionDescriptor;

            if (oldPartitionDescriptor == null)
            {
                return;
            }

            var column = GetPartitionColumn(newObject, oldPartitionDescriptor);
            var partitionDescriptor = new PartitionDescriptor(newObject, column, oldPartitionDescriptor.PartitionMethod);

            CopyDbName(partitionDescriptor, oldPartitionDescriptor);
            foreach (var oldPartition in oldPartitionDescriptor.Partitions)
            {
                ClonePartition(partitionDescriptor, oldPartition);
            }

            newObject.PartitionDescriptor = partitionDescriptor;
        }
        private TableColumn GetPartitionColumn(IPartitionable newObject, PartitionDescriptor oldPartitionDescriptor)
        {
            var table = newObject as Table;

            if (table != null)
            {
                return(table.TableColumns[oldPartitionDescriptor.Column.Name]);
            }

            var index = newObject as Index;

            if (index != null)
            {
                var tableColumn = index.Columns[oldPartitionDescriptor.Column.Name].Column as TableColumn;
                if (tableColumn != null)
                {
                    return(tableColumn);
                }
                throw new InvalidOperationException(Strings.ExUnableToGetTableColumnInstanceFromIndex);
            }
            throw new ArgumentOutOfRangeException("newObject", Strings.ExUnexpectedTypeOfParameter);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PartitionDescriptor"/> class.
 /// </summary>
 /// <param name="owner">The owner.</param>
 /// <param name="column">The column.</param>
 /// <param name="partitionMethod">The partition method.</param>
 public PartitionDescriptor(IPartitionable owner, TableColumn column, PartitionMethod partitionMethod) : this(owner, column)
 {
     this.partitionMethod = partitionMethod;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PartitionDescriptor"/> class.
 /// </summary>
 /// <param name="owner">The owner.</param>
 /// <param name="column">The column.</param>
 /// <param name="partitionMethod">The partition method.</param>
 /// <param name="partitionAmount">The partition amount.</param>
 public PartitionDescriptor(IPartitionable owner, TableColumn column, PartitionMethod partitionMethod, int partitionAmount) : this(owner, column)
 {
     this.partitionAmount = partitionAmount;
     this.partitionMethod = partitionMethod;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PartitionDescriptor"/> class.
 /// </summary>
 /// <param name="owner">The owner.</param>
 /// <param name="column">The column.</param>
 /// <param name="partitionSchema">The partition schema.</param>
 public PartitionDescriptor(IPartitionable owner, TableColumn column, PartitionSchema partitionSchema) : this(owner, column)
 {
     this.partitionSchema = partitionSchema;
 }
 private PartitionDescriptor(IPartitionable owner, TableColumn column)
 {
     this.owner = owner;
     Column     = column;
     partitions = new PairedNodeCollection <PartitionDescriptor, Partition>(this, "Partitions");
 }