Index: /branches/DataAnalysisCSVImport/Build.cmd
===================================================================
--- /branches/DataAnalysisCSVImport/Build.cmd	(revision 8701)
+++ /branches/DataAnalysisCSVImport/Build.cmd	(revision 8701)
@@ -0,0 +1,94 @@
+@ECHO OFF
+
+SET CLEANBEFOREBUILD=0
+
+SET SELECTED=
+SET CONFIGURATION=
+SET PLATFORM=
+
+IF "%~1"=="" GOTO :prompt_solution
+
+SET SELECTED=%1
+IF NOT EXIST %SELECTED% (
+  ECHO Solution file %SELECTED% could not be found.
+  GOTO :end
+)
+ECHO Building solution %SELECTED% ...
+GOTO :config_selection
+
+:prompt_solution
+SET /A COUNT=0
+FOR /F "tokens=*" %%A IN ('dir /B *.sln') DO (
+  CALL :forloopbody "%%A"
+)
+
+IF "%COUNT%"=="1" (
+  SET SELECTED=%SOLUTIONS.1%
+  ECHO Building %SOLUTIONS.1% as it is the only solution that was found ...
+  GOTO :config_selection
+)
+
+ECHO Found the following solutions:
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO ECHO %%A = %%B
+ECHO.
+SET /P SOLUTIONINDEX=Which solution to build? Type the number: 
+
+SET SELECTED=""
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO (
+  IF "%%A"=="%SOLUTIONINDEX%" SET SELECTED=%%B
+)
+
+IF %SELECTED%=="" GOTO :eof
+
+:config_selection
+IF "%~2"==""  GOTO :prompt_config
+
+SET CONFIGURATION=%~2
+ECHO Building configuration %CONFIGURATION% ...
+GOTO :platform_selection
+
+:prompt_config
+SET /P CONFIGURATION=Which configuration to build [Release]: 
+IF "%CONFIGURATION%"=="" SET CONFIGURATION=Release
+
+:platform_selection
+IF "%~3"=="" GOTO :prompt_platform
+  
+SET PLATFORM=%~3
+ECHO Building platform %PLATFORM% ...
+GOTO :main
+
+:prompt_platform
+SET /P PLATFORM=Which platform to build [Any CPU]: 
+IF "%PLATFORM%"=="" SET PLATFORM=Any CPU
+
+:main
+REM First find the path to the msbuild.exe by performing a registry query
+FOR /F "tokens=1,3 delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"') DO (
+  IF "%%A"=="MSBuildToolsPath" SET MSBUILDPATH=%%B)
+
+REM Then execute msbuild to clean and build the solution
+REM Disable that msbuild creates a cache file of the solution
+SET MSBuildUseNoSolutionCache=1
+REM Run msbuild to clean and then build
+IF "%CLEANBEFOREBUILD%"=="1" (
+  ECHO Cleaning ...
+  %MSBUILDPATH%msbuild.exe %SELECTED% /target:Clean /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
+)
+ECHO Building ...
+%MSBUILDPATH%msbuild.exe %SELECTED% /target:Rebuild /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
+
+ECHO.
+ECHO DONE.
+
+:end
+
+PAUSE
+
+GOTO :eof
+
+REM This workaround is necessary so that COUNT gets reevaluated
+:forloopbody
+SET /A COUNT+=1
+SET SOLUTIONS.%COUNT%=%1
+GOTO :eof
Index: /branches/DataAnalysisCSVImport/DataAnalysisCSVImport.sln
===================================================================
--- /branches/DataAnalysisCSVImport/DataAnalysisCSVImport.sln	(revision 8701)
+++ /branches/DataAnalysisCSVImport/DataAnalysisCSVImport.sln	(revision 8701)
@@ -0,0 +1,48 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{96396439-A764-4022-A8D2-BE021449B8D1}"
+	ProjectSection(SolutionItems) = preProject
+		Build.cmd = Build.cmd
+		PreBuildEvent.cmd = PreBuildEvent.cmd
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3", "HeuristicLab.Problems.Instances.DataAnalysis.Views\3.3\HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj", "{72232235-B6CF-4E6C-B086-9E9E11AA0717}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.DataAnalysis-3.3", "HeuristicLab.Problems.Instances.DataAnalysis\3.3\HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj", "{94C7714E-29D4-4D6D-B213-2C18D627AB75}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Release|Any CPU.Build.0 = Release|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Release|x64.ActiveCfg = Release|Any CPU
+		{72232235-B6CF-4E6C-B086-9E9E11AA0717}.Release|x86.ActiveCfg = Release|Any CPU
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|x64.ActiveCfg = Debug|x64
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|x64.Build.0 = Debug|x64
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|x86.ActiveCfg = Debug|x86
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Debug|x86.Build.0 = Debug|x86
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|Any CPU.Build.0 = Release|Any CPU
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|x64.ActiveCfg = Release|x64
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|x64.Build.0 = Release|x64
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|x86.ActiveCfg = Release|x86
+		{94C7714E-29D4-4D6D-B213-2C18D627AB75}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs	(revision 8701)
@@ -0,0 +1,66 @@
+﻿namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class ClassificationImportTypeDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.TargetVariableComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.TrainingTestTrackBar)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // TargetVariableComboBox
+      // 
+      this.TargetVariableComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.TargetVariableComboBox.FormattingEnabled = true;
+      this.TargetVariableComboBox.Location = new System.Drawing.Point(109, 38);
+      this.TargetVariableComboBox.Name = "TargetVariableComboBox";
+      this.TargetVariableComboBox.Size = new System.Drawing.Size(121, 21);
+      this.TargetVariableComboBox.TabIndex = 10;
+      // 
+      // ClassificationImportTypeDialog
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(339, 184);
+      this.Controls.Add(this.TargetVariableComboBox);
+      this.Name = "ClassificationImportTypeDialog";
+      this.Text = "Classification CSV Import";
+      this.Controls.SetChildIndex(this.TargetVariableComboBox, 0);
+      this.Controls.SetChildIndex(this.ShuffleDataCheckbox, 0);
+      this.Controls.SetChildIndex(this.OkButton, 0);
+      this.Controls.SetChildIndex(this.CancelButton, 0);
+      this.Controls.SetChildIndex(this.ProblemFileLabel, 0);
+      this.Controls.SetChildIndex(this.OpenFileButton, 0);
+      this.Controls.SetChildIndex(this.ProblemTextBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.TrainingTestTrackBar)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ComboBox TargetVariableComboBox;
+
+
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.cs	(revision 8701)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+
+  public partial class ClassificationImportTypeDialog : DataAnalysisImportTypeDialog {
+    public new ClassificationImportType ImportType {
+      get {
+        return new ClassificationImportType() {
+          Shuffle = ShuffleDataCheckbox.Checked,
+          Training = TrainingTestTrackBar.Value,
+        };
+      }
+    }
+
+    public ClassificationImportTypeDialog() {
+      InitializeComponent();
+    }
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.Designer.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.Designer.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.Designer.cs	(revision 8701)
@@ -0,0 +1,32 @@
+﻿namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class ClassificationInstanceConsumerView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.cs	(revision 8701)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("Classification InstanceProvider View")]
+  [Content(typeof(IProblemInstanceConsumer<IClassificationProblemData>), IsDefaultView = true)]
+  public partial class ClassificationInstanceConsumerView : DataAnalysisInstanceConsumerView<IClassificationProblemData> {
+    public new IProblemInstanceConsumer<IClassificationProblemData> Content {
+      get { return (IProblemInstanceConsumer<IClassificationProblemData>)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ClassificationInstanceConsumerView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var provider = SelectedProvider as ClassificationInstanceProvider;
+      if (provider != null) {
+        ClassificationImportTypeDialog importTypeDialog = new ClassificationImportTypeDialog();
+        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+          IClassificationProblemData instance = null;
+          try {
+            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+          }
+          catch (Exception ex) {
+            MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            return;
+          }
+          try {
+            GenericConsumer.Load(instance);
+          }
+          catch (Exception ex) {
+            MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(importTypeDialog.Path), Environment.NewLine + ex.Message), "Cannot load instance");
+          }
+        } else {
+          return;
+        }
+      } else {
+        base.importButton_Click(sender, e);
+      }
+    }
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs	(revision 8701)
@@ -1,3 +1,5 @@
-﻿namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+﻿
+using HeuristicLab.Common.Resources;
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
   partial class DataAnalysisImportTypeDialog {
     /// <summary>
@@ -27,14 +29,29 @@
       this.OkButton = new System.Windows.Forms.Button();
       this.TrainingTestTrackBar = new System.Windows.Forms.TrackBar();
-      this.TrainingTestGroupBox = new System.Windows.Forms.GroupBox();
       this.TestLabel = new System.Windows.Forms.Label();
       this.TrainingLabel = new System.Windows.Forms.Label();
       this.CancelButton = new System.Windows.Forms.Button();
-      this.openFileButton = new System.Windows.Forms.Button();
+      this.OpenFileButton = new System.Windows.Forms.Button();
       this.ProblemFileLabel = new System.Windows.Forms.Label();
       this.ProblemTextBox = new System.Windows.Forms.TextBox();
       this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.DateTimeFormatComboBox = new System.Windows.Forms.ComboBox();
+      this.DecimalSeparatorComboBox = new System.Windows.Forms.ComboBox();
+      this.DateTimeFormatLabel = new System.Windows.Forms.Label();
+      this.DecimalSeperatorLabel = new System.Windows.Forms.Label();
+      this.SeparatorLabel = new System.Windows.Forms.Label();
+      this.SeparatorComboBox = new System.Windows.Forms.ComboBox();
+      this.CSVSettingsGroupBox = new System.Windows.Forms.GroupBox();
+      this.SeparatorInfoButton = new System.Windows.Forms.Button();
+      this.ProblemDataSettingsGroupBox = new System.Windows.Forms.GroupBox();
+      this.PreviewLabel = new System.Windows.Forms.Label();
+      this.ErrorTextBox = new System.Windows.Forms.TextBox();
+      this.PreviewDatasetMatrix = new HeuristicLab.Data.Views.StringConvertibleMatrixView();
+      this.DecimalSeparatorInfoButton = new System.Windows.Forms.Button();
+      this.DateTimeFormatInfoButton = new System.Windows.Forms.Button();
+      this.ShuffleDataInfoButton = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.TrainingTestTrackBar)).BeginInit();
-      this.TrainingTestGroupBox.SuspendLayout();
+      this.CSVSettingsGroupBox.SuspendLayout();
+      this.ProblemDataSettingsGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -42,5 +59,6 @@
       // 
       this.ShuffleDataCheckbox.AutoSize = true;
