// 创建一个元素 public Element NewElement(ElementOID oid, string content) { // 查重 { foreach (Element element in this._elements) { if (element.OID == oid) { throw new Exception($"名为 {Element.GetOidName(oid)}, OID 为 {element.OID} 的元素已经存在,无法重复创建"); } } } string verify_result = Element.VerifyElementText(oid, content); if (verify_result != null) { throw new Exception($"创建元素 oid={oid},content={content} 时数据不合法: {verify_result}"); } { Element element = new Element(-1) { OID = oid, Text = content, }; _elements.Add(element); // 注:此处不对 elements 排序。最后需要的时候(比如组装的阶段)再排序 return(element); } }
void SetElementValue(string fieldName, string value) { ElementOID oid = Element.GetOidByName(fieldName); Element element = FindElement(oid); if (element != null && element.Locked) { throw new Exception("元素处于锁定状态,不允许修改"); } if (element != null && element.Text == value) { return; } // 检查 value 是否合法 string error = Element.VerifyElementText(oid, value); if (string.IsNullOrEmpty(error) == false) { throw new Exception($"值 '{value}' 不合法: {error}"); } SetElement(oid, value); SetChanged(true); }
// 修改一个元素的文本。如果不存在这个元素,会自动创建 public Element SetElement(ElementOID oid, string content) { Element element = FindElement(oid); if (element == null) return NewElement(oid, content); element.Text = content; return element; }
// 查找一个元素 public Element FindElement(ElementOID oid) { foreach (Element element in this._elements) { if (element.OID == oid) return element; } return null; }
// 根据名字得到 OID 类型 // TODO: 用不抛出异常的方式 public static bool TryGetOidByName(string name, out ElementOID oid) { // oid = ElementOID.PII; // 把 name 变为 OID if (Enum.TryParse <ElementOID>(name, out oid) == false) { return(false); } return(true); }
string GetElementValue(string fieldName) { ElementOID oid = Element.GetOidByName(fieldName); Element element = FindElement(oid); if (element == null) { return(""); } return(element.Text); }
// 查找一个元素 public Element FindElement(ElementOID oid) { foreach (Element element in this._elements) { if (element.OID == oid) { return(element); } } return(null); }
public static bool TryGetOidByName(string name, out ElementOID oid) { try { oid = GetOidByName(name); return(true); } catch { oid = ElementOID.UII; return(false); } }
// 创建一个元素 public Element NewElement(ElementOID oid, string content) { // 查重 { foreach (Element element in this._elements) { if (element.OID == oid) { throw new Exception($"名为 {Element.GetOidName(oid)}, OID 为 {element.OID} 的元素已经存在,无法重复创建"); } } } string verify_result = Element.VerifyElementText(oid, content); if (verify_result != null) { throw new Exception($"创建元素 oid={oid},content={content} 时数据不合法: {verify_result}"); } { Element element = new Element(-1) { OID = oid, Text = content, }; if (element.OID == ElementOID.ContentParameter) { // ContentParameter 的位置要特殊处理 if (_elements.Count > 0 && _elements[0].OID == ElementOID.PII) { _elements.Insert(1, element); } else { _elements.Insert(0, element); } } else { // TODO: 尽量按照 OID 序号顺序插入 // 注:此处不对 elements 排序。最后需要的时候(比如组装的阶段)再排序 _elements.Add(element); } return(element); } }
static void SetField(ChipItem item, LogicChip chip, string fieldName) { ElementOID oid = Element.GetOidByName(fieldName); Element element = chip.FindElement(oid); if (element != null) { var info = item.GetType().GetProperty(fieldName); info.SetValue(item, element.Text); item.SetLocked(fieldName, element == null ? false : element.Locked); } }
void GetField(ChipItem item, string fieldName) { ElementOID oid = Element.GetOidByName(fieldName); Element element = _chip.FindElement(oid); if (element != null && element.Locked) { return; } var info = item.GetType().GetProperty(fieldName); _chip.SetElement(oid, (string)info.GetValue(item)); }
public static CompactionScheme AutoSelectCompactMethod( ElementOID oid, string text) { if (oid == ElementOID.Title) { return(CompactionScheme.Utf8String); } if (oid == ElementOID.OMF) { return(CompactionScheme.Utf8String); } return(AutoSelectCompactMethod(text)); }
// return: // 非null 表示找到,并删除 // null 表示没有找到指定的元素 public Element RemoveElement(ElementOID oid) { foreach (Element element in this._elements) { if (element.OID == oid) { if (element.Locked) throw new Exception("该元素被锁定,无法删除"); _elements.Remove(element); return element; } } return null; }
// 验证输入的元素文本是否合法 // return: // null 合法 // 其他 返回不合法的文字解释 public static string VerifyElementText(ElementOID oid, string text) { if (oid == ElementOID.PII) { return(VerifyPII(text)); } if (oid == ElementOID.OwnerInstitution) { return(VerifyOwnerInstitution(text)); } if (oid == ElementOID.SetInformation) { return(VerifySetInformation(text)); } if (oid == ElementOID.TypeOfUsage) { return(VerifyTypeOfUsage(text)); } if (oid == ElementOID.Gs1ProductIndentifier) { return(VerifyGs1ProductIndentifier(text)); } if (oid == ElementOID.MediaFormat) { return(VerifyMediaFormat(text)); } if (oid == ElementOID.SupplyChainStage) { return(VerifySupplyChainStage(text)); } if (oid == ElementOID.IllBorrowingInstitution) { return(VerifyIBI(text)); } return(null); }
public static string GetOidName(ElementOID oid) { return(Enum.GetName(typeof(ElementOID), oid)); }