@@ -80,16 +80,18 @@ public class MongoDbAasRegistryStorage implements AasRegistryStorage {
8080 private static final String SUBMODEL_DESCRIPTORS_ID = "submodelDescriptors._id" ;
8181 private static final String ASSET_TYPE = "assetType" ;
8282 private static final String ASSET_KIND = "assetKind" ;
83-
83+
8484 private final MongoTemplate template ;
8585
86+ private final String collectionName ;
87+
8688 @ Override
8789 public CursorResult <List <AssetAdministrationShellDescriptor >> getAllAasDescriptors (@ NonNull PaginationInfo pRequest , @ NonNull DescriptorFilter filter ) {
8890 List <AggregationOperation > allAggregations = new LinkedList <>();
8991 applyFilter (filter , allAggregations );
9092 applySorting (allAggregations );
9193 applyPagination (pRequest , allAggregations );
92- AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (Aggregation .newAggregation (allAggregations ), AssetAdministrationShellDescriptor . class , AssetAdministrationShellDescriptor .class );
94+ AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (Aggregation .newAggregation (allAggregations ), collectionName , AssetAdministrationShellDescriptor .class );
9395 List <AssetAdministrationShellDescriptor > foundDescriptors = results .getMappedResults ();
9496 String cursor = resolveCursor (pRequest , foundDescriptors , AssetAdministrationShellDescriptor ::getId );
9597 return new CursorResult <>(cursor , foundDescriptors );
@@ -146,7 +148,7 @@ public Optional<Criteria> createFilterCriteria(DescriptorFilter filter) {
146148
147149 @ Override
148150 public AssetAdministrationShellDescriptor getAasDescriptor (@ NonNull String aasDescriptorId ) throws AasDescriptorNotFoundException {
149- AssetAdministrationShellDescriptor descriptor = template .findById (aasDescriptorId , AssetAdministrationShellDescriptor .class );
151+ AssetAdministrationShellDescriptor descriptor = template .findById (aasDescriptorId , AssetAdministrationShellDescriptor .class , collectionName );
150152 if (descriptor == null ) {
151153 throw new AasDescriptorNotFoundException (aasDescriptorId );
152154 }
@@ -156,7 +158,7 @@ public AssetAdministrationShellDescriptor getAasDescriptor(@NonNull String aasDe
156158 @ Override
157159 public void insertAasDescriptor (@ Valid AssetAdministrationShellDescriptor descr ) throws AasDescriptorAlreadyExistsException {
158160 try {
159- template .insert (descr );
161+ template .insert (descr , collectionName );
160162 } catch (org .springframework .dao .DuplicateKeyException ex ) {
161163 throw new AasDescriptorAlreadyExistsException (descr .getId ());
162164 }
@@ -169,7 +171,7 @@ public void replaceAasDescriptor(@NonNull String aasDescriptorId, @NonNull Asset
169171 moveInTransaction (aasDescriptorId , descriptor );
170172 } else {
171173 Query query = Query .query (Criteria .where (ID ).is (aasDescriptorId ));
172- AssetAdministrationShellDescriptor replaced = template .findAndReplace (query , descriptor );
174+ AssetAdministrationShellDescriptor replaced = template .findAndReplace (query , descriptor , collectionName );
173175 if (replaced == null ) {
174176 throw new AasDescriptorNotFoundException (aasDescriptorId );
175177 }
@@ -180,10 +182,10 @@ private void moveInTransaction(@NonNull String aasDescriptorId, @NonNull AssetAd
180182 SessionScoped scoped = template .withSession (ClientSessionOptions .builder ().build ());
181183 boolean removed = scoped .execute (operations -> {
182184 Query query = Query .query (Criteria .where (ID ).is (aasDescriptorId ));
183- if (operations .remove (query , AssetAdministrationShellDescriptor .class ).getDeletedCount () == 0 ) {
185+ if (operations .remove (query , AssetAdministrationShellDescriptor .class , collectionName ).getDeletedCount () == 0 ) {
184186 return false ;
185187 }
186- operations .save (descriptor );
188+ operations .save (descriptor , collectionName );
187189 return true ;
188190 });
189191 if (!removed ) {
@@ -194,14 +196,14 @@ private void moveInTransaction(@NonNull String aasDescriptorId, @NonNull AssetAd
194196 @ Override
195197 public void removeAasDescriptor (@ NonNull String aasDescriptorId ) throws AasDescriptorNotFoundException {
196198 Query query = Query .query (Criteria .where (ID ).is (aasDescriptorId ));
197- if (template .remove (query , AssetAdministrationShellDescriptor .class ).getDeletedCount () == 0 ) {
199+ if (template .remove (query , AssetAdministrationShellDescriptor .class , collectionName ).getDeletedCount () == 0 ) {
198200 throw new AasDescriptorNotFoundException (aasDescriptorId );
199201 }
200202 }
201203
202204 @ Override
203205 public CursorResult <List <SubmodelDescriptor >> getAllSubmodels (@ NonNull String aasDescriptorId , @ NonNull PaginationInfo pRequest ) throws AasDescriptorNotFoundException {
204- if (!template .exists (Query .query (Criteria .where (ID ).is (aasDescriptorId )), AssetAdministrationShellDescriptor . class )) {
206+ if (!template .exists (Query .query (Criteria .where (ID ).is (aasDescriptorId )), collectionName )) {
205207 throw new AasDescriptorNotFoundException (aasDescriptorId );
206208 }
207209 List <AggregationOperation > allAggregations = new LinkedList <>();
@@ -210,7 +212,7 @@ public CursorResult<List<SubmodelDescriptor>> getAllSubmodels(@NonNull String aa
210212 allAggregations .add (Aggregation .replaceRoot (SUBMODEL_DESCRIPTORS ));
211213 this .applySorting (allAggregations );
212214 this .applyPagination (pRequest , allAggregations );
213- AggregationResults <SubmodelDescriptor > results = template .aggregate (Aggregation .newAggregation (allAggregations ), AssetAdministrationShellDescriptor . class , SubmodelDescriptor .class );
215+ AggregationResults <SubmodelDescriptor > results = template .aggregate (Aggregation .newAggregation (allAggregations ), collectionName , SubmodelDescriptor .class );
214216 List <SubmodelDescriptor > submodels = results .getMappedResults ();
215217 String cursor = resolveCursor (pRequest , submodels , SubmodelDescriptor ::getId );
216218 return new CursorResult <>(cursor , submodels );
@@ -222,7 +224,7 @@ public SubmodelDescriptor getSubmodel(@NonNull String aasDescriptorId, @NonNull
222224 all .add (Aggregation .match (Criteria .where (ID ).is (aasDescriptorId )));
223225 ArrayOperators .Filter filter = ArrayOperators .arrayOf (SUBMODEL_DESCRIPTORS ).filter ().as (SUBMODEL_DESCRIPTORS ).by (ComparisonOperators .valueOf (SUBMODEL_DESCRIPTORS_ID ).equalToValue (submodelId ));
224226 all .add (Aggregation .project ().and (filter ).as (SUBMODEL_DESCRIPTORS ));
225- AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (Aggregation .newAggregation (all ), AssetAdministrationShellDescriptor . class , AssetAdministrationShellDescriptor .class );
227+ AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (Aggregation .newAggregation (all ), collectionName , AssetAdministrationShellDescriptor .class );
226228 List <AssetAdministrationShellDescriptor > aasDescriptors = results .getMappedResults ();
227229 if (aasDescriptors .isEmpty ()) {
228230 throw new AasDescriptorNotFoundException (aasDescriptorId );
@@ -239,7 +241,7 @@ public void insertSubmodel(@NonNull String aasDescriptorId, @NonNull SubmodelDes
239241 Criteria criteria = Criteria .where (ID ).is (aasDescriptorId ).and (SUBMODEL_DESCRIPTORS_ID ).ne (submodel .getId ());
240242 Query query = Query .query (criteria );
241243 UpdateDefinition def = new Update ().push (SUBMODEL_DESCRIPTORS , submodel );
242- AssetAdministrationShellDescriptor descr = template .findAndModify (query , def , AssetAdministrationShellDescriptor .class );
244+ AssetAdministrationShellDescriptor descr = template .findAndModify (query , def , AssetAdministrationShellDescriptor .class , collectionName );
243245 assertInsertPerformed (descr , aasDescriptorId , submodel .getId ());
244246 }
245247
@@ -248,7 +250,7 @@ public void replaceSubmodel(@NonNull String aasDescriptorId, @NonNull String sub
248250 Criteria criteria = Criteria .where (ID ).is (aasDescriptorId ).and (SUBMODEL_DESCRIPTORS ).elemMatch (Criteria .where (ID ).is (submodelId ));
249251 Query query = Query .query (criteria );
250252 UpdateDefinition def = Update .update (MATCHING_SUBMODEL_DESCRIPTORS , submodel );
251- AssetAdministrationShellDescriptor descr = template .findAndModify (query , def , AssetAdministrationShellDescriptor .class );
253+ AssetAdministrationShellDescriptor descr = template .findAndModify (query , def , AssetAdministrationShellDescriptor .class , collectionName );
252254 assertReplacePerformed (descr , aasDescriptorId , submodelId );
253255 }
254256
@@ -271,7 +273,7 @@ public void removeSubmodel(@NonNull String aasDescriptorId, @NonNull String subm
271273 AggregationExpression notEquals = ComparisonOperators .valueOf (SUBMODEL_DESCRIPTORS_ID ).notEqualToValue (submodelId );
272274 AggregationExpression filterArray = ArrayOperators .arrayOf (SUBMODEL_DESCRIPTORS ).filter ().as (SUBMODEL_DESCRIPTORS ).by (notEquals );
273275 AggregationUpdate update = AggregationUpdate .update ().set (SUBMODEL_DESCRIPTORS ).toValue (filterArray );
274- AssetAdministrationShellDescriptor old = template .findAndModify (Query .query (Criteria .where (ID ).is (aasDescriptorId )), update , AssetAdministrationShellDescriptor .class );
276+ AssetAdministrationShellDescriptor old = template .findAndModify (Query .query (Criteria .where (ID ).is (aasDescriptorId )), update , AssetAdministrationShellDescriptor .class , collectionName );
275277 if (old == null ) {
276278 throw new AasDescriptorNotFoundException (submodelId );
277279 }
@@ -298,7 +300,7 @@ private boolean containsSubmodel(AssetAdministrationShellDescriptor old, String
298300 public Set <String > clear () {
299301 Query query = Query .query (Criteria .where (ID ).exists (true ));
300302 query .fields ().include (ID );
301- List <AssetAdministrationShellDescriptor > list = template .findAllAndRemove (query , AssetAdministrationShellDescriptor .class );
303+ List <AssetAdministrationShellDescriptor > list = template .findAllAndRemove (query , AssetAdministrationShellDescriptor .class , collectionName );
302304 return list .stream ().map (AssetAdministrationShellDescriptor ::getId ).collect (Collectors .toSet ());
303305 }
304306
@@ -309,7 +311,7 @@ public ShellDescriptorSearchResponse searchAasDescriptors(@NonNull ShellDescript
309311 GroupedQueries grouped = ShellDescriptorSearchRequests .groupQueries (dQuery );
310312 Criteria mongoCriteria = qBuilder .buildCriteria (grouped );
311313
312- long total = template .count (Query .query (mongoCriteria ), AssetAdministrationShellDescriptor .class );
314+ long total = template .count (Query .query (mongoCriteria ), AssetAdministrationShellDescriptor .class , collectionName );
313315
314316 List <AggregationOperation > aggregationOps = new LinkedList <>();
315317 MatchOperation matchOp = Aggregation .match (mongoCriteria );
@@ -319,7 +321,7 @@ public ShellDescriptorSearchResponse searchAasDescriptors(@NonNull ShellDescript
319321 qBuilder .withProjection (grouped .getQueriesInsideSubmodel (), aggregationOps );
320322
321323 Aggregation aggregation = Aggregation .newAggregation (aggregationOps );
322- AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (aggregation , AssetAdministrationShellDescriptor . class , AssetAdministrationShellDescriptor .class );
324+ AggregationResults <AssetAdministrationShellDescriptor > results = template .aggregate (aggregation , collectionName , AssetAdministrationShellDescriptor .class );
323325
324326 List <AssetAdministrationShellDescriptor > descriptors = results .getMappedResults ();
325327 return new ShellDescriptorSearchResponse (total , descriptors );
0 commit comments