Click here to Skip to main content
15,896,348 members
Articles / Web Development / IIS

BooProd.Core - Context sensitive URL

Rate me:
Please Sign up or sign in to vote.
3.80/5 (3 votes)
22 Dec 20047 min read 47.7K   22  
Helps you create context sensitive dynamic URLs: dynamically computed URLs, depending on which server the page is generated on.
using System;
using System.Xml;
using System.Xml.Schema;
using System.Collections;

namespace BooProd.Core
{

	/// <summary>
	/// v1.2	/ 2004-12-06 / CB => Enable empty ExeDB element.
	/// v1.1	/ 2004-11-19 / CB => Modification due to difficulties for people using special ConnectionString.
	///															Now, use a full connection string.
	/// v1.0	/ 2004-11-15 / CB => Creation
	/// </summary>

	public class ExeDB {

		#region ACCESS
		/// <summary>
		/// Alias:
		/// DB Alias. Alias is a key.
		/// Alias is not a DB alias as defined in the SQL client tool.
		/// </summary>
		private string _Alias;
		public string Alias {
			get { return _Alias; }
		}

		/// <summary>
		/// ConnectionString:
		/// The ConnectionString.
		/// </summary>
		public string ConnectionString {
			get { if (ExeContext.IsLocal) return _LocalConnectionString; else return _ProdConnectionString;}
		}

		/// <summary>
		/// LocalConnectionString:
		/// The ConnectionString used for connection on local network.
		/// </summary>
		private string _LocalConnectionString;
		public string LocalConnectionString {
			get { return _LocalConnectionString;}
		}
		/// <summary>
		/// ProdConnectionString:
		/// The ConnectionString used for connection on prod network.
		/// </summary>
		private string _ProdConnectionString;
		public string ProdConnectionString {
			get { return _ProdConnectionString;}
		}

		#endregion

		#region CREATION

		/// <summary>
		/// Create a new instance from the XML node.
		/// </summary>
		/// <param name="reader"></param>
		/// <returns></returns>
		public static ExeDB newFromXML(XmlNodeReader reader) {
			// If wrong elem, or none, get out of here.
			if (reader.IsStartElement("ExeDB")==false)
				return null;
			if (reader.IsEmptyElement)
				return null;

			ExeDB vElem= new ExeDB();
			reader.ReadStartElement("ExeDB");
			vElem._Alias= reader.ReadElementString("alias");
			// Local
			reader.ReadStartElement("local");
			vElem._LocalConnectionString= reader.ReadElementString("ConnectionString");
			reader.ReadEndElement();
			// Prod
			reader.ReadStartElement("prod");
			vElem._ProdConnectionString= reader.ReadElementString("ConnectionString");
			reader.ReadEndElement();

			reader.ReadEndElement();
			return vElem;
		}
		/// <summary>
		/// 
		/// </summary>
		/// <param name="reader"></param>
		/// <returns></returns>
		public static Hashtable newAllFromXML(XmlNodeReader reader) {
			Hashtable		vHashtable= new Hashtable();
			ExeDB				vElem=			null;
			try {
				if (reader.IsStartElement("ExeDBList")==false)
					return vHashtable;

				// ExeDBList
				reader.ReadStartElement("ExeDBList");
				vElem= ExeDB.newFromXML(reader);
				while (vElem!=null) {
					vHashtable.Add(vElem.Alias, vElem);
					vElem= ExeDB.newFromXML(reader);
				}
				reader.ReadEndElement();
				// ExeDBList END
			} catch {
			}
			return vHashtable;
		}
		#endregion

		#region INIT

		/// <summary>
		/// Constructor
		/// </summary>
		public ExeDB() {}

		#endregion

	}
}

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 has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
France France
I work on a leading European telecom provider regarding on-line real time account management for B2B and B2C customers. Before this position, I worked in one of the leading European council providers of economic forecasts analyses.

I jump into software development in 1985 and never stop! I work with a lot of systems like Apple, NeXT, Unix, Windows. I develop with a lot of languages like Assembler, Pascal, C, C++, Java and C#. I play with databases like Oracle and SQL Server. I love networks and like to make systems working and cooperate themselves.

I'm very interested in MAS: Multi Agent System and really hope that computer will be human in the future. I work on BDI architecture extensions on this purpose, but this is the project of my life!

Comments and Discussions