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(
96 auto filecontent = persistenceStrategy_->retrieveItem(
98 auto aron = conv.convert(filecontent,
"");
101 catch (
const nlohmann::json::type_error& e)
104 <<
"You are trying to access aron data which is not available, skipping...";
105 wmProviderSegment.
aronType() =
nullptr;
110 [&wmProviderSegment](
auto& ltmEntity)
113 ltmEntity.loadAllReferences(wmEntity);
118 armem::wm::Entity existingWmEntity =
119 wmProviderSegment.getEntity(wmEntity.name());
120 existingWmEntity.append(wmEntity);
124 wmProviderSegment.addEntity(wmEntity);
138 auto& conv =
processors->defaultTypeConverter;
140 if (persistenceStrategy_->containsItem(
144 auto& conv =
processors->defaultTypeConverter;
146 auto filecontent = persistenceStrategy_->retrieveItem(
148 auto aron = conv.convert(filecontent,
"");
149 wmProviderSegment.
aronType() = aron;
153 [&wmProviderSegment, &
n](
auto& ltmEntity)
156 ltmEntity.loadLatestNReferences(
n, wmEntity);
161 armem::wm::Entity existingWmEntity =
162 wmProviderSegment.getEntity(wmEntity.name());
163 existingWmEntity.append(wmEntity);
167 wmProviderSegment.addEntity(wmEntity);
184 std::shared_ptr<persistence::MemoryPersistenceStrategy> entityPersistenceStrategy(
185 persistenceStrategy_);
188 id().withEntityName(wmEntity.id().entityName),
190 entityPersistenceStrategy);
197 bool simulatedVersion)
203 if (
id().providerSegmentName.empty())
206 <<
"During storage of segment '" << wmProviderSegment.
id().
str()
207 <<
"' I noticed that the corresponding LTM has no id set. "
208 <<
"I set the id of the LTM to the same name, however this should not happen!";
216 auto& conv =
processors->defaultTypeConverter;
218 auto type = wmProviderSegment.
aronType();
220 auto [vec, modeSuffix] = conv.convert(type);
224 persistenceStrategy_->storeItem(
id(), key, vec);
231 <<
" does not seem to have an aron type, so aron type "
232 "information connot be exported";
237 [&](
const auto& wmEntity)
239 std::shared_ptr<persistence::MemoryPersistenceStrategy> entityPersistenceStrategy(
240 persistenceStrategy_);
243 id().withEntityName(wmEntity.id().entityName),
245 entityPersistenceStrategy);
247 ltmEntity.
store(wmEntity, simulatedVersion);