| 599 | } |
| 600 | |
| 601 | bool RefrigerationSystem_Impl::setRefrigerationCondenser(const ModelObject& refrigerationCondenser) { |
| 602 | |
| 603 | boost::optional<RefrigerationSystem> currentSystem; |
| 604 | // Enforce unicity |
| 605 | if (auto refrigerationCondenserAirCooled = refrigerationCondenser.optionalCast<RefrigerationCondenserAirCooled>()) { |
| 606 | currentSystem = refrigerationCondenserAirCooled->system(); |
| 607 | } |
| 608 | |
| 609 | if (!currentSystem) { |
| 610 | if (auto refrigerationCondenserWaterCooled = refrigerationCondenser.optionalCast<RefrigerationCondenserWaterCooled>()) { |
| 611 | currentSystem = refrigerationCondenserWaterCooled->system(); |
| 612 | } |
| 613 | } |
| 614 | |
| 615 | if (!currentSystem) { |
| 616 | if (auto refrigerationCondenserEvaporativeCooled = refrigerationCondenser.optionalCast<RefrigerationCondenserEvaporativeCooled>()) { |
| 617 | currentSystem = refrigerationCondenserEvaporativeCooled->system(); |
| 618 | } |
| 619 | } |
| 620 | |
| 621 | if (!currentSystem) { |
| 622 | if (auto refrigerationCondenserCascade = refrigerationCondenser.optionalCast<RefrigerationCondenserCascade>()) { |
| 623 | currentSystem = refrigerationCondenserCascade->heatRejectingSystem(); |
| 624 | } |
| 625 | } |
| 626 | |
| 627 | bool result = setPointer(OS_Refrigeration_SystemFields::RefrigerationCondenserName, refrigerationCondenser.handle()); |
| 628 | if (result && currentSystem && (currentSystem->handle() != this->handle())) { |
| 629 | LOG(Warn, refrigerationCondenser.briefDescription() |
| 630 | << " was removed from its existing RefrigerationSystem (Condenser Name) named '" << currentSystem->nameString() << "'."); |
| 631 | currentSystem->resetRefrigerationCondenser(); |
| 632 | } |
| 633 | |
| 634 | return result; |
| 635 | } |
| 636 | |
| 637 | void RefrigerationSystem_Impl::resetRefrigerationCondenser() { |
| 638 | bool result = setString(OS_Refrigeration_SystemFields::RefrigerationCondenserName, ""); |