using Newtonsoft.Json.Linq;
using System;
namespace UVC.Data
{
///
/// 서로 다른 형식이나 구조 간에 데이터를 매핑하는 기능을 제공합니다.
///
/// 이 클래스는 일반적으로 데이터베이스 레코드를 도메인 객체에 매핑하거나 서로 다른 데이터 모델 간에 변환하는 등 데이터를 한 표현에서 다른 표현으로 변환하거나 매핑하는 데 사용됩니다.
///
public class DataMapper
{
private JObject source;
private JObject guide;
public DataMapper(JObject source, JObject target)
{
this.source = source;
this.guide = target;
}
public JObject Map()
{
JObject target = new JObject();
foreach (var property in source.Properties())
{
if (guide.ContainsKey(property.Name))
{
JToken guideValue = guide[property.Name];
string guideType = guideValue?.Type.ToString() ?? "null";
if (guideType == "String" && property.Value.Type == JTokenType.String)
{
target[property.Name] = property.Value.ToObject();
}
else if (guideType == "Integer" && property.Value.Type == JTokenType.Integer)
{
target[property.Name] = property.Value.ToObject();
}
else if (guideType == "Float" && property.Value.Type == JTokenType.Float)
{
target[property.Name] = property.Value.ToObject();
}
else if (guideType == "Boolean" && property.Value.Type == JTokenType.Boolean)
{
target[property.Name] = property.Value.ToObject();
}
else if (guideType == "Object" && guideValue.ToObject