using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.IO;
using System.Text;
using System.Windows.Forms;
using JGBaseForm;
/*
* Copyright Jeff Gaines 2007 - 2011 (jeff@jgaines.co.uk)
* Free licence for private use
* Please contact the author if you wish to use the code commercially
*/
namespace JGCreateDataClasses
{
/// <summary>
/// Miscellaneous Functions including converting database Access/XML
/// </summary>
public partial class JMiscFuncPanel : UserControl
{
internal event EventHandler<JMessageArgs> MessageRaised;
protected virtual void OnMessageRaised(object sender, JMessageArgs e)
{
EventHandler<JMessageArgs> handler = MessageRaised;
if (handler != null)
handler(sender, e);
}
internal void RaiseMessageEvent(object sender, string message, bool beep)
{
JMessageArgs e = new JMessageArgs(message, beep);
OnMessageRaised(sender, e);
}
public JMiscFuncPanel()
{
InitializeComponent();
ControlInitialise();
}
private void ControlInitialise()
{
}
private void btnShowAppSetttings_Click(object sender, EventArgs e)
{
lblApplicationSettingsPath.Text = JCommon.AppSettingsPath();
}
private void JMiscFuncPanel_Resize(object sender, EventArgs e)
{
ControlResize();
}
private void ControlResize()
{
lvFiles.Columns[0].Width = lvFiles.ClientSize.Width - 4;
}
private void FillListView()
{
ListViewItem lvItem;
string appPath = Application.StartupPath;
DirectoryInfo dInfo = new DirectoryInfo(appPath);
FileInfo[] fInfo = dInfo.GetFiles("*.accdb");
foreach (FileInfo current in fInfo)
{
lvItem = new ListViewItem(current.FullName);
lvFiles.Items.Add(lvItem);
}
fInfo = dInfo.GetFiles("*.mdb");
foreach (FileInfo current in fInfo)
{
lvItem = new ListViewItem(current.FullName);
lvFiles.Items.Add(lvItem);
}
fInfo = dInfo.GetFiles("*.xml");
foreach (FileInfo current in fInfo)
{
lvItem = new ListViewItem(current.FullName);
lvFiles.Items.Add(lvItem);
}
}
private void btnFillLV_Click(object sender, EventArgs e)
{
FillListView();
}
private void btnCopyFiles_Click(object sender, EventArgs e)
{
int numCopied = 0;
string folderPath = JCommon.AppSettingsPath();
// For testing
folderPath = @"D:\Temp";
string fileName;
foreach (ListViewItem current in lvFiles.CheckedItems)
{
try
{
fileName = Path.GetFileName(current.Text);
File.Copy(current.Text, Path.Combine(folderPath, fileName));
numCopied++;
}
catch
{
}
}
RaiseMessageEvent(this, numCopied.ToString() + " files copied", false);
}
private void btnTransfer_Click(object sender, EventArgs e)
{
int numTransferred = TransferData();
RaiseMessageEvent(this, numTransferred.ToString() + " records ransferred", false);
}
private List<JProjectData> GetAccess12Records()
{
return JProjectUpdaterAC12.AllRecords();
}
private List<JProjectData> GetAccessMDBRecords()
{
return JProjectUpdaterACMDB.AllRecords();
}
private List<JProjectData> GetXMLRecords()
{
return JProjectUpdaterXML.AllRecords();
}
private int TransferDataToXML(List<JProjectData>listRecords)
{
int numTransferred = 0;
foreach (JProjectData current in listRecords)
{
JProjectUpdaterXML.UpdateRecord(current);
numTransferred++;
}
return numTransferred;
}
private int TransferData()
{
int numTransferred = 0;
if (!rbSRCEAccess12.Checked && !rbSRCEAccessMDB.Checked && !rbSRCEXML.Checked)
{
RaiseMessageEvent(this, "Please select the source data type", true);
return numTransferred;
}
if (!rbDESTAccess12.Checked && !rbDESTAccessMDB.Checked && !rbDESTXML.Checked)
{
RaiseMessageEvent(this, "Please select the destination data type", true);
return numTransferred;
}
string srceDBPath = pickSRCEDB.SelectedPath;
if (string.IsNullOrEmpty(srceDBPath))
{
RaiseMessageEvent(this, "Please Select Source Database", true);
return numTransferred;
}
FileInfo fInfo = new FileInfo(srceDBPath);
if (!fInfo.Exists)
{
RaiseMessageEvent(this, "Cannot Find Source Database File", true);
return numTransferred;
}
string destDBPath = pickDESTDB.SelectedPath;
if (string.IsNullOrEmpty(destDBPath))
{
RaiseMessageEvent(this, "Please Select Destination Database", true);
return numTransferred;
}
fInfo = new FileInfo(destDBPath);
if (!fInfo.Exists)
{
RaiseMessageEvent(this, "Cannot Find Destination Database File", true);
return numTransferred;
}
string originalSRCEPath = "";
string originalDESTPath = "";
try
{
if (rbSRCEAccess12.Checked)
{
originalSRCEPath = JProjectUpdaterAC12.DataBasePath;
}
else if (rbSRCEAccessMDB.Checked)
{
originalSRCEPath = JProjectUpdaterACMDB.DataBasePath;
}
else if (rbSRCEXML.Checked)
{
originalSRCEPath = JProjectUpdaterXML.DataBasePath;
}
if (rbDESTAccess12.Checked)
{
originalDESTPath = JProjectUpdaterAC12.DataBasePath;
}
else if (rbDESTAccessMDB.Checked)
{
originalDESTPath = JProjectUpdaterACMDB.DataBasePath;
}
else if (rbDESTXML.Checked)
{
originalDESTPath = JProjectUpdaterXML.DataBasePath;
}
List<JProjectData> listRecords;
if (rbSRCEAccess12.Checked)
{
listRecords = GetAccess12Records();
}
else if (rbSRCEAccessMDB.Checked)
{
listRecords = GetAccessMDBRecords();
}
else if (rbSRCEXML.Checked)
{
listRecords = GetXMLRecords();
}
else
{
return numTransferred;
}
if (rbDESTAccess12.Checked)
{
numTransferred = TransferDataToAC12(listRecords);
}
else if (rbDESTAccessMDB.Checked)
{
numTransferred = TransferDataToACMDB(listRecords);
}
else if (rbDESTXML.Checked)
{
numTransferred = TransferDataToXML(listRecords);
}
}
finally
{
if (rbSRCEAccess12.Checked)
{
JProjectUpdaterAC12.DataBasePath = originalSRCEPath;
}
else if (rbSRCEAccessMDB.Checked)
{
JProjectUpdaterACMDB.DataBasePath = originalSRCEPath;
}
else if (rbSRCEXML.Checked)
{
JProjectUpdaterXML.DataBasePath = originalSRCEPath;
}
if (rbDESTAccess12.Checked)
{
JProjectUpdaterAC12.DataBasePath = originalDESTPath;
}
else if (rbDESTAccessMDB.Checked)
{
JProjectUpdaterACMDB.DataBasePath = originalDESTPath;
}
else if (rbDESTXML.Checked)
{
JProjectUpdaterXML.DataBasePath = originalDESTPath;
}
}
return numTransferred;
}
private int TransferDataToAC12(List<JProjectData> listRecords)
{
int numTransferred = 0;
foreach (JProjectData current in listRecords)
{
JProjectUpdaterAC12.UpdateRecord(current);
numTransferred++;
}
return numTransferred;
}
private int TransferDataToACMDB(List<JProjectData> listRecords)
{
int numTransferred = 0;
foreach (JProjectData current in listRecords)
{
JProjectUpdaterACMDB.UpdateRecord(current);
numTransferred++;
}
return numTransferred;
}
private void SetDESTFileFilter()
{
string fileFilter = "";
if (rbDESTAccess12.Checked)
{
fileFilter = "Access DB Files (*.accdb)|*.accdb";
}
else if (rbDESTAccessMDB.Checked)
{
fileFilter = "Access DB Files (*.mdb)|*.mdb";
}
else if (rbDESTXML.Checked)
{
fileFilter = "XML File (*.xml|*.xml";
}
if (!string.IsNullOrEmpty(fileFilter))
pickDESTDB.FileFilter = fileFilter;
}
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;
}
private void SRCE_CheckedChanged(object sender, EventArgs e)
{
SetSRCEFileFilter();
}
private void DEST_CheckedChanged(object sender, EventArgs e)
{
SetDESTFileFilter();
}
}
}