using System;
using System.Data;
using System.Collections;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using EwEAI.Data;
namespace EwEAI.Business.Classes.IT
{
/// <summary>
/// Summary description for Programs
/// </summary>
public class ProgramMan : BusinessObject
{
public ProgramMan():base("Programs")
{
}
protected override void AfterFill()
{
ProgramData.DefaultView.Sort = "ProgramName ASC";
ProgramTreeData.DefaultView.Sort = "Parent ASC,ProgramName ASC";
ProgramData.ChildRelations.Add(new DataRelation("下级程序",
ProgramData.Columns["ProgramName"],
ProgramTreeData.Columns["Parent"])
);
_TableCaptions["Programs"] = "程序管理";
_TableCaptions["ProgramTrees"] = "下级程序";
}
protected override void InializeStruct()
{
//MasterData = new DataObject(TableName, UserName);
ChildData AChild = new ChildData(new DataObject("ProgramTrees", IT.UserMan.UserName),
"ProgramTrees",
new string[] { "ProgramName" },
new string[] { "Parent" },
TableName);
Children[AChild.TableName] = AChild;
}
protected override void ProcessBusinessFlow(DataSet set)
{
// throw new Exception("The method or operation is not implemented.");
}
public int Count
{
get
{
return ProgramData.Rows.Count;
}
}
public DataTable ProgramData
{
get
{
return BusinessData.Tables["Programs"];
}
}
public DataTable ProgramTreeData
{
get
{
return BusinessData.Tables["ProgramTrees"];
}
}
public string[] GetTopMenu()
{
if (BusinessData == null)
return null;
ArrayList tmp = new ArrayList();
foreach (DataRow dr in ProgramData.Rows)
{
if (dr.GetChildRows(ProgramData.ChildRelations[0]).Length > 0)
tmp.Add(dr["ProgramName"].ToString());
}
string[] Result = new string[tmp.Count];
for (int i = 0; i < tmp.Count; i++)
Result[i] = tmp[i].ToString();
return Result;
}
public string[] GetTopMenu(string UserName, DataTable ProgramPrivileges)
{
if (BusinessData == null)
return null;
ArrayList tmp = new ArrayList();
foreach (DataRow dr in ProgramData.Rows)
{
if (dr.GetChildRows(ProgramData.ChildRelations[0]).Length > 0)
{
ProgramPrivileges.DefaultView.Sort = "UserName ASC,ProgramName ASC";
int index = ProgramPrivileges.DefaultView.Find(new object[]{
UserName,dr["ProgramName"].ToString()});
if (index != -1)
tmp.Add(dr["ProgramName"].ToString());
}
}
string[] Result = new string[tmp.Count];
for (int i = 0; i < tmp.Count; i++)
Result[i] = tmp[i].ToString();
return Result;
}
public Program this[int index]
{
get
{
if (index == -1)
return null;
DataRow dr = ProgramData.DefaultView[index].Row;
Program Result = new Program();
Result.ProgramName = dr["ProgramName"].ToString();
Result.ProgramCaption = dr["ProgramCaption"].ToString();
Result.Author = dr["Author"].ToString();
if (dr["CreateDate"] != null)
Result.CreateDate = (DateTime)dr["CreateDate"];
Image img = null;
if (dr["Icon"].ToString() != "")
img = Image.FromStream(new MemoryStream((byte[])dr["Icon"]));
Result.LargeImage = img;
if (dr["SmallIcon"].ToString() != "")
img = Image.FromStream(new MemoryStream((byte[])dr["SmallIcon"]));
Result.SmallImage = img;
Result.Version = dr["Version"].ToString();
foreach (DataRow childRow in dr.GetChildRows(BusinessData.Relations[0]))
{
ProgramTree tree = new ProgramTree(childRow["Parent"].ToString(),
childRow["ProgramName"].ToString());
Result[tree.Son] = tree;
}
return Result;
}
set
{
DataRow dr = ProgramData.DefaultView[index].Row;
dr.BeginEdit();
dr["ProgramName"] = value.ProgramName;
dr["ProgramCaption"] = value.ProgramCaption;
dr["Author"] = value.Author;
dr["CreateDate"] = value.CreateDate;
dr["Version"] = value.Version;
MemoryStream l_buffer = null;
if (value.LargeImage != null)
{
value.LargeImage.Save(l_buffer, ImageFormat.Jpeg);
dr["Icon"] = l_buffer.ToArray();
}
MemoryStream s_buffer = null;
if (value.SmallImage != null)
{
value.SmallImage.Save(s_buffer, ImageFormat.Jpeg);
dr["SmallIcon"] = s_buffer.ToArray();
}
dr.EndEdit();
foreach (DataRow childRow in dr.GetChildRows(BusinessData.Relations[0]))
{
childRow.Delete();
}
foreach (ProgramTree tree in value._Children.Values)
{
DataRow childRow = ProgramTreeData.NewRow();
childRow["Parent"] = tree.Parent;
childRow["ProgramName"] = tree.Son;
ProgramTreeData.Rows.Add(childRow);
}
}
}
public Program this[string ProgramName]
{
get
{
return this[GetIndexByName(ProgramName)];
}
set
{
this[GetIndexByName(ProgramName)] = value;
}
}
public void AddAProgram(Program AProgram)
{
DataRowView dr = ProgramData.DefaultView.AddNew();
dr["ProgramName"] = AProgram.ProgramName;
dr.EndEdit();
this[AProgram.ProgramName] = AProgram;
}
}
public class ProgramTree
{
public ProgramTree()
{
}
public ProgramTree(string Parent, string Son)
{
this._Parent = Parent;
this._Son = Son;
}
public string Parent
{
get
{
return _Parent;
}
set
{
_Parent = value;
}
}
private string _Parent;
public string Son
{
get
{
return _Son;
}
set
{
_Son = value;
}
}
private string _Son;
}
public class Program
{
public ProgramTree this[int Index]
{
get
{
int count = 0;
foreach (Object obj in _Children.Values)
{
if (count == Index)
{
return (ProgramTree)obj;
}
count++;
}
return null;
}
set
{
int count = 0;
string SonName = null;
foreach (ProgramTree obj in _Children.Values)
{
if (count == Index)
{
SonName = obj.Son;
break;
}
count++;
}
if (SonName != null)
{
_Children[SonName] = value;
return;
}
_Children.Add(value.Son, value);
}
}
public Hashtable Children
{
get
{
return _Children;
}
}
internal Hashtable _Children = new Hashtable(8);
public ProgramTree this[string Son]
{
get
{
return (ProgramTree)_Children[Son];
}
set
{
_Children[Son] = value;
}
}
public string ProgramName
{
get
{
return _ProgramName;
}
set
{
_ProgramName = value;
}
}
private string _ProgramName = "";
public string ProgramCaption
{
get
{
return _ProgramCaption;
}
set
{
_ProgramCaption = value;
}
}
private string _ProgramCaption = "";
public string Author
{
get
{
return _Author;
}
set
{
_Author = value;
}
}
private string _Author = "";
public string Version
{
get
{
return _Version;
}
set
{
_Version = value;
}
}
private string _Version = "";
public string Remark
{
get
{
return _Remark;
}
set
{
_Remark = value;
}
}
private string _Remark = "";
public DateTime CreateDate
{
get
{
return _CreateDate;
}
set
{
_CreateDate = value;
}
}
private DateTime _CreateDate;
public Image LargeImage
{
get
{
return _LargeImage;
}
set
{
_LargeImage = value;
}
}
private Image _LargeImage = null;
public Image SmallImage
{
get
{
return _SmallImage;
}
set
{
_SmallImage = value;
}
}
private Image _SmallImage = null;
}
}