Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/14/09 11:13:52 (15 years ago)
Author:
gkronber
Message:

Fixed a bug in the s-expression exporter. Improved exporter UI. #715 & #719

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CEDMA-Exporter-715/tools/CedmaExporter/CedmaExporterForm.cs

    r2228 r2286  
    77using System.Text;
    88using System.Windows.Forms;
     9using System.IO;
     10using SemWeb;
     11using HeuristicLab.Core;
     12using HeuristicLab.DataAnalysis;
    913
    1014namespace CedmaExporter {
    1115  public partial class CedmaExporterForm : Form {
    12 
     16    private BackgroundWorker worker;
    1317    public CedmaExporterForm() {
    1418      InitializeComponent();
     19    }
    1520
     21    private void exportButton_Click(object sender, EventArgs e) {
    1622      var dialog = new OpenFileDialog();
    1723      DialogResult result;
    18       do {
    19         result = dialog.ShowDialog();
    20         if (result == DialogResult.OK) {
    21           string fileName = dialog.FileName;
    22           CedmaExporter.Export(fileName, fileName.Replace(".db3", "") + ".txt");
     24      result = dialog.ShowDialog();
     25      if (result == DialogResult.OK) {
     26        string fileName = dialog.FileName;
     27        exportButton.Enabled = false;
     28        cancelButton.Enabled = true;
     29        worker = new BackgroundWorker();
     30        worker.WorkerReportsProgress = true;
     31        worker.WorkerSupportsCancellation = true;
     32        worker.DoWork += CreateWorkerDelegate(worker, fileName);
     33        worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
     34        worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
     35        worker.RunWorkerAsync();
     36      }
     37    }
     38
     39    private DoWorkEventHandler CreateWorkerDelegate(BackgroundWorker worker, string fileName) {
     40      return (sender, args) => {
     41        string inputFileName = fileName;
     42        string outputFileName = fileName.Replace(".db3", "") + ".txt";
     43        string rdfConnectionString = "sqlite:rdf:Data Source=\"" + inputFileName + "\"";
     44        using (StreamWriter writer = File.CreateText(outputFileName)) {
     45          using (Store store = Store.Create(rdfConnectionString)) {
     46            var dsEntities = store.SelectSubjects(Ontology.InstanceOf, Ontology.TypeDataSet);
     47            HeuristicLab.CEDMA.Core.Problem prob = (HeuristicLab.CEDMA.Core.Problem)PersistenceManager.RestoreFromGZip(Convert.FromBase64String(((Literal)store.SelectObjects(dsEntities[0], Ontology.SerializedData)[0]).Value));
     48            Dataset ds = prob.Dataset;
     49            CedmaExporter.WriteColumnHeaders(writer);
     50            List<string> inputVariables = CedmaExporter.WriteVariableImpactHeaders(store, writer);
     51            writer.WriteLine();
     52            var subjects = store.SelectSubjects(new Entity(Ontology.InstanceOf.Uri), new Entity(Ontology.TypeModel.Uri));
     53            int i = 0;
     54            var exporter = new ModelExporter(ds, Path.GetDirectoryName(outputFileName), false);
     55            foreach (var model in subjects) {
     56              CedmaExporter.WriteModel(model, ++i, store, writer, inputVariables, exporter);
     57              worker.ReportProgress((i * 100) / subjects.Count());
     58              if (worker.CancellationPending) return;
     59            }
     60          }
    2361        }
    24       } while (result != DialogResult.Cancel);
    25       Application.Exit();
     62      };
     63    }
     64
     65    void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
     66      exportButton.Enabled = true;
     67      cancelButton.Enabled = false;
     68      progressBar.Value = 0;
     69    }
     70
     71    void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
     72      progressBar.Value = e.ProgressPercentage;
     73    }
     74
     75    private void cancelButton_Click(object sender, EventArgs e) {
     76      worker.CancelAsync();
    2677    }
    2778  }
Note: See TracChangeset for help on using the changeset viewer.