16 const std::string& exportName,
18 const std::shared_ptr<Processors>& filters,
19 const std::shared_ptr<persistence::MemoryPersistenceStrategy>& persistenceStrategy) :
20 ProviderSegmentBase(exportName, memoryId, filters),
21 persistenceStrategy_(persistenceStrategy)
35 for (std::string& entityName : persistenceStrategy_->getContainerKeys(
id()))
39 std::shared_ptr<persistence::MemoryPersistenceStrategy> entityPersistenceStrategy(
40 persistenceStrategy_);
43 id().withEntityName(entityName),
45 entityPersistenceStrategy);
60 return persistenceStrategy_->containsContainer(
id(), entityName);
63 std::shared_ptr<Entity>
75 return std::make_shared<Entity>(
89 if (persistenceStrategy_->containsItem(
95 auto filecontent = persistenceStrategy_->retrieveItem(
97 auto aron = conv.convert(filecontent,
"");
102 [&wmProviderSegment](
auto& ltmEntity)
105 ltmEntity.loadAllReferences(wmEntity);
110 armem::wm::Entity existingWmEntity =
111 wmProviderSegment.getEntity(wmEntity.name());
112 existingWmEntity.append(wmEntity);
116 wmProviderSegment.addEntity(wmEntity);
130 auto& conv =
processors->defaultTypeConverter;
132 if (persistenceStrategy_->containsItem(
136 auto& conv =
processors->defaultTypeConverter;
138 auto filecontent = persistenceStrategy_->retrieveItem(
140 auto aron = conv.convert(filecontent,
"");
141 wmProviderSegment.
aronType() = aron;
145 [&wmProviderSegment, &
n](
auto& ltmEntity)
148 ltmEntity.loadLatestNReferences(
n, wmEntity);
153 armem::wm::Entity existingWmEntity =
154 wmProviderSegment.getEntity(wmEntity.name());
155 existingWmEntity.append(wmEntity);
159 wmProviderSegment.addEntity(wmEntity);
176 std::shared_ptr<persistence::MemoryPersistenceStrategy> entityPersistenceStrategy(
177 persistenceStrategy_);
180 id().withEntityName(wmEntity.id().entityName),
182 entityPersistenceStrategy);
189 bool simulatedVersion)
195 if (
id().providerSegmentName.empty())
198 <<
"During storage of segment '" << wmProviderSegment.
id().
str()
199 <<
"' I noticed that the corresponding LTM has no id set. "
200 <<
"I set the id of the LTM to the same name, however this should not happen!";
208 auto& conv =
processors->defaultTypeConverter;
210 auto type = wmProviderSegment.
aronType();
212 auto [vec, modeSuffix] = conv.convert(type);
216 persistenceStrategy_->storeItem(
id(), key, vec);
223 <<
" does not seem to have an aron type, so aron type "
224 "information connot be exported";
229 [&](
const auto& wmEntity)
231 std::shared_ptr<persistence::MemoryPersistenceStrategy> entityPersistenceStrategy(
232 persistenceStrategy_);
235 id().withEntityName(wmEntity.id().entityName),
237 entityPersistenceStrategy);
239 ltmEntity.
store(wmEntity, simulatedVersion);