📄 sourceitem.cs
字号:
using System;
using System.Collections;
namespace SourceFtp.SourceLibrary
{
public enum FileType
{
NotValidFormat = 0,
CheckOut = 1,
History = 2,
LatestVersion = 3
}
public class SourceFileInfo
{
public SourceFileInfo()
{
Type = FileType.NotValidFormat;
}
public string Name;
public FileSystem.File File;
public FileType Type;
public int Version; //valido solo nel caso History
public string CheckOutBy; //valido solo nel caso CheckOut e History
}
public class SourceFileInfoCollection : CollectionBase
{
public int Add(SourceFileInfo p_Info)
{
return List.Add(p_Info);
}
public void Remove(SourceFileInfo p_Info)
{
List.Remove(p_Info);
}
public SourceFileInfo this[int p_Index]
{
get{return (SourceFileInfo)List[p_Index];}
}
}
public enum SourceItemStatus
{
NotValid = 0,
CheckIn = 1,
CheckOut = 2
}
/// <summary>
/// Summary description for SourceItem.
/// </summary>
public class SourceItem
{
private string m_Name;
private FileSystem.Directory m_Directory;
private SourceFileInfoCollection m_FileInfo = new SourceFileInfoCollection();
private SourceLibrary m_Library;
public SourceItem(SourceLibrary p_Library, string p_Name, FileSystem.Directory p_Directory)
{
m_Name = p_Name;
m_Directory = p_Directory;
m_Library = p_Library;
}
public string Name
{
get{return m_Name;}
}
public void RefreshStatus()
{
//clear della lista
LinkedFiles.Clear();
//ricarica la struttura
foreach(FileSystem.File f in m_Directory.Files)
{
SourceFileInfo info = m_Library.ParseFileName(f);
if (info.Name.ToUpper() == m_Name.ToUpper())
{
LinkedFiles.Add(info);
}
}
}
public SourceFileInfoCollection LinkedFiles
{
get{return m_FileInfo;}
}
public FileSystem.Directory Directory
{
get{return m_Directory;}
}
public string DateModified
{
get
{
SourceFileInfo i = LatestFile;
if (i!=null)
return i.File.DateModified;
else
return "ERROR";
}
}
public string CheckOutBy
{
get
{
SourceFileInfo info = LatestFile;
if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckIn || info==null)
return "ERROR"; //errore
else
{
return info.CheckOutBy;
}
}
}
public SourceFileInfo CheckInFile
{
get
{
if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckOut)
return null; //errore
else
{
foreach(SourceFileInfo info in m_FileInfo)
{
if (info.Type == FileType.LatestVersion)
return info;
}
return null; //errore
}
}
}
public SourceFileInfo CheckOutFile
{
get
{
if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckIn)
return null; //errore
else
{
foreach(SourceFileInfo info in m_FileInfo)
{
if (info.Type == FileType.CheckOut)
return info;
}
return null; //errore
}
}
}
public SourceFileInfo LatestFile
{
get
{
if (Status==SourceItemStatus.NotValid)
return null; //errore
else
{
foreach(SourceFileInfo info in m_FileInfo)
{
if (info.Type == FileType.CheckOut)
return info;
else if (info.Type == FileType.LatestVersion)
return info;
}
return null; //errore
}
}
}
public long Size
{
get
{
long l_Size = 0;
foreach(SourceFileInfo info in m_FileInfo)
{
l_Size += info.File.Size;
}
return l_Size;
}
}
public SourceItemStatus Status
{
get
{
SourceItemStatus l_Status = SourceItemStatus.NotValid;
try
{
int l_CheckOut = 0;
int l_NotValid = 0;
int l_LatestVersion = 0;
foreach(SourceFileInfo info in m_FileInfo)
{
if (info.Type == FileType.NotValidFormat || m_Name != info.Name)
l_NotValid++;
else if (info.Type == FileType.CheckOut)
l_CheckOut++;
else if (info.Type == FileType.LatestVersion)
l_LatestVersion++;
}
//se
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -