44 virtual public ObjectClassMemorySegmentBase
60 ObjectClassMemorySegmentBase::ObjectClassMemorySegmentBase()
62 this->priorKnowledgePrx = priorKnowledgePrx;
65 classesSegmentPrx = priorKnowledgePrx->getObjectClassesSegment();
77 const ::Ice::Current& = Ice::emptyCurrent)
override
79 ObjectClassList touchedClasses;
82 ObjectClassList objectClasses = classesSegmentPrx->getClassWithSubclasses(className);
84 ObjectClassList::iterator iter = objectClasses.begin();
86 while (iter != objectClasses.end())
88 ObjectClassBasePtr priorObjectClass = *iter;
90 ObjectClassBasePtr wmObjectClass = addClass(priorObjectClass);
91 touchedClasses.push_back(wmObjectClass);
96 return touchedClasses;
106 const ::Ice::Current& = Ice::emptyCurrent)
override
109 ObjectClassList relevantClasses;
114 return ObjectClassList();
117 relevantClasses.push_back(root);
121 while (
index !=
int(relevantClasses.size()))
123 ObjectClassBasePtr current = relevantClasses.at(
index);
126 ObjectClassList childs = getChildClasses(current->getName());
128 if (childs.size() != 0)
130 std::copy(childs.begin(), childs.end(), std::back_inserter(relevantClasses));
136 return relevantClasses;
147 const ObjectClassBasePtr& update,
148 const ::Ice::Current& = Ice::emptyCurrent)
override
152 if (update->getName() != className)
160 if (!storedObjectClass)
166 std::string refCountAttrName =
"referenceCounter";
168 if (storedObjectClass->hasAttribute(refCountAttrName))
172 storedObjectClass->getAttribute(refCountAttrName)->getValue()->getInt();
173 update->putAttribute(
180 return ObjectClassBasePtr::dynamicCast(
getEntityById(storedObjectClass->getId()));
192 const ::Ice::Current& = Ice::emptyCurrent)
override
195 ObjectClassList objectClasses = classesSegmentPrx->getClassWithSubclasses(className);
197 ObjectClassList::iterator iter = objectClasses.begin();
200 while (iter != objectClasses.end())
202 removeClass((*iter)->getName());
212 for (ObjectClassList::const_iterator it = objects.begin(); it != objects.end(); it++)
221 result += (*it)->getName();
232 static Ice::StringSeq
235 Ice::StringSeq result;
237 for (ObjectClassList::const_iterator it = objects.begin(); it != objects.end(); it++)
241 result.push_back((*it)->getName());
245 result.push_back(
"NULL");
255 for (ObjectClassList::const_iterator it = objects.begin(); it != objects.end(); it++)
257 if ((*it)->getName() == object->getName())
268 addClass(
const ObjectClassBasePtr& objectClass)
270 std::string refCountAttrName =
"referenceCounter";
273 EntityBasePtr storedObjectClass = getEntityByName(objectClass->getName());
275 if (storedObjectClass)
278 if (storedObjectClass->hasAttribute(refCountAttrName))
281 storedObjectClass->getAttribute(refCountAttrName)->getValue()->getInt();
283 storedObjectClass->putAttribute(
288 storedObjectClass->putAttribute(
295 objectClass->putAttribute(
296 new EntityAttribute(refCountAttrName,
new armarx::Variant(1)));
297 std::string
id = addEntity(objectClass);
298 storedObjectClass = getEntityById(
id);
301 return ObjectClassBasePtr::dynamicCast(storedObjectClass);
305 removeClass(
const std::string& className)
307 std::string refCountAttrName =
"referenceCounter";
310 EntityBasePtr storedObjectClass = getEntityByName(className);
312 if (storedObjectClass)
315 if (storedObjectClass->hasAttribute(refCountAttrName))
319 storedObjectClass->getAttribute(refCountAttrName)->getValue()->getInt();
324 storedObjectClass->putAttribute(
325 new EntityAttribute(refCountAttrName,
new armarx::Variant(counter)));
330 ARMARX_INFO_S <<
"Removing object class " << storedObjectClass->getName();
331 removeEntity(storedObjectClass->getId());
338 getChildClasses(
const std::string& parentClassName)
340 ObjectClassList result;
341 EntityBaseList children = getEntitiesByAttrValue(
"parentClasses", parentClassName);
343 for (EntityBaseList::const_iterator it = children.begin(); it != children.end(); ++it)
345 result.push_back(ObjectClassBasePtr::dynamicCast(*it));
351 PriorKnowledgeInterfacePrx priorKnowledgePrx;
352 memoryx::PersistentObjectClassSegmentBasePrx classesSegmentPrx;