/*
* Namespace Summary
* Copyright (C) 2005+ Bogdan Damian Constantin
* E-Mail: damianbcpetro@gmail.com
* WEB: http://www.sourceforge.net/projects/dataholder
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License 2.1 or later, as
* published by the Free Software Foundation. See the included License.txt
* or http://www.gnu.org/copyleft/lesser.html for details.
*
* Used for Transfering optional order info
*/
using System;
using System.Collections;
using System.ComponentModel;
namespace DataHolder.DataPersistence{
/// <summary>
/// Summary description for OrderByInfo.
/// </summary>
public class OrderByInfo
{
private string l_PropertyName;
private ListSortDirection l_SortDirection;
public OrderByInfo(string p_PropertyName, ListSortDirection p_SortDirection)
{
l_PropertyName = p_PropertyName;
l_SortDirection = p_SortDirection;
}
public string PropertyName
{
get{return l_PropertyName;}
}
public ListSortDirection SortDirection
{
get{return l_SortDirection;}
}
}
/// <summary>
/// Stores a collection of order info to be used in order to generate a select command
/// </summary>
public class OrderByInfoCollection : ICollection, IEnumerable , ICloneable
{
private ArrayList l_OrderByData;
public OrderByInfoCollection()
{
l_OrderByData = new ArrayList(2);
}
public OrderByInfoCollection(int InitialCapacity)
{
l_OrderByData = new ArrayList(InitialCapacity);
}
public OrderByInfoCollection(OrderByInfo [] initProp)
{
if(initProp == null)
throw new Exceptions.DataHolderPropertyException("OrderByInfoCollection Constructor parameter Error, Properties are not set");
l_OrderByData = new ArrayList(initProp.Length);
for(int i = 0; i < initProp.Length; i++)
l_OrderByData[i] = initProp[i];
}
public void Add(OrderByInfo ofi)
{
l_OrderByData.Add(ofi);
}
public void Add(OrderByInfoCollection oficoll)
{
foreach(OrderByInfo ofi in oficoll)
l_OrderByData.Add(ofi);
}
public void Remove(OrderByInfo ofi)
{
l_OrderByData.Remove(ofi);
}
public void RemoveAt(int i)
{
l_OrderByData.RemoveAt(i);
}
public void Clear()
{
l_OrderByData.Clear();
}
#region ICollection Members
public bool IsSynchronized
{
get
{
return false;
}
}
public int Count
{
get
{
if(l_OrderByData == null)
return 0;
else
return l_OrderByData.Count;
}
}
public void CopyTo(Array array, int index)
{
if(l_OrderByData == null)
return;
l_OrderByData.CopyTo(array, index);
}
public object SyncRoot
{
get
{
if(l_OrderByData == null)
return null;
else
return l_OrderByData.SyncRoot;
}
}
#endregion
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
return l_OrderByData.GetEnumerator();
}
#endregion
#region List Members
public OrderByInfo this[int index]
{
get
{
return (OrderByInfo)l_OrderByData[index];
}
set
{
l_OrderByData[index] = value;
}
}
#endregion
#region ICloneable Members
public object Clone()
{
OrderByInfoCollection newPropColl = new OrderByInfoCollection();
for(int i = 0; i < l_OrderByData.Count; i++)
newPropColl.l_OrderByData.Add(l_OrderByData[i]);
return newPropColl;
}
#endregion
}
}
|