use crate::view::{
borrowed_entity, optional_enum, optional_ref, optional_refs, optional_text, required_text,
ClassificationView,
};
use crate::ClassificationResult;
borrowed_entity!(DocumentInformation, "IFCDOCUMENTINFORMATION");
impl<'m> DocumentInformation<'m> {
pub fn identification(self) -> ClassificationResult<&'m str> {
required_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Identification")?,
"Identification",
)
}
pub fn name(self) -> ClassificationResult<&'m str> {
required_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Name")?,
"Name",
)
}
pub fn description(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Description")?,
"Description",
)
}
pub fn location(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Location")?,
"Location",
)
}
pub fn purpose(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Purpose")?,
"Purpose",
)
}
pub fn intended_use(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("IntendedUse")?,
"IntendedUse",
)
}
pub fn scope(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Scope")?,
"Scope",
)
}
pub fn revision(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("Revision")?,
"Revision",
)
}
pub fn document_owner_id(self) -> ClassificationResult<Option<ifc_model::EntityId>> {
optional_ref(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.slot("DocumentOwner")?,
"DocumentOwner",
)
}
pub fn editors(self) -> ClassificationResult<Option<Vec<ifc_model::EntityId>>> {
optional_refs(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.slot("Editors")?,
"Editors",
)
}
pub fn creation_time(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("CreationTime")?,
"CreationTime",
)
}
pub fn last_revision_time(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("LastRevisionTime")?,
"LastRevisionTime",
)
}
pub fn electronic_format(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("ElectronicFormat")?,
"ElectronicFormat",
)
}
pub fn valid_from(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("ValidFrom")?,
"ValidFrom",
)
}
pub fn valid_until(self) -> ClassificationResult<Option<&'m str>> {
optional_text(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.text_slot("ValidUntil")?,
"ValidUntil",
)
}
pub fn confidentiality(self) -> ClassificationResult<Option<&'m str>> {
optional_enum(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.slot("Confidentiality")?,
"Confidentiality",
&[
"PUBLIC",
"RESTRICTED",
"CONFIDENTIAL",
"PERSONAL",
"USERDEFINED",
"NOTDEFINED",
],
)
}
pub fn status(self) -> ClassificationResult<Option<&'m str>> {
optional_enum(
"IFCDOCUMENTINFORMATION",
self.id(),
self.entity(),
self.slot("Status")?,
"Status",
&["DRAFT", "FINAL", "REVISION", "NOTDEFINED"],
)
}
}
impl<'m> ClassificationView<'m> {
pub fn documents(self) -> impl Iterator<Item = DocumentInformation<'m>> + 'm {
self.model()
.of_type("IFCDOCUMENTINFORMATION")
.map(move |(id, e)| DocumentInformation::from_known(id, e, self.release()))
}
}