-      this.ShuffleDataCheckbox.Location = new System.Drawing.Point(12, 38);
+      this.ShuffleDataCheckbox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.ShuffleDataCheckbox.Location = new System.Drawing.Point(9, 20);
       this.ShuffleDataCheckbox.Name = "ShuffleDataCheckbox";
       this.ShuffleDataCheckbox.Size = new System.Drawing.Size(91, 17);
@@ -51,7 +69,8 @@
       // OkButton
       // 
+      this.OkButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.OkButton.DialogResult = System.Windows.Forms.DialogResult.OK;
       this.OkButton.Enabled = false;
-      this.OkButton.Location = new System.Drawing.Point(61, 147);
+      this.OkButton.Location = new System.Drawing.Point(87, 407);
       this.OkButton.Name = "OkButton";
       this.OkButton.Size = new System.Drawing.Size(75, 23);
@@ -64,9 +83,9 @@
       this.TrainingTestTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.TrainingTestTrackBar.Location = new System.Drawing.Point(6, 19);
+      this.TrainingTestTrackBar.Location = new System.Drawing.Point(6, 43);
       this.TrainingTestTrackBar.Maximum = 100;
       this.TrainingTestTrackBar.Minimum = 1;
       this.TrainingTestTrackBar.Name = "TrainingTestTrackBar";
-      this.TrainingTestTrackBar.Size = new System.Drawing.Size(303, 45);
+      this.TrainingTestTrackBar.Size = new System.Drawing.Size(435, 45);
       this.TrainingTestTrackBar.TabIndex = 4;
       this.TrainingTestTrackBar.TickStyle = System.Windows.Forms.TickStyle.None;
@@ -74,20 +93,9 @@
       this.TrainingTestTrackBar.ValueChanged += new System.EventHandler(this.TrainingTestTrackBar_ValueChanged);
       // 
-      // TrainingTestGroupBox
-      // 
-      this.TrainingTestGroupBox.Controls.Add(this.TestLabel);
-      this.TrainingTestGroupBox.Controls.Add(this.TrainingLabel);
-      this.TrainingTestGroupBox.Controls.Add(this.TrainingTestTrackBar);
-      this.TrainingTestGroupBox.Location = new System.Drawing.Point(12, 61);
-      this.TrainingTestGroupBox.Name = "TrainingTestGroupBox";
-      this.TrainingTestGroupBox.Size = new System.Drawing.Size(315, 80);
-      this.TrainingTestGroupBox.TabIndex = 5;
-      this.TrainingTestGroupBox.TabStop = false;
-      this.TrainingTestGroupBox.Text = "Training/Test";
-      // 
       // TestLabel
       // 
+      this.TestLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
       this.TestLabel.AutoSize = true;
-      this.TestLabel.Location = new System.Drawing.Point(188, 51);
+      this.TestLabel.Location = new System.Drawing.Point(303, 68);
       this.TestLabel.Name = "TestLabel";
       this.TestLabel.Size = new System.Drawing.Size(57, 13);
@@ -98,5 +106,5 @@
       // 
       this.TrainingLabel.AutoSize = true;
-      this.TrainingLabel.Location = new System.Drawing.Point(50, 51);
+      this.TrainingLabel.Location = new System.Drawing.Point(76, 68);
       this.TrainingLabel.Name = "TrainingLabel";
       this.TrainingLabel.Size = new System.Drawing.Size(74, 13);
@@ -106,6 +114,7 @@
       // CancelButton
       // 
+      this.CancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.CancelButton.Location = new System.Drawing.Point(182, 147);
+      this.CancelButton.Location = new System.Drawing.Point(318, 407);
       this.CancelButton.Name = "CancelButton";
       this.CancelButton.Size = new System.Drawing.Size(75, 23);
@@ -116,15 +125,17 @@
       // openFileButton
       // 
-      this.openFileButton.Location = new System.Drawing.Point(303, 12);
-      this.openFileButton.Name = "openFileButton";
-      this.openFileButton.Size = new System.Drawing.Size(24, 24);
-      this.openFileButton.TabIndex = 8;
-      this.openFileButton.UseVisualStyleBackColor = true;
-      this.openFileButton.Click += new System.EventHandler(this.openFileButton_Click);
+      this.OpenFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.OpenFileButton.Location = new System.Drawing.Point(429, 3);
+      this.OpenFileButton.Name = "openFileButton";
+      this.OpenFileButton.Size = new System.Drawing.Size(24, 24);
+      this.OpenFileButton.TabIndex = 8;
+      this.OpenFileButton.Text = "Open";
+      this.OpenFileButton.UseVisualStyleBackColor = true;
+      this.OpenFileButton.Click += new System.EventHandler(this.openFileButton_Click);
       // 
       // ProblemFileLabel
       // 
       this.ProblemFileLabel.AutoSize = true;
-      this.ProblemFileLabel.Location = new System.Drawing.Point(12, 15);
+      this.ProblemFileLabel.Location = new System.Drawing.Point(18, 9);
       this.ProblemFileLabel.Name = "ProblemFileLabel";
       this.ProblemFileLabel.Size = new System.Drawing.Size(67, 13);
@@ -134,8 +145,10 @@
       // ProblemTextBox
       // 
-      this.ProblemTextBox.Location = new System.Drawing.Point(85, 12);
+      this.ProblemTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.ProblemTextBox.Location = new System.Drawing.Point(91, 6);
       this.ProblemTextBox.Name = "ProblemTextBox";
       this.ProblemTextBox.ReadOnly = true;
-      this.ProblemTextBox.Size = new System.Drawing.Size(212, 20);
+      this.ProblemTextBox.Size = new System.Drawing.Size(332, 20);
       this.ProblemTextBox.TabIndex = 9;
       // 
@@ -143,4 +156,180 @@
       // 
       this.openFileDialog.Filter = "CSV files (*.csv)|*.csv|Text files (*.txt)|*.txt|All files (*.*)|*.*";
