public void RunApplication(string[] args) { using (IUpdateContext updateContext = PersistentStore.OpenUpdateContext(UpdateContextSyncMode.Flush)) { IPartitionArchiveEntityBroker partitionBroker = updateContext.GetBroker<IPartitionArchiveEntityBroker>(); PartitionArchiveSelectCriteria partitionCriteria = new PartitionArchiveSelectCriteria(); partitionCriteria.Enabled.EqualTo(true); partitionCriteria.ReadOnly.EqualTo(false); PartitionArchive activePartition = partitionBroker.FindOne(partitionCriteria); if (activePartition == null) { Platform.Log(LogLevel.Error, "No active ArchivePartition were found."); return; } partitionCriteria.ReadOnly.EqualTo(true); IList<ServerEntityKey> partitionKeys = new List<ServerEntityKey>(); foreach (PartitionArchive partition in partitionBroker.Find(partitionCriteria)) { partitionKeys.Add(partition.Key); } IArchiveQueueEntityBroker queueBroker = updateContext.GetBroker<IArchiveQueueEntityBroker>(); ArchiveQueueSelectCriteria queueCriteria = new ArchiveQueueSelectCriteria(); queueCriteria.ArchiveQueueStatusEnum.In(new ArchiveQueueStatusEnum[] { ArchiveQueueStatusEnum.Failed, ArchiveQueueStatusEnum.Pending }); queueCriteria.PartitionArchiveKey.In(partitionKeys); ArchiveQueueUpdateColumns queueColumns = new ArchiveQueueUpdateColumns() { PartitionArchiveKey = activePartition.Key, ArchiveQueueStatusEnum = ArchiveQueueStatusEnum.Pending, ProcessorId = "", ScheduledTime = Platform.Time }; if (queueBroker.Update(queueCriteria, queueColumns)) { updateContext.Commit(); } } }
public bool ResetArchiveQueueItem(IList<ArchiveQueue> items, DateTime time) { if (items == null || items.Count == 0) return false; ArchiveQueueUpdateColumns columns = new ArchiveQueueUpdateColumns(); columns.ArchiveQueueStatusEnum = ArchiveQueueStatusEnum.Pending; columns.ProcessorId = ""; columns.ScheduledTime = time; bool result = true; IPersistentStore store = PersistentStoreRegistry.GetDefaultStore(); using (IUpdateContext ctx = store.OpenUpdateContext(UpdateContextSyncMode.Flush)) { IArchiveQueueEntityBroker archiveQueueBroker = ctx.GetBroker<IArchiveQueueEntityBroker>(); foreach (ArchiveQueue item in items) { // Only do an update if its a failed status currently ArchiveQueueSelectCriteria criteria = new ArchiveQueueSelectCriteria(); criteria.ArchiveQueueStatusEnum.EqualTo(ArchiveQueueStatusEnum.Failed); criteria.StudyStorageKey.EqualTo(item.StudyStorageKey); if (!archiveQueueBroker.Update(criteria, columns)) { result = false; break; } } if (result) ctx.Commit(); } return result; }
static public ArchiveQueue Insert(IUpdateContext update, ArchiveQueue entity) { var broker = update.GetBroker<IArchiveQueueEntityBroker>(); var updateColumns = new ArchiveQueueUpdateColumns(); updateColumns.PartitionArchiveKey = entity.PartitionArchiveKey; updateColumns.ScheduledTime = entity.ScheduledTime; updateColumns.StudyStorageKey = entity.StudyStorageKey; updateColumns.ArchiveQueueStatusEnum = entity.ArchiveQueueStatusEnum; updateColumns.ProcessorId = entity.ProcessorId; updateColumns.FailureDescription = entity.FailureDescription; ArchiveQueue newEntity = broker.Insert(updateColumns); return newEntity; }