|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace JGClassGenerator
{
internal partial class FormImportPreviousProjects : FormBaseDialog
{
internal FormImportPreviousProjects()
{
InitializeComponent();
ShowButtons = true;
}
private void FormImportPreviousProjects_Load(object sender, EventArgs e)
{
string mes = Environment.NewLine + "This will allow you to convert previously saved projects (version 2 and before) to the new format and save them.";
mes += Environment.NewLine + Environment.NewLine + "Conversion may take some time depending on the number of projects to convert.";
lblMessage.Text = mes;
ButtonOKText = "Convert";
ButtonOKTooltip = "Proceed With Conversion";
ButtonOK.Enabled = false;
ButtonCancelText = "Close";
ButtonCancelTooltip = "Close Dialog";
pickSRCEDB.InitialDirectory = JCommon.AppSettingsPath();
pickSRCEDB.Enabled = false;
}
internal override void ButtonOK_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
ShowMessage("Converting and Importing...", false);
this.Refresh();
int numConverted = DoConversion();
if (numConverted > 0)
ShowMessage(numConverted.ToString() + " Records Converted", true);
this.Cursor = Cursors.Default;
}
private void cboTableNames_TextChanged(object sender, EventArgs e)
{
SetButtonStatus();
}
// Converts JProjectData to JSavedProject
private int ConvertRecords(List<JProjectData> listProjectData)
{
int numConverted = 0;
JSavedProject savedPD;
Dictionary<string, int> dicNetTypes = JNETTypesUpdater.GetNETTypesDictionary();
Dictionary<int, JTypesData> dictDataTypes = JTypesUpdater.GetDataTypesMatrix();
foreach (JProjectData projectData in listProjectData)
{
savedPD = new JSavedProject();
savedPD.ClassName = projectData.ClassName;
savedPD.ClassNameSpace = projectData.ClassNameSpace;
savedPD.ClassFileSaveDirectory = projectData.ClassFileSaveDirectory;
savedPD.ClassDataSource = (JCommon.ClassDataTypes)projectData.ClassDataType;
savedPD.ClassScope = projectData.ClassScope;
savedPD.ModuleVariablePrefix = projectData.ModuleVariablePrefix;
savedPD.AdditionalFunctions = projectData.AdditionalFunctions;
savedPD.AdditionalFields = projectData.AdditionalFields;
savedPD.UsingDirectives = "";
if (projectData.ClassDataType == (int)JCommon.ClassDataTypes.ADONET)
{
savedPD.AccessDatabasePath = projectData.DatabasePath;
savedPD.AccessTableName = projectData.TableName;
savedPD.IsAccess12 = projectData.Access12;
savedPD.UseADODB = false;
savedPD.SQLiteDatabasePath = "";
savedPD.SQLiteTableName = "";
savedPD.XMLDatabasePath = "";
savedPD.XMLDataSetName = "";
savedPD.XMLNameSpace = "";
savedPD.XMLTableName = "";
}
else if (projectData.ClassDataType == (int)JCommon.ClassDataTypes.ADODB)
{
savedPD.AccessDatabasePath = projectData.DatabasePath;
savedPD.AccessTableName = projectData.TableName;
savedPD.IsAccess12 = projectData.Access12;
savedPD.UseADODB = true;
savedPD.SQLiteDatabasePath = "";
savedPD.SQLiteTableName = "";
savedPD.XMLDatabasePath = "";
savedPD.XMLDataSetName = "";
savedPD.XMLNameSpace = "";
savedPD.XMLTableName = "";
}
else if (projectData.ClassDataType == (int)JCommon.ClassDataTypes.SQLITE)
{
savedPD.AccessDatabasePath = "";
savedPD.AccessTableName = "";
savedPD.IsAccess12 = false;
savedPD.UseADODB = false;
savedPD.SQLiteDatabasePath = projectData.DatabasePath;
savedPD.SQLiteTableName = projectData.TableName;
savedPD.XMLDatabasePath = "";
savedPD.XMLDataSetName = "";
savedPD.XMLNameSpace = "";
savedPD.XMLTableName = "";
}
else if (projectData.ClassDataType == (int)JCommon.ClassDataTypes.XML)
{
savedPD.AccessDatabasePath = "";
savedPD.AccessTableName = "";
savedPD.IsAccess12 = false;
savedPD.UseADODB = false;
savedPD.SQLiteDatabasePath = "";
savedPD.SQLiteTableName = "";
savedPD.XMLDatabasePath = projectData.DatabasePath;
savedPD.XMLDataSetName = projectData.DataSetName;
savedPD.XMLNameSpace = projectData.DBNameSpace;
savedPD.XMLTableName = projectData.TableName;
}
// We need the record number for the FieldsData
int newRecNum = JSavedProjectUpdater.AddRecord(savedPD);
SaveFieldsData(projectData.FieldString, newRecNum, dicNetTypes, dictDataTypes);
numConverted++;
}
return numConverted;
}
private int DoConversion()
{
int numTransferred = 0;
if (!rbSRCEAccess12.Checked && !rbSRCEAccessMDB.Checked && !rbSRCEXML.Checked)
{
ShowMessage("Please select the source data type", true);
return numTransferred;
}
string srceDBPath = pickSRCEDB.SelectedPath;
if (string.IsNullOrEmpty(srceDBPath))
{
ShowMessage("Please Select Source Database", true);
return numTransferred;
}
FileInfo fInfo = new FileInfo(srceDBPath);
if (!fInfo.Exists)
{
ShowMessage("Cannot Find Source Database File", true);
return numTransferred;
}
string tableName = cboTableNames.Text;
if (string.IsNullOrEmpty(tableName))
{
ShowMessage("Please Select Table Name", true);
return numTransferred;
}
string originalSRCEPath = "";
string originalTableName = "";
List<JProjectData> listRecords;
try
{
if (rbSRCEAccess12.Checked)
{
originalSRCEPath = JProjectUpdaterAC12.DataBasePath;
originalTableName = JProjectUpdaterAC12.TableName;
JProjectUpdaterAC12.DataBasePath = pickSRCEDB.SelectedPath;
JProjectUpdaterAC12.TableName = tableName;
listRecords = GetAccess12Records();
}
else if (rbSRCEAccessMDB.Checked)
{
originalSRCEPath = JProjectUpdaterACMDB.DataBasePath;
originalTableName = JProjectUpdaterACMDB.TableName;
JProjectUpdaterACMDB.DataBasePath = pickSRCEDB.SelectedPath;
JProjectUpdaterACMDB.TableName = tableName;
listRecords = GetAccessMDBRecords();
}
else if (rbSRCEXML.Checked)
{
originalSRCEPath = JProjectUpdaterXML.DataBasePath;
originalTableName = JProjectUpdaterXML.TableName;
JProjectUpdaterXML.DataBasePath = pickSRCEDB.SelectedPath;
JProjectUpdaterXML.TableName = tableName;
listRecords = GetXMLRecords();
}
else
{
return numTransferred;
}
numTransferred = ConvertRecords(listRecords);
}
finally
{
if (rbSRCEAccess12.Checked)
{
JProjectUpdaterAC12.DataBasePath = originalSRCEPath;
JProjectUpdaterAC12.TableName = originalTableName;
}
else if (rbSRCEAccessMDB.Checked)
{
JProjectUpdaterACMDB.DataBasePath = originalSRCEPath;
JProjectUpdaterACMDB.TableName = originalTableName;
}
else if (rbSRCEXML.Checked)
{
JProjectUpdaterXML.DataBasePath = originalSRCEPath;
JProjectUpdaterXML.TableName = originalTableName;
}
}
return numTransferred;
}
private int FillAccessTableNamesCombo(string filePath, bool access12)
{
int numTables = 0;
cboTableNames.Items.Clear();
cboTableNames.Text = "";
List<string> listNames = JCommon.GetAccessTableNames(filePath, access12);
if (listNames.Count > 0)
{
numTables = listNames.Count;
lblTableNames.Text = "Access Table Name " + "(" + numTables.ToString() + " found)";
foreach (string name in listNames)
cboTableNames.Items.Add(name);
}
else
{
lblTableNames.Text = "Access Table Name " + "(None found)";
}
return numTables;
}
private int FillXMLTableNamesCombo(string filePath)
{
int numTables = 0;
cboTableNames.Items.Clear();
cboTableNames.Text = "";
List<string> listNames = JCommon.GetXMLTableNames(filePath);
if (listNames.Count > 0)
{
numTables = listNames.Count;
lblTableNames.Text = "XML Table Name (" + numTables.ToString() + " Found)";
foreach (string name in listNames)
cboTableNames.Items.Add(name);
}
else
{
lblTableNames.Text = "XML Table Name " + "(None found)";
}
return numTables;
}
private List<JProjectData> GetAccess12Records()
{
return JProjectUpdaterAC12.AllRecords();
}
private List<JProjectData> GetAccessMDBRecords()
{
return JProjectUpdaterACMDB.AllRecords();
}
private List<JProjectData> GetXMLRecords()
{
return JProjectUpdaterXML.AllRecords();
}
private void pickSRCEDB_PathSelected(object sender, JFileFolderPicker.PathArgs e)
{
if (rbSRCEXML.Checked)
FillXMLTableNamesCombo(e.SelectedPath);
else
FillAccessTableNamesCombo(e.SelectedPath, rbSRCEAccess12.Checked);
SetButtonStatus();
}
private void SaveFieldsData(string fieldList, int parentRecNum, Dictionary<string, int> dicNetTypes, Dictionary<int, JTypesData> dictDataTypes)
{
int fieldIndex;
JFieldsData fieldsData;
string[] lvRows = fieldList.Split('#');
string[] rowItems;
string netDataType;
fieldIndex = 0;
foreach (string current in lvRows)
{
if (!string.IsNullOrEmpty(current))
{
rowItems = current.Split(',');
{
fieldsData = new JFieldsData();
fieldsData.FieldIndex = fieldIndex;
fieldsData.ParentRecordNumber = parentRecNum;
fieldsData.FieldName = rowItems[0].Trim();
fieldsData.FieldLength = 0;
netDataType = rowItems[3].Trim();
if (dicNetTypes.ContainsKey(netDataType))
fieldsData.TypeID = dicNetTypes[netDataType];
else
fieldsData.TypeID = 0;
fieldsData.IsAutoIncrement = (rowItems[4].Trim() == "Yes");
fieldsData.IsKeyField = (rowItems[5].Trim() == "Yes");
fieldsData.IsStringOverride = (rowItems[6].Trim() == "Yes");
fieldsData.WantsOwnGet = (rowItems[7].Trim() == "Yes");
fieldsData.WantsOwnUpdate = (rowItems[8].Trim() == "Yes");
fieldsData.IsUserDefined = false;
fieldsData.UserDefinedType = "";
fieldsData.UDInitialValue = "";
JFieldsUpdater.AddRecord(fieldsData);
fieldIndex++;
}
}
}
}
private void SetSRCEFileFilter()
{
string fileFilter = "";
if (rbSRCEAccess12.Checked)
{
fileFilter = "Access DB Files (*.accdb)|*.accdb";
}
else if (rbSRCEAccessMDB.Checked)
{
fileFilter = "Access DB Files (*.mdb)|*.mdb";
}
else if (rbSRCEXML.Checked)
{
fileFilter = "XML File (*.xml|*.xml";
}
if (!string.IsNullOrEmpty(fileFilter))
{
pickSRCEDB.FileFilter = fileFilter;
pickSRCEDB.Enabled = true;
}
}
private void SRCE_CheckedChanged(object sender, EventArgs e)
{
pickSRCEDB.SelectedPath = "";
cboTableNames.Items.Clear();
SetSRCEFileFilter();
SetButtonStatus();
}
private void SetButtonStatus()
{
bool enabled = (!String.IsNullOrEmpty(cboTableNames.Text)) && (!String.IsNullOrEmpty(pickSRCEDB.SelectedPath));
ButtonOK.Enabled = enabled;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I have been a keen hobbyist programmer since getting my first computer - a Vic 20 (you had to be able to write programs then since few programs were available and all were expensive).
Retired and now living in Pewsey, Wiltshire, where I spend (far too much of) my time writing computer programs to keep my mind active.