+      // 
+      // DateTimeFormatComboBox
+      // 
+      this.DateTimeFormatComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.DateTimeFormatComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.DateTimeFormatComboBox.FormattingEnabled = true;
+      this.DateTimeFormatComboBox.Location = new System.Drawing.Point(111, 73);
+      this.DateTimeFormatComboBox.Name = "DateTimeFormatComboBox";
+      this.DateTimeFormatComboBox.Size = new System.Drawing.Size(300, 21);
+      this.DateTimeFormatComboBox.TabIndex = 15;
+      this.DateTimeFormatComboBox.SelectionChangeCommitted += new System.EventHandler(this.CSVFormatComboBoxSelectionChangeCommitted);
+      // 
+      // DecimalSeparatorComboBox
+      // 
+      this.DecimalSeparatorComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.DecimalSeparatorComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.DecimalSeparatorComboBox.FormattingEnabled = true;
+      this.DecimalSeparatorComboBox.Location = new System.Drawing.Point(111, 46);
+      this.DecimalSeparatorComboBox.Name = "DecimalSeparatorComboBox";
+      this.DecimalSeparatorComboBox.Size = new System.Drawing.Size(300, 21);
+      this.DecimalSeparatorComboBox.TabIndex = 14;
+      this.DecimalSeparatorComboBox.SelectionChangeCommitted += new System.EventHandler(this.CSVFormatComboBoxSelectionChangeCommitted);
+      // 
+      // DateTimeFormatLabel
+      // 
+      this.DateTimeFormatLabel.AutoSize = true;
+      this.DateTimeFormatLabel.Location = new System.Drawing.Point(6, 76);
+      this.DateTimeFormatLabel.Name = "DateTimeFormatLabel";
+      this.DateTimeFormatLabel.Size = new System.Drawing.Size(91, 13);
+      this.DateTimeFormatLabel.TabIndex = 13;
+      this.DateTimeFormatLabel.Text = "DateTime Format:";
+      // 
+      // DecimalSeperatorLabel
+      // 
+      this.DecimalSeperatorLabel.AutoSize = true;
+      this.DecimalSeperatorLabel.Location = new System.Drawing.Point(6, 49);
+      this.DecimalSeperatorLabel.Name = "DecimalSeperatorLabel";
+      this.DecimalSeperatorLabel.Size = new System.Drawing.Size(97, 13);
+      this.DecimalSeperatorLabel.TabIndex = 12;
+      this.DecimalSeperatorLabel.Text = "Decimal Separator:";
+      // 
+      // SeparatorLabel
+      // 
+      this.SeparatorLabel.AutoSize = true;
+      this.SeparatorLabel.Location = new System.Drawing.Point(6, 22);
+      this.SeparatorLabel.Name = "SeparatorLabel";
+      this.SeparatorLabel.Size = new System.Drawing.Size(56, 13);
+      this.SeparatorLabel.TabIndex = 11;
+      this.SeparatorLabel.Text = "Separator:";
+      // 
+      // SeparatorComboBox
+      // 
+      this.SeparatorComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.SeparatorComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.SeparatorComboBox.FormattingEnabled = true;
+      this.SeparatorComboBox.Location = new System.Drawing.Point(111, 19);
+      this.SeparatorComboBox.Name = "SeparatorComboBox";
+      this.SeparatorComboBox.Size = new System.Drawing.Size(300, 21);
+      this.SeparatorComboBox.TabIndex = 10;
+      this.SeparatorComboBox.SelectionChangeCommitted += new System.EventHandler(this.CSVFormatComboBoxSelectionChangeCommitted);
+      // 
+      // CSVSettingsGroupBox
+      // 
+      this.CSVSettingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.CSVSettingsGroupBox.Controls.Add(this.DateTimeFormatInfoButton);
+      this.CSVSettingsGroupBox.Controls.Add(this.DecimalSeparatorInfoButton);
+      this.CSVSettingsGroupBox.Controls.Add(this.SeparatorInfoButton);
+      this.CSVSettingsGroupBox.Controls.Add(this.SeparatorComboBox);
+      this.CSVSettingsGroupBox.Controls.Add(this.DateTimeFormatComboBox);
+      this.CSVSettingsGroupBox.Controls.Add(this.SeparatorLabel);
+      this.CSVSettingsGroupBox.Controls.Add(this.DecimalSeparatorComboBox);
+      this.CSVSettingsGroupBox.Controls.Add(this.DecimalSeperatorLabel);
+      this.CSVSettingsGroupBox.Controls.Add(this.DateTimeFormatLabel);
+      this.CSVSettingsGroupBox.Location = new System.Drawing.Point(12, 32);
+      this.CSVSettingsGroupBox.Name = "CSVSettingsGroupBox";
+      this.CSVSettingsGroupBox.Size = new System.Drawing.Size(447, 105);
+      this.CSVSettingsGroupBox.TabIndex = 16;
+      this.CSVSettingsGroupBox.TabStop = false;
+      this.CSVSettingsGroupBox.Text = "CSV Settings";
+      // 
+      // SeparatorInfoButton
+      // 
+      this.SeparatorInfoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.SeparatorInfoButton.Location = new System.Drawing.Point(417, 17);
+      this.SeparatorInfoButton.Name = "SeparatorInfoButton";
+      this.SeparatorInfoButton.Size = new System.Drawing.Size(24, 24);
+      this.SeparatorInfoButton.TabIndex = 18;
+      this.SeparatorInfoButton.Text = "SeparatorInfo";
+      this.SeparatorInfoButton.UseVisualStyleBackColor = true;
+      // 
+      // ProblemDataSettingsGroupBox
+      // 
+      this.ProblemDataSettingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.ShuffleDataInfoButton);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.PreviewLabel);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.ErrorTextBox);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.TestLabel);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.PreviewDatasetMatrix);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.TrainingLabel);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.TrainingTestTrackBar);
+      this.ProblemDataSettingsGroupBox.Controls.Add(this.ShuffleDataCheckbox);
+      this.ProblemDataSettingsGroupBox.Location = new System.Drawing.Point(12, 143);
+      this.ProblemDataSettingsGroupBox.Name = "ProblemDataSettingsGroupBox";
+      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 258);
+      this.ProblemDataSettingsGroupBox.TabIndex = 17;
+      this.ProblemDataSettingsGroupBox.TabStop = false;
+      this.ProblemDataSettingsGroupBox.Text = "ProblemData Settings";
+      // 
+      // PreviewLabel
+      // 
+      this.PreviewLabel.AutoSize = true;
+      this.PreviewLabel.Location = new System.Drawing.Point(9, 89);
+      this.PreviewLabel.Name = "PreviewLabel";
+      this.PreviewLabel.Size = new System.Drawing.Size(45, 13);
+      this.PreviewLabel.TabIndex = 7;
+      this.PreviewLabel.Text = "Preview";
+      // 
+      // ErrorTextBox
+      // 
+      this.ErrorTextBox.Location = new System.Drawing.Point(111, 164);
+      this.ErrorTextBox.Multiline = true;
+      this.ErrorTextBox.Name = "ErrorTextBox";
+      this.ErrorTextBox.Size = new System.Drawing.Size(193, 32);
+      this.ErrorTextBox.TabIndex = 0;
+      this.ErrorTextBox.Visible = false;
+      // 
+      // PreviewDatasetMatrix
+      // 
+      this.PreviewDatasetMatrix.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.PreviewDatasetMatrix.Caption = "Dataset Preview";
+      this.PreviewDatasetMatrix.Content = null;
+      this.PreviewDatasetMatrix.Location = new System.Drawing.Point(6, 108);
+      this.PreviewDatasetMatrix.Name = "PreviewDatasetMatrix";
+      this.PreviewDatasetMatrix.ReadOnly = true;
+      this.PreviewDatasetMatrix.ShowRowsAndColumnsTextBox = false;
+      this.PreviewDatasetMatrix.ShowStatisticalInformation = false;
+      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 144);
+      this.PreviewDatasetMatrix.TabIndex = 0;
+      // 
+      // DecimalSeparatorInfoButtin
+      // 
+      this.DecimalSeparatorInfoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.DecimalSeparatorInfoButton.Location = new System.Drawing.Point(417, 44);
+      this.DecimalSeparatorInfoButton.Name = "DecimalSeparatorInfoButtin";
+      this.DecimalSeparatorInfoButton.Size = new System.Drawing.Size(24, 24);
+      this.DecimalSeparatorInfoButton.TabIndex = 19;
+      this.DecimalSeparatorInfoButton.Text = "DecimalSeparatorInfo";
+      this.DecimalSeparatorInfoButton.UseVisualStyleBackColor = true;
+      // 
+      // DateTimeFormatInfoButton
+      // 
+      this.DateTimeFormatInfoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.DateTimeFormatInfoButton.Location = new System.Drawing.Point(417, 71);
+      this.DateTimeFormatInfoButton.Name = "DateTimeFormatInfoButton";
+      this.DateTimeFormatInfoButton.Size = new System.Drawing.Size(24, 24);
+      this.DateTimeFormatInfoButton.TabIndex = 20;
+      this.DateTimeFormatInfoButton.Text = "DateTimeFormatInfo";
+      this.DateTimeFormatInfoButton.UseVisualStyleBackColor = true;
+      // 
+      // ShuffleDataInfoButton
+      // 
+      this.ShuffleDataInfoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.ShuffleDataInfoButton.Location = new System.Drawing.Point(111, 15);
+      this.ShuffleDataInfoButton.Name = "ShuffleDataInfoButton";
+      this.ShuffleDataInfoButton.Size = new System.Drawing.Size(24, 24);
+      this.ShuffleDataInfoButton.TabIndex = 19;
+      this.ShuffleDataInfoButton.Text = "ShuffleDataInfo";
+      this.ShuffleDataInfoButton.UseVisualStyleBackColor = true;
       // 
       // DataAnalysisImportTypeDialog
