using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace IStation.DAL
{
///
/// 曲线分析点
///
public partial class CurveAnalyzePoint
{
#region Path
///
///
///
public string GetRootFolder(long monitorDataSourcesId)
{
var monitorDataSourcesFolder = FileHelper.GetMonitorDataSourcesFolder(SettingsD.Project.ID, monitorDataSourcesId);
if (!Directory.Exists(monitorDataSourcesFolder))
Directory.CreateDirectory(monitorDataSourcesFolder);
var curveAnalyzeDataFolder = Path.Combine(monitorDataSourcesFolder, SettingsD.File.CurveAnalyzeDataFolder);
if (!Directory.Exists(curveAnalyzeDataFolder))
Directory.CreateDirectory(curveAnalyzeDataFolder);
return curveAnalyzeDataFolder;
}
///
///
///
public string GetCurveAnalyzePacketFolder(long monitorDataSourcesId, long curveAnalyzeId)
{
var rootFolder = GetRootFolder(monitorDataSourcesId);
var curveAnalyzeFolderPath = Path.Combine(rootFolder, curveAnalyzeId.ToString());
if (!Directory.Exists(curveAnalyzeFolderPath))
Directory.CreateDirectory(curveAnalyzeFolderPath);
return curveAnalyzeFolderPath;
}
///
///
///
public bool GetCurveAnalyzePointFile(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, out int recordCount, out string filePath)
{
recordCount = 0;
filePath = string.Empty;
var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId);
var fileInfo = GetCurveAnalyzePointFileInfo(curveAnalyzePacketFolderPath, curveAnalyzePacketId);
if (fileInfo == null)
return false;
recordCount = fileInfo.RecordCount;
filePath = fileInfo.FullName;
return File.Exists(filePath);
}
///
///
///
public bool GetCurveAnalyzePointFile(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, int recordCount, out string filePath)
{
var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId);
var fileName = $"{curveAnalyzePacketId}{SettingsD.File.FileNameSpacer}{recordCount}";
filePath = Path.Combine(curveAnalyzePacketFolderPath, fileName + SettingsD.File.SignalRecordFileExtension);
return File.Exists(filePath);
}
#endregion
///
///
///
public List Get(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId)
{
var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath);
if (!valid)
return default;
var list = new List(recordCount);
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using (var sr = new StreamReader(fs, Encoding.UTF8))
{
var strLine = string.Empty;
while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
{
var content = FromDsString(strLine);
list.Add(content);
}
}
return list;
}
///
///
///
public List GetValid(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId)
{
var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath);
if (!valid)
return default;
var list = new List(recordCount);
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using (var sr = new StreamReader(fs, Encoding.UTF8))
{
var strLine = string.Empty;
while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
{
var content = FromDsString(strLine);
if (content.Status == Model.AnalyzePointStatus.Valid)
{
list.Add(content);
}
}
}
return list;
}
///
/// 保存
///
public bool Save(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, List list)
{
if (list == null || list.Count < 1)
return default;
GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, list.Count, out string filePath);
using (var fs = new FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, FileShare.ReadWrite))
using (var sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
{
foreach (var point in list)
{
var strLine = ToDsString(point);
sw.WriteLine(strLine);
}
}
return true;
}
///
/// 是否存在
///
public bool Exists(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId)
{
var exist = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath);
return exist;
}
///
/// 清除
///
public void Clear(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId)
{
var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath);
if (!valid)
return;
File.Delete(filePath);
}
///
/// 清除
///
public void Clear(long monitorDataSourcesId, long curveAnalyzeId)
{
var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId);
var list = GetCurveAnalyzePointFileInfoList(curveAnalyzePacketFolderPath, curveAnalyzeId);
if (list == null || !list.Any())
return;
foreach (var fileInfo in list)
{
File.Delete(fileInfo.FullName);
}
}
}
}