Click here to Skip to main content
15,896,154 members
Articles / Programming Languages / XML

Create Data Classes

Rate me:
Please Sign up or sign in to vote.
4.88/5 (31 votes)
4 Mar 2011CPOL10 min read 135.9K   2.5K   167  
An application that creates a C# class to read/write data to/from an Access, SQLite, or XML database.
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();
		}

		

	}
}

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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Retired
United Kingdom United Kingdom
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.

Comments and Discussions