33 const PriorKnowledgeInterfacePrx& priorKnowledgePrx,
34 bool forceOverwrite) :
36 priorKnowledgePrx(priorKnowledgePrx),
37 forceOverwrite(forceOverwrite)
44 if (!priorKnowledgePrx)
49 addPriorAttrs(updateEntity);
56 if (!priorKnowledgePrx)
61 EntityBasePtr fusedEntity = EntityBasePtr::dynamicCast(updateEntity->ice_clone());
62 addPriorAttrs(fusedEntity);
69 const EntityBasePtr& newEntity,
72 ARMARX_DEBUG_S <<
"PriorAttributeEnrichmentFusion::fuseEntity() called";
74 copyMissingAttrs(oldEntity, newEntity);
75 addPriorAttrs(newEntity);
81 PriorAttributeEnrichmentFusion::addPriorAttrs(
const EntityBasePtr& entity)
const
87 std::string classname = inst->getMostProbableClass();
89 if (!classname.empty())
91 EntityBasePtr priorEntity =
92 priorKnowledgePrx->getObjectClassesSegment()->getEntityByName(classname);
96 copyMissingAttrs(priorEntity, entity);
107 PriorAttributeEnrichmentFusion::copyMissingAttrs(
const EntityBasePtr& srcEntity,
108 const EntityBasePtr& destEntity)
const
110 NameList attrNames = srcEntity->getAttributeNames();
112 for (NameList::const_iterator it = attrNames.begin(); it != attrNames.end(); ++it)
113 if (forceOverwrite || !destEntity->hasAttribute(*it))
115 ARMARX_VERBOSE <<
"Adding attribute: " << srcEntity->getAttribute(*it)->getName();
116 destEntity->putAttribute(srcEntity->getAttribute(*it));