@@ -149,14 +338,13 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(339, 179);
+      this.ClientSize = new System.Drawing.Size(471, 442);
       this.ControlBox = false;
+      this.Controls.Add(this.ProblemDataSettingsGroupBox);
+      this.Controls.Add(this.CSVSettingsGroupBox);
       this.Controls.Add(this.ProblemTextBox);
-      this.Controls.Add(this.openFileButton);
+      this.Controls.Add(this.OpenFileButton);
       this.Controls.Add(this.ProblemFileLabel);
       this.Controls.Add(this.CancelButton);
       this.Controls.Add(this.OkButton);
-      this.Controls.Add(this.ShuffleDataCheckbox);
-      this.Controls.Add(this.TrainingTestGroupBox);
-      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
       this.MaximizeBox = false;
       this.MinimizeBox = false;
@@ -166,6 +354,8 @@
       this.Text = "CSV Import";
       ((System.ComponentModel.ISupportInitialize)(this.TrainingTestTrackBar)).EndInit();
-      this.TrainingTestGroupBox.ResumeLayout(false);
-      this.TrainingTestGroupBox.PerformLayout();
+      this.CSVSettingsGroupBox.ResumeLayout(false);
+      this.CSVSettingsGroupBox.PerformLayout();
+      this.ProblemDataSettingsGroupBox.ResumeLayout(false);
+      this.ProblemDataSettingsGroupBox.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -178,5 +368,4 @@
     protected System.Windows.Forms.Button OkButton;
     protected System.Windows.Forms.TrackBar TrainingTestTrackBar;
-    protected System.Windows.Forms.GroupBox TrainingTestGroupBox;
     protected System.Windows.Forms.Label TestLabel;
     protected System.Windows.Forms.Label TrainingLabel;
@@ -184,6 +373,21 @@
     protected System.Windows.Forms.OpenFileDialog openFileDialog;
     protected System.Windows.Forms.Label ProblemFileLabel;
-    protected System.Windows.Forms.Button openFileButton;
+    protected System.Windows.Forms.Button OpenFileButton;
     protected System.Windows.Forms.TextBox ProblemTextBox;
+    protected System.Windows.Forms.ComboBox DateTimeFormatComboBox;
+    protected System.Windows.Forms.ComboBox DecimalSeparatorComboBox;
+    protected System.Windows.Forms.Label DateTimeFormatLabel;
+    protected System.Windows.Forms.Label DecimalSeperatorLabel;
+    protected System.Windows.Forms.Label SeparatorLabel;
+    protected System.Windows.Forms.ComboBox SeparatorComboBox;
+    protected System.Windows.Forms.GroupBox CSVSettingsGroupBox;
+    protected System.Windows.Forms.GroupBox ProblemDataSettingsGroupBox;
+    protected System.Windows.Forms.TextBox ErrorTextBox;
+    protected HeuristicLab.Data.Views.StringConvertibleMatrixView PreviewDatasetMatrix;
+    private System.Windows.Forms.Label PreviewLabel;
+    protected System.Windows.Forms.Button SeparatorInfoButton;
+    protected System.Windows.Forms.Button DateTimeFormatInfoButton;
+    protected System.Windows.Forms.Button DecimalSeparatorInfoButton;
+    protected System.Windows.Forms.Button ShuffleDataInfoButton;
 
   }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs	(revision 8701)
