/// <summary>
        /// Get OrderChangelog Response and changelogid
        /// </summary>
        /// <param name="datasetId"></param>
        /// <param name="startIndex"></param>
        /// <returns></returns>
        public string OrderChangelog(int datasetId, long startIndex)
        {
            try
            {
                var dataset = SubscriberDatasetManager.GetDataset(datasetId);

                var client = buildClient(dataset);

                var order = new ChangelogOrderType();
                order.datasetId  = dataset.ProviderDatasetId;
                order.count      = dataset.MaxCount.ToString();
                order.startIndex = startIndex.ToString();

                var resp = string.IsNullOrEmpty(dataset.Version)
                    ? client.OrderChangelog(order)
                    : client.OrderChangelog2(order, dataset.Version.Trim());

                if (resp.changelogId == "-1")
                {
                    throw new Exception("Provider reports a datasetVersion that differs from that of the subscriber.\r\nThis may be due to several reasons.\r\nActions needed are emptying the local database, replacing the subscriber dataset with the new version from the provider and finally resynchronizing the dataset.");
                }

                dataset.AbortedChangelogId = resp.changelogId;
                SubscriberDatasetManager.UpdateDataset(dataset);
                return(dataset.AbortedChangelogId);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "OrderChangelog failed:");
                throw;
            }
        }
        private static void ResetDataset(Dataset dataset, long endIndex)
        {
            if (endIndex > 0)
            {
                dataset.LastIndex = endIndex;
            }
            dataset.AbortedEndIndex    = null;
            dataset.AbortedTransaction = null;
            dataset.AbortedChangelogId = null;
            if (!string.IsNullOrEmpty(dataset.AbortedChangelogPath))
            {
                if (File.Exists(dataset.AbortedChangelogPath))
                {
                    File.Delete(dataset.AbortedChangelogPath);
                }

                var changelogDirectory = dataset.AbortedChangelogPath.Replace(".zip", "");

                if (Directory.Exists(changelogDirectory))
                {
                    Directory.Delete(changelogDirectory, true);
                }

                dataset.AbortedChangelogPath = null;
            }
            SubscriberDatasetManager.UpdateDataset(dataset);
        }
        /// <summary>
        /// Get OrderChangelog Response and changelogid
        /// </summary>
        /// <param name="datasetId"></param>
        /// <param name="startIndex"></param>
        /// <returns></returns>
        public string OrderChangelog(int datasetId, long startIndex)
        {
            try
            {
                var dataset = SubscriberDatasetManager.GetDataset(datasetId);

                var client = buildClient(dataset);

                var order = new ChangelogOrderType();
                order.datasetId  = dataset.ProviderDatasetId;
                order.count      = dataset.MaxCount.ToString();
                order.startIndex = startIndex.ToString();

                var resp = client.OrderChangelog(order);

                dataset.AbortedChangelogId = resp.changelogId;
                SubscriberDatasetManager.UpdateDataset(dataset);
                return(dataset.AbortedChangelogId);
            }
            catch (Exception ex)
            {
                Logger.ErrorException("OrderChangelog failed:", ex);
                throw;
            }
        }
        private bool LoopChangeLog(IEnumerable <string> fileList, Dataset dataset, int datasetId,
                                   int progressCounter,
                                   string changelogFilename, long transactionStart)
        {
            var i = 0;

            var status = false;

            XElement changeLog = null;

            foreach (var fileName in fileList)
            {
                if (transactionStart > i)
                {
                    i++;
                    continue;
                }

                changeLog = XElement.Load(fileName);

                dataset.AbortedEndIndex    = GetAbortedEndIndex(changeLog);
                dataset.AbortedTransaction = i;
                if (File.Exists(changelogFilename))
                {
                    dataset.AbortedChangelogPath = changelogFilename;
                }
                else if (File.Exists(changelogFilename + ".zip"))
                {
                    dataset.AbortedChangelogPath = changelogFilename + ".zip";
                }
                else
                {
                    throw new FileNotFoundException("Changelogfile not found at either " + changelogFilename + " or " + changelogFilename + ".zip");
                }

                SubscriberDatasetManager.UpdateDataset(dataset);
                status = DoWfsTransaction(changeLog, datasetId, i + 1);
                if (!status)
                {
                    throw new Exception("WfsTransaction failed");
                }

                OnOrderProcessingChange((progressCounter + 1) * 100);
                ++progressCounter;
                i++;
            }

            if (changeLog != null)
            {
                ResetDataset(dataset, (long)changeLog.Attribute("endIndex"));
            }

            return(status);
        }
Exemple #5
0
        /// <summary>
        ///     Save settings database
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonSave_Click(object sender, EventArgs e)
        {
            try
            {
                var subscriberDatasets = (List <SubscriberDataset>)dgDataset.DataSource;
                foreach (var subscriberDataset in subscriberDatasets)
                {
                    SubscriberDatasetManager.UpdateDataset(subscriberDataset);
                }

                // Fill the cboDatasetName comboBox with the dataset names
                cboDatasetName.SelectedIndex = 0;
                FillComboBoxDatasetName();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
 private static void ResetDataset(SubscriberDataset dataset, long endIndex)
 {
     if (endIndex > 0)
     {
         dataset.LastIndex = endIndex;
     }
     dataset.AbortedEndIndex    = null;
     dataset.AbortedTransaction = null;
     dataset.AbortedChangelogId = null;
     if (!string.IsNullOrEmpty(dataset.AbortedChangelogPath))
     {
         if (File.Exists(dataset.AbortedChangelogPath + ".zip"))
         {
             File.Delete(dataset.AbortedChangelogPath + ".zip");
         }
         else
         {
             File.Delete(dataset.AbortedChangelogPath);
         }
         Directory.Delete(dataset.AbortedChangelogPath, true);
         dataset.AbortedChangelogPath = null;
     }
     SubscriberDatasetManager.UpdateDataset(dataset);
 }