- 모든 도서관 검색기에서 검색결과 없음시 구체적인 HTML 조각 추출 - BookSearchResult에 Resulthtml 속성 추가하여 매칭된 HTML 컨텍스트 저장 - Helper_LibraryDelaySettings.cs 추가로 도서관별 검색 지연시간 XML 저장 - Check_copyWD.cs에 dvc_resulthtml 컬럼 표시 및 지연시간 저장 UI 구현 - 15개 SearchModel 파일에서 htmlContent 1000자 자르기를 의미있는 메시지로 교체 - HTTP 검색기들에 한글 인코딩 문제 해결을 위한 헤더 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
170 lines
5.7 KiB
C#
170 lines
5.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Xml;
|
|
using System.Text;
|
|
|
|
namespace UniMarc
|
|
{
|
|
/// <summary>
|
|
/// 도서관별 지연시간 설정을 관리하는 클래스
|
|
/// </summary>
|
|
public class Helper_LibraryDelaySettings
|
|
{
|
|
private static readonly string SettingsFileName = "LibraryDelaySettings.xml";
|
|
private static readonly string SettingsFilePath = Path.Combine(
|
|
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
|
"UniMarc",
|
|
SettingsFileName
|
|
);
|
|
|
|
private Dictionary<string, int> _libraryDelaySettings;
|
|
|
|
public Helper_LibraryDelaySettings()
|
|
{
|
|
_libraryDelaySettings = new Dictionary<string, int>();
|
|
LoadSettings();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 도서관별 지연시간 설정을 로드
|
|
/// </summary>
|
|
private void LoadSettings()
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(SettingsFilePath))
|
|
{
|
|
var xmlDoc = new XmlDocument();
|
|
xmlDoc.Load(SettingsFilePath);
|
|
|
|
var libraryNodes = xmlDoc.SelectNodes("//LibraryDelaySettings/Library");
|
|
if (libraryNodes != null)
|
|
{
|
|
foreach (XmlNode node in libraryNodes)
|
|
{
|
|
var name = node.Attributes?["Name"]?.Value;
|
|
var delayStr = node.Attributes?["Delay"]?.Value;
|
|
|
|
if (!string.IsNullOrEmpty(name) && int.TryParse(delayStr, out int delay))
|
|
{
|
|
_libraryDelaySettings[name] = delay;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"도서관 지연시간 설정 로드 오류: {ex.Message}");
|
|
_libraryDelaySettings = new Dictionary<string, int>();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 도서관별 지연시간 설정을 저장
|
|
/// </summary>
|
|
private void SaveSettings()
|
|
{
|
|
try
|
|
{
|
|
// 디렉토리 생성
|
|
var directory = Path.GetDirectoryName(SettingsFilePath);
|
|
if (!Directory.Exists(directory))
|
|
{
|
|
Directory.CreateDirectory(directory);
|
|
}
|
|
|
|
// XML 파일로 저장
|
|
var xmlDoc = new XmlDocument();
|
|
var declaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
|
|
xmlDoc.AppendChild(declaration);
|
|
|
|
var root = xmlDoc.CreateElement("LibraryDelaySettings");
|
|
xmlDoc.AppendChild(root);
|
|
|
|
foreach (var kvp in _libraryDelaySettings)
|
|
{
|
|
var libraryElement = xmlDoc.CreateElement("Library");
|
|
libraryElement.SetAttribute("Name", kvp.Key);
|
|
libraryElement.SetAttribute("Delay", kvp.Value.ToString());
|
|
root.AppendChild(libraryElement);
|
|
}
|
|
|
|
xmlDoc.Save(SettingsFilePath);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"도서관 지연시간 설정 저장 오류: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 특정 도서관의 지연시간 설정을 가져옴
|
|
/// </summary>
|
|
/// <param name="libraryName">도서관 이름</param>
|
|
/// <returns>지연시간(초), 설정이 없으면 0</returns>
|
|
public int GetDelay(string libraryName)
|
|
{
|
|
if (string.IsNullOrEmpty(libraryName))
|
|
return 0;
|
|
|
|
return _libraryDelaySettings.TryGetValue(libraryName, out int delay) ? delay : 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 특정 도서관의 지연시간 설정을 저장
|
|
/// </summary>
|
|
/// <param name="libraryName">도서관 이름</param>
|
|
/// <param name="delaySeconds">지연시간(초)</param>
|
|
public void SetDelay(string libraryName, int delaySeconds)
|
|
{
|
|
if (string.IsNullOrEmpty(libraryName))
|
|
return;
|
|
|
|
if (delaySeconds < 0)
|
|
delaySeconds = 0;
|
|
|
|
_libraryDelaySettings[libraryName] = delaySeconds;
|
|
SaveSettings();
|
|
|
|
Console.WriteLine($"도서관 지연시간 설정 저장: {libraryName} = {delaySeconds}초");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 모든 도서관 지연시간 설정을 가져옴
|
|
/// </summary>
|
|
/// <returns>도서관명-지연시간 딕셔너리</returns>
|
|
public Dictionary<string, int> GetAllSettings()
|
|
{
|
|
return new Dictionary<string, int>(_libraryDelaySettings);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 특정 도서관의 지연시간 설정을 제거
|
|
/// </summary>
|
|
/// <param name="libraryName">도서관 이름</param>
|
|
public void RemoveDelay(string libraryName)
|
|
{
|
|
if (string.IsNullOrEmpty(libraryName))
|
|
return;
|
|
|
|
if (_libraryDelaySettings.ContainsKey(libraryName))
|
|
{
|
|
_libraryDelaySettings.Remove(libraryName);
|
|
SaveSettings();
|
|
Console.WriteLine($"도서관 지연시간 설정 제거: {libraryName}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 모든 지연시간 설정을 초기화
|
|
/// </summary>
|
|
public void ClearAllSettings()
|
|
{
|
|
_libraryDelaySettings.Clear();
|
|
SaveSettings();
|
|
Console.WriteLine("모든 도서관 지연시간 설정 초기화");
|
|
}
|
|
}
|
|
} |