@@ -20,8 +20,33 @@
 #endregion
 
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Globalization;
+using System.Linq;
 using System.Windows.Forms;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.Problems.DataAnalysis;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
   public partial class DataAnalysisImportTypeDialog : Form {
+
+    public static readonly BindingList<KeyValuePair<DateTimeFormatInfo, string>> dateTimeFormats = new BindingList<KeyValuePair<DateTimeFormatInfo, string>>{
+      new KeyValuePair<DateTimeFormatInfo, string>(DateTimeFormatInfo.GetInstance(new CultureInfo("de-DE")), "dd/mm/yyyy hh:MM:ss" ),
+      new KeyValuePair<DateTimeFormatInfo, string>(DateTimeFormatInfo.InvariantInfo, "mm/dd/yyyy hh:MM:ss" ),
+      new KeyValuePair<DateTimeFormatInfo, string>(DateTimeFormatInfo.InvariantInfo, "yyyy/mm/dd hh:MM:ss" ),
+      new KeyValuePair<DateTimeFormatInfo, string>(DateTimeFormatInfo.InvariantInfo, "mm/yyyy/dd hh:MM:ss" )
+    };
+
+    public static readonly BindingList<KeyValuePair<char, string>> POSSIBLE_SEPARATORS = new BindingList<KeyValuePair<char, string>>{
+      new KeyValuePair<char, string>(',', ", (Comma)" ),
+      new KeyValuePair<char, string>(';', "; (Semicolon)" ),
+      new KeyValuePair<char, string>('\t', "\\t (Tab)")
+    };
+
+    public static readonly BindingList<KeyValuePair<NumberFormatInfo, string>> POSSIBLE_DECIMAL_SEPARATORS = new BindingList<KeyValuePair<NumberFormatInfo, string>>{
+      new KeyValuePair<NumberFormatInfo, string>(NumberFormatInfo.InvariantInfo, ". (Period)" ),
+      new KeyValuePair<NumberFormatInfo, string>(NumberFormatInfo.GetInstance(new CultureInfo("de-DE")), ", (Comma)" )      
+    };
 
     public string Path {
@@ -38,6 +63,36 @@
     }
 
+    public DataAnalysisCSVFormat CSVFormat {
+      get {
+        return new DataAnalysisCSVFormat() {
+          Separator = (char)SeparatorComboBox.SelectedValue,
+          NumberFormatInfo = (NumberFormatInfo)DecimalSeparatorComboBox.SelectedValue,
+          DateTimeFormatInfo = (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue
+        };
+      }
+    }
+
     public DataAnalysisImportTypeDialog() {
       InitializeComponent();
+      OpenFileButton.Text = String.Empty;
+      OpenFileButton.Image = VSImageLibrary.Open;
+      SeparatorInfoButton.Text = String.Empty;
+      SeparatorInfoButton.Image = VSImageLibrary.Information;
+      DecimalSeparatorInfoButton.Text = String.Empty;
+      DecimalSeparatorInfoButton.Image = VSImageLibrary.Information;
+      DateTimeFormatInfoButton.Text = String.Empty;
+      DateTimeFormatInfoButton.Image = VSImageLibrary.Information;
+      ShuffleDataInfoButton.Text = String.Empty;
+      ShuffleDataInfoButton.Image = VSImageLibrary.Information;
+
+      SeparatorComboBox.DataSource = POSSIBLE_SEPARATORS;
+      SeparatorComboBox.ValueMember = "Key";
+      SeparatorComboBox.DisplayMember = "Value";
+      DecimalSeparatorComboBox.DataSource = POSSIBLE_DECIMAL_SEPARATORS;
+      DecimalSeparatorComboBox.ValueMember = "Key";
+      DecimalSeparatorComboBox.DisplayMember = "Value";
+      DateTimeFormatComboBox.DataSource = dateTimeFormats;
+      DateTimeFormatComboBox.ValueMember = "Key";
+      DateTimeFormatComboBox.DisplayMember = "Value";
     }
 
@@ -50,6 +105,54 @@
       if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
         ProblemTextBox.Text = openFileDialog.FileName;
+        ParseCSVFile();
+      }
+    }
+
+    protected void CSVFormatComboBoxSelectionChangeCommitted(object sender, EventArgs e) {
+      if (!ProblemTextBox.Text.Equals(String.Empty)) {
+        ParseCSVFile();
+      }
+    }
+
+    protected void ParseCSVFile() {
+      PreviewDatasetMatrix.Content = null;
+      try {
+        TableFileParser csvParser = new TableFileParser();
+        csvParser.Parse(ProblemTextBox.Text,
+                        (NumberFormatInfo)DecimalSeparatorComboBox.SelectedValue,
+                        (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue,
+                        (char)SeparatorComboBox.SelectedValue);
         OkButton.Enabled = true;
+        IEnumerable<string> variableNamesWithType = GetVariableNamesWithType(csvParser);
+        PreviewDatasetMatrix.Content = new Dataset(variableNamesWithType, csvParser.Values);
+        var bla = new Dataset(csvParser.VariableNames, csvParser.Values);
+
+        if (!csvParser.Values.Any(x => x is List<double>)) {
+          throw new ArgumentException("No double column could be found!");
+        }
+        ErrorTextBox.Text = String.Empty;
+        ErrorTextBox.Visible = false;
       }
+      catch (Exception ex) {
+        OkButton.Enabled = false;
+        ErrorTextBox.Text = ex.Message;
+        ErrorTextBox.Visible = true;
+      }
+    }
+
+    private IEnumerable<string> GetVariableNamesWithType(TableFileParser csvParser) {
+      IList<string> variableNamesWithType = csvParser.VariableNames.ToList();
+      for (int i = 0; i < csvParser.Values.Count; i++) {
+        if (csvParser.Values[i] is List<double>) {
+          variableNamesWithType[i] += " (Double)";
+        } else if (csvParser.Values[i] is List<string>) {
+          variableNamesWithType[i] += " (String)";
+        } else if (csvParser.Values[i] is List<DateTime>) {
+          variableNamesWithType[i] += " (DateTime)";
+        } else {
+          throw new ArgumentException("The variable values must be of type List<double>, List<string> or List<DateTime>");
+        }
+      }
+      return variableNamesWithType;
     }
   }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.cs	(revision 8701)
@@ -30,5 +30,4 @@
   [View("DataAnalysis InstanceProvider View")]
   [Content(typeof(IProblemInstanceConsumer<IDataAnalysisProblemData>), IsDefaultView = true)]
-  [Content(typeof(IProblemInstanceConsumer<IClassificationProblemData>), IsDefaultView = true)]
   [Content(typeof(IProblemInstanceConsumer<IRegressionProblemData>), IsDefaultView = true)]
   [Content(typeof(IProblemInstanceConsumer<IClusteringProblemData>), IsDefaultView = true)]
