#![allow(clippy::all, dead_code, unused)]
use cimdecoder::CimDataset;
use crate::Violation;
use crate::helpers::*;
pub fn validate_p61970_301_diagramlayout_ap_con_complex_notsolvedmas_shacl(dataset: &CimDataset) -> Vec<Violation> {
let mut v = Vec::new();
v.extend(check_p61970_301_diagramlayout_ap_con_complex_notsolvedmas_shacl_text_diagram_object_diagram_obje_etc(dataset));
v.extend(check_p61970_301_diagramlayout_ap_con_complex_notsolvedmas_shacl_diagram_object_diagram_object_id_etc(dataset));
v
}
pub fn check_p61970_301_diagramlayout_ap_con_complex_notsolvedmas_shacl_text_diagram_object_diagram_obje_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("TextDiagramObject").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::TextDiagramObject>() {
Some(o) => o, None => continue,
};
let ref_mrid = match obj.base.identified_object_.as_ref() {
Some(r) => &r.mrid, None => continue,
};
if let Some(ref_entry) = dataset.entries.get(ref_mrid) {
if ref_entry.element.type_name() == "GeneratingUnit" {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dln301:DiagramObject.IdentifiedObject-GeneratingUnitvalueType".to_string(),
class: "TextDiagramObject".to_string(),
property: "DiagramObject.IdentifiedObject".to_string(),
message: "The association DiagramObject.IdentifiedObject points to a GeneratingUnit and not SynchronousMachine.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:453:DL:DiagramObject:SynchronousMachine".to_string(),
description: "The DiagramObject should link to SynchronousMachine and not GeneratingUnit.".to_string(),
});
}
}
}
violations
}
pub fn check_p61970_301_diagramlayout_ap_con_complex_notsolvedmas_shacl_diagram_object_diagram_object_id_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiagramObject").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiagramObject>() {
Some(o) => o, None => continue,
};
let ref_mrid = match obj.identified_object_.as_ref() {
Some(r) => &r.mrid, None => continue,
};
if let Some(ref_entry) = dataset.entries.get(ref_mrid) {
if ref_entry.element.type_name() == "GeneratingUnit" {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dln301:DiagramObject.IdentifiedObject-GeneratingUnitvalueType".to_string(),
class: "DiagramObject".to_string(),
property: "DiagramObject.IdentifiedObject".to_string(),
message: "The association DiagramObject.IdentifiedObject points to a GeneratingUnit and not SynchronousMachine.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:453:DL:DiagramObject:SynchronousMachine".to_string(),
description: "The DiagramObject should link to SynchronousMachine and not GeneratingUnit.".to_string(),
});
}
}
}
violations
}