blob: b09237b47297e73f77ada50d2e6665bc3270191f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 - 2018 Orange.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* BAREAU Cyrille <cyrille.bareau@orange.com>,
* BONNARDEL Gregory <gbonnardel.ext@orange.com>,
*******************************************************************************/
package org.eclipse.om2m.persistence.mongodb.util;
import static com.mongodb.client.model.Filters.eq;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.eclipse.om2m.commons.entities.DynamicAuthorizationConsultationEntity;
import org.eclipse.om2m.persistence.mongodb.Constants;
import org.eclipse.om2m.persistence.mongodb.DBServiceImpl;
import org.eclipse.om2m.persistence.service.util.DynamicAuthorizationConsultationUtil;
public class DynamicAuthorizationConsultationUtilImpl
implements Constants, DynamicAuthorizationConsultationUtil {
private static final DynamicAuthorizationConsultationUtilImpl INSTANCE =
new DynamicAuthorizationConsultationUtilImpl();
public static DynamicAuthorizationConsultationUtilImpl getInstance() {
return INSTANCE;
}
private DynamicAuthorizationConsultationUtilImpl() {
}
@Override
public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations(
String nonHierarchicalUri) {
List<DynamicAuthorizationConsultationEntity> daces = new ArrayList<>();
// find resource
Document doc = DBServiceImpl.getInstance().getResourceCollection()
.find(eq(RES_ID, nonHierarchicalUri)).first();
if (doc == null)
return daces;
// retrieve dynamicAuthorizationConsultationIDs
for (Object daceRef : doc.get("#DynamicAuthorizationConsultations", ArrayList.class)) {
Document daceRefDoc = (Document) daceRef;
// load doc for each dace ref
Document daceDoc = DBServiceImpl.getInstance().getResourceCollection()
.find(eq(RES_ID, daceRefDoc.get(RES_ID))).first();
daces.add(DBServiceImpl.getInstance().getGson()
.fromJson(daceDoc.toJson(), DynamicAuthorizationConsultationEntity.class));
}
if (daces.isEmpty()) {
// load DACES from its parents
daces.addAll(getDynamicAuthorizationConsultations(doc.getString(PARENT_ID)));
}
return daces;
}
}