@@ -42,8 +41,9 @@
     public DataAnalysisInstanceConsumerView() {
       InitializeComponent();
+
     }
 
     protected override void importButton_Click(object sender, EventArgs e) {
-      var provider = SelectedProvider as DataAnalysisInstanceProvider<T>;
+      var provider = SelectedProvider as DataAnalysisInstanceProvider<T, DataAnalysisImportType>;
       if (provider != null) {
         DataAnalysisImportTypeDialog importTypeDialog = new DataAnalysisImportTypeDialog();
@@ -51,5 +51,5 @@
           T instance = default(T);
           try {
-            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType);
+            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
 
           }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj	(revision 8701)
@@ -18,5 +18,5 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -26,5 +26,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -38,15 +38,78 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.Views-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Core">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Drawing">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Windows.Forms">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Microsoft.CSharp">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Data">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Private>True</Private>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ClassificationImportTypeDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="ClassificationImportTypeDialog.Designer.cs">
+      <DependentUpon>ClassificationImportTypeDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ClassificationInstanceConsumerView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ClassificationInstanceConsumerView.Designer.cs">
+      <DependentUpon>ClassificationInstanceConsumerView.cs</DependentUpon>
+    </Compile>
     <Compile Include="DataAnalysisImportTypeDialog.cs">
       <SubType>Form</SubType>
@@ -68,47 +131,7 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
-      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
-      <Name>HeuristicLab.Common-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
-      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
-      <Name>HeuristicLab.Core-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
-      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
-      <Name>HeuristicLab.Data-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
-      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
-      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
-      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
-      <Name>HeuristicLab.MainForm-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
-      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.DataAnalysis\3.3\HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj">
       <Project>{94C7714E-29D4-4D6D-B213-2C18D627AB75}</Project>
       <Name>HeuristicLab.Problems.Instances.DataAnalysis-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.3\HeuristicLab.Problems.Instances.Views-3.3.csproj">
-      <Project>{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}</Project>
-      <Name>HeuristicLab.Problems.Instances.Views-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
-      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
-      <Name>HeuristicLab.Problems.Instances-3.3</Name>
       <Private>False</Private>
     </ProjectReference>
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs	(revision 8701)
@@ -92,8 +92,5 @@
     }
 
