/*
* 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 filters
*/
using System;
namespace DataHolder.DataPersistence{
public enum CommandLockType{Normal = 1, Nolock = 2, Rowlock = 3};
/// <summary>
/// Contains the options after which a select command for master and details table is made
/// </summary>
public class SelectCommandOption : IDisposable
{
private CommandLockType l_LockType = CommandLockType.Normal;
private CommandLockType l_DetailsLockType = CommandLockType.Normal;
private FilterSentence l_Sentence = new FilterSentence();
private OrderByInfoCollection l_OrderByDates = new OrderByInfoCollection(1);
private bool l_LoadTypedProperties = true;
private SelectPhraseOptions l_SelectPhraseOptions = new SelectPhraseOptions();
public SelectCommandOption()
{
}
public SelectCommandOption(CommandLockType p_LockType)
{
l_LockType = p_LockType;
}
/// <summary>
/// Describe the select phrase option
/// </summary>
public SelectPhraseOptions SelectOptions
{
get{return l_SelectPhraseOptions;}
}
/// <summary>
/// The lock that will be used in the select command for the master table
/// </summary>
public CommandLockType LockType
{
get{return l_LockType;}
set{l_LockType = value;}
}
/// <summary>
/// The lock that will be used in the select command for the details tables
/// </summary>
public CommandLockType DetailsLockType
{
get{return l_DetailsLockType;}
set{l_DetailsLockType = value;}
}
/// <summary>
/// where sentence
/// </summary>
public FilterSentence Sentence
{
get{return l_Sentence;}
}
/// <summary>
/// order by info for the main select
/// </summary>
public OrderByInfoCollection OrderByInfo
{
get{return l_OrderByDates;}
}
/// <summary>
/// Set's if the Typed details properties are loaded
/// </summary>
public bool LoadTypedProperties
{
get{return l_LoadTypedProperties;}
set{l_LoadTypedProperties = value;}
}
#region IDisposable Members
public void Dispose()
{
l_Sentence.Dispose();
l_Sentence = null;
l_OrderByDates.Clear();
l_OrderByDates = null;
l_SelectPhraseOptions = null;
}
#endregion
}
/// <summary>
/// Describe the select phrase option
/// </summary>
public class SelectPhraseOptions
{
private int l_Top = -1;
private bool l_UsePercentForTop = false;
private bool l_UseDistinct;
/// <summary>
/// load how many rows to load if you put here a value grater than 0 and has no effect otherwise
/// can be used also woth UsePercentForTop
/// </summary>
public int Top
{
get{return l_Top;}
set{l_Top = value;}
}
/// <summary>
/// Tells that the top will be calculated by percentage. Top property must be set
/// </summary>
public bool UsePercentForTop
{
get{return l_UsePercentForTop;}
set{l_UsePercentForTop = value;}
}
/// <summary>
/// if set to true the select will use distinct
/// </summary>
public bool UseDistinct
{
get{return l_UseDistinct;}
set{l_UseDistinct = value;}
}
}
}
|