-    public override IClassificationProblemData ImportData(string path, DataAnalysisImportType type) {
-      TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
-
+    protected override IClassificationProblemData ImportData(string path, ClassificationImportType type, TableFileParser csvFileParser) {
       int trainingPartEnd = (csvFileParser.Rows * type.Training) / 100;
       List<IList> values = csvFileParser.Values;
@@ -126,4 +123,105 @@
     }
 
+    protected List<IList> Shuffle(List<IList> values, int target, int trainingPercentage, int trainingPartEnd) {
+      target = 5;
+      IList targetValues = values[target];
+      var group = targetValues.Cast<double>().GroupBy(x => x).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
+      Dictionary<double, double> taken = new Dictionary<double, double>();
+      foreach (var classCount in group) {
+        taken[classCount.Key] = (classCount.Count * trainingPercentage) / 100;
+      }
+
+      List<IList> training = GetListOfIListCopy(values);
+      List<IList> test = GetListOfIListCopy(values);
+
+      for (int i = 0; i < targetValues.Count; i++) {
+        if (taken[(double)targetValues[i]] > 0) {
+          AddRow(training, values, i);
+          taken[(double)targetValues[i]]--;
+        } else {
+          AddRow(test, values, i);
+        }
+      }
+
+      training = Shuffle(training);
+      test = Shuffle(test);
+      for (int i = 0; i < training.Count; i++) {
+        for (int j = 0; j < test[i].Count; j++) {
+          training[i].Add(test[i][j]);
+        }
+      }
+
+      return training;
+    }
+
+    private void AddRow(List<IList> destination, List<IList> source, int index) {
+      for (int i = 0; i < source.Count; i++) {
+        destination[i].Add(source[i][index]);
+      }
+    }
+
+    private List<IList> GetListOfIListCopy(List<IList> values) {
+      List<IList> newList = new List<IList>(values.Count);
+      for (int col = 0; col < values.Count; col++) {
+
+        if (values[col] is List<double>)
+          newList.Add(new List<double>());
+        else if (values[col] is List<DateTime>)
+          newList.Add(new List<DateTime>());
+        else if (values[col] is List<string>)
+          newList.Add(new List<string>());
+        else
+          throw new InvalidOperationException();
+      }
+      return newList;
+    }
+
+    private List<IList> NormalizeClasses(List<IList> values) {
+      int column = GetLastDoubleColumn(values);
+      Dictionary<object, int> count = new Dictionary<object, int>();
+      foreach (var item in values[column]) {
+        if (count.Keys.Contains(item)) {
+          count[item]++;
+        } else {
+          count.Add(item, 1);
+        }
+      }
+      int min = count.Values.Min();
+      Dictionary<object, int> taken = new Dictionary<object, int>();
+      foreach (var key in count.Keys) {
+        taken[key] = 0;
+      }
+      List<IList> normalizedValues = new List<IList>(values.Count);
+      for (int col = 0; col < values.Count; col++) {
+
+        if (values[col] is List<double>)
+          normalizedValues.Add(new List<double>());
+        else if (values[col] is List<DateTime>)
+          normalizedValues.Add(new List<DateTime>());
+        else if (values[col] is List<string>)
+          normalizedValues.Add(new List<string>());
+        else
+          throw new InvalidOperationException();
+      }
+      for (int i = 0; i < values.First().Count; i++) {
+        if (taken[values[column][i]] < min) {
+          taken[values[column][i]]++;
+          for (int col = 0; col < values.Count; col++) {
+            normalizedValues[col].Add(values[col][i]);
+          }
+        }
+      }
+      return normalizedValues;
+    }
+
+    private int GetLastDoubleColumn(List<IList> values) {
+      for (int i = values.Count - 1; i >= 0; i--) {
+        if (values[i] is List<double>) {
+          return i;
+        }
+      }
+      throw new ArgumentException("No possible Target Variable could be found!");
+    }
+
     public override bool CanExportData {
       get { return true; }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationImportType.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationImportType.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationImportType.cs	(revision 8701)
@@ -0,0 +1,26 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class ClassificationImportType : DataAnalysisImportType {
+    public string Variable { get; set; }
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs	(revision 8701)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public abstract class ClassificationInstanceProvider : DataAnalysisInstanceProvider<IClassificationProblemData> {
+  public abstract class ClassificationInstanceProvider : DataAnalysisInstanceProvider<IClassificationProblemData, ClassificationImportType> {
   }
 }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs	(revision 8701)
@@ -91,8 +91,5 @@
     }
 
-    public override IClusteringProblemData ImportData(string path, DataAnalysisImportType type) {
-      TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
-
+    protected override IClusteringProblemData ImportData(string path, DataAnalysisImportType type, TableFileParser csvFileParser) {
       List<IList> values = csvFileParser.Values;
       if (type.Shuffle) {
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/ClusteringInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/ClusteringInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/ClusteringInstanceProvider.cs	(revision 8701)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public abstract class ClusteringInstanceProvider : DataAnalysisInstanceProvider<IClusteringProblemData> {
+  public abstract class ClusteringInstanceProvider : DataAnalysisInstanceProvider<IClusteringProblemData, DataAnalysisImportType> {
   }
 }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs	(revision 8701)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs	(revision 8701)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Globalization;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class DataAnalysisCSVFormat {
+    public char Separator { get; set; }
+    public NumberFormatInfo NumberFormatInfo { get; set; }
+    public DateTimeFormatInfo DateTimeFormatInfo { get; set; }
+  }
+}
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs	(revision 8701)
@@ -27,9 +27,20 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public abstract class DataAnalysisInstanceProvider<TData> : ProblemInstanceProvider<TData>
-    where TData : class, IDataAnalysisProblemData {
+  public abstract class DataAnalysisInstanceProvider<TData, ImportType> : ProblemInstanceProvider<TData>
+    where TData : class, IDataAnalysisProblemData
+    where ImportType : DataAnalysisImportType {
 
     // has to be implemented, if CanImportData is true
-    public virtual TData ImportData(string path, DataAnalysisImportType type) {
+    public TData ImportData(string path, ImportType type) {
+      TableFileParser csvFileParser = new TableFileParser();
+      csvFileParser.Parse(path);
+      return ImportData(path, type, csvFileParser);
+    }
+    public TData ImportData(string path, ImportType type, DataAnalysisCSVFormat csvFormat) {
+      TableFileParser csvFileParser = new TableFileParser();
+      csvFileParser.Parse(path, csvFormat.NumberFormatInfo, csvFormat.DateTimeFormatInfo, csvFormat.Separator);
+      return ImportData(path, type, csvFileParser);
+    }
+    protected virtual TData ImportData(string path, ImportType type, TableFileParser csvFileParser) {
       throw new NotSupportedException();
     }
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 8701)
@@ -18,5 +18,5 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -26,5 +26,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -39,5 +39,5 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
@@ -52,5 +52,5 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <Optimize>true</Optimize>
@@ -69,5 +69,5 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
@@ -82,5 +82,5 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <Optimize>true</Optimize>
@@ -98,6 +98,38 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
-      <HintPath>..\..\HeuristicLab.PluginInfrastructure\3.3\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\..\..\trunk\sources\bin\ICSharpCode.SharpZipLib.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -117,4 +149,5 @@
     <Compile Include="Classification\ClassificationInstanceProvider.cs" />
     <Compile Include="Classification\CSV\ClassifiactionCSVInstanceProvider.cs" />
+    <Compile Include="Classification\ClassificationImportType.cs" />
     <Compile Include="Classification\ResourceClassificationDataDescriptor.cs" />
     <Compile Include="Classification\ResourceClassificationInstanceProvider.cs" />
@@ -124,4 +157,5 @@
     <Compile Include="Clustering\ClusteringInstanceProvider.cs" />
     <Compile Include="Clustering\CSV\ClusteringCSVInstanceProvider.cs" />
+    <Compile Include="DataAnalysisCSVFormat.cs" />
     <Compile Include="DataAnalysisImportType.cs" />
     <Compile Include="DataAnalysisInstanceProvider.cs" />
@@ -205,46 +239,4 @@
     <EmbeddedResource Include="Regression\Data\RegressionRealWorld.zip" />
   </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
-      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
-      <Name>HeuristicLab.Collections-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
-      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
-      <Name>HeuristicLab.Common-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
-      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
-      <Name>HeuristicLab.Core-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
-      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
-      <Name>HeuristicLab.Data-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
-      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
-      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
-      <Name>HeuristicLab.Problems.Instances-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Random\3.3\HeuristicLab.Random-3.3.csproj">
-      <Project>{F4539FB6-4708-40C9-BE64-0A1390AEA197}</Project>
-      <Name>HeuristicLab.Random-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 8701)
@@ -86,8 +86,5 @@
     }
 
-    public override IRegressionProblemData ImportData(string path, DataAnalysisImportType type) {
-      TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
-
+    protected override IRegressionProblemData ImportData(string path, DataAnalysisImportType type, TableFileParser csvFileParser) {
       List<IList> values = csvFileParser.Values;
       if (type.Shuffle) {
Index: /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs
===================================================================
--- /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs	(revision 8700)
+++ /branches/DataAnalysisCSVImport/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs	(revision 8701)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public abstract class RegressionInstanceProvider : DataAnalysisInstanceProvider<IRegressionProblemData> {
+  public abstract class RegressionInstanceProvider : DataAnalysisInstanceProvider<IRegressionProblemData, DataAnalysisImportType> {
   }
 }
Index: /branches/DataAnalysisCSVImport/PreBuildEvent.cmd
===================================================================
--- /branches/DataAnalysisCSVImport/PreBuildEvent.cmd	(revision 8701)
+++ /branches/DataAnalysisCSVImport/PreBuildEvent.cmd	(revision 8701)
@@ -0,0 +1,2 @@
+IF EXIST "%ProjectDir%\Properties\AssemblyInfo.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Properties\AssemblyInfo.cs.frame" "%ProjectDir%\Properties\AssemblyInfo.cs"
+IF EXIST "%ProjectDir%\Plugin.cs.frame" SubWCRev "%ProjectDir%\" "%ProjectDir%\Plugin.cs.frame" "%ProjectDir%\Plugin.cs"
