/******************************************************************************* | |
* Copyright (c) 2014, 2016 Orange. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
*******************************************************************************/ | |
package org.eclipse.om2m.persistence.mongodb.dao; | |
import static com.mongodb.client.model.Filters.eq; | |
import org.apache.commons.logging.Log; | |
import org.apache.commons.logging.LogFactory; | |
import org.bson.Document; | |
import org.eclipse.om2m.commons.constants.ResourceType; | |
import org.eclipse.om2m.commons.entities.AccessControlPolicyEntity; | |
import org.eclipse.om2m.commons.entities.AeAnncEntity; | |
import org.eclipse.om2m.commons.entities.AeEntity; | |
import org.eclipse.om2m.commons.entities.CSEBaseEntity; | |
import org.eclipse.om2m.commons.entities.ContainerEntity; | |
import org.eclipse.om2m.commons.entities.ContentInstanceEntity; | |
import org.eclipse.om2m.commons.entities.FlexContainerAnncEntity; | |
import org.eclipse.om2m.commons.entities.FlexContainerEntity; | |
import org.eclipse.om2m.commons.entities.GroupEntity; | |
import org.eclipse.om2m.commons.entities.LabelEntity; | |
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity; | |
import org.eclipse.om2m.commons.entities.MgmtObjEntity; | |
import org.eclipse.om2m.commons.entities.NodeAnncEntity; | |
import org.eclipse.om2m.commons.entities.NodeEntity; | |
import org.eclipse.om2m.commons.entities.RemoteCSEEntity; | |
import org.eclipse.om2m.persistence.mongodb.DBServiceImpl; | |
import org.eclipse.om2m.persistence.service.DAO; | |
import org.eclipse.om2m.persistence.service.DBTransaction; | |
import com.mongodb.client.FindIterable; | |
import com.mongodb.client.MongoCursor; | |
public class LabelEntityDao implements DAO<LabelEntity> { | |
private static final Log LOGGER = LogFactory.getLog(LabelEntityDao.class); | |
@Override | |
public void create(DBTransaction dbTransaction, LabelEntity resource) { | |
// nothing to do | |
} | |
@Override | |
public LabelEntity find(DBTransaction dbTransaction, Object id) { | |
LOGGER.info("LabelEntityDAO.find(id=" + id + ")"); | |
//{"LabelsEntities" : {"label":"object.type/module"}} | |
LabelEntity labelEntity = null; | |
FindIterable<Document> elements = DBServiceImpl.getInstance().getResourceCollection().find(eq("LabelsEntities", eq("label", id))); | |
if (elements != null) { | |
labelEntity = new LabelEntity((String) id); | |
for(MongoCursor<Document> cursor = elements.iterator(); cursor.hasNext();) { | |
Document element = cursor.next(); | |
Integer resourceType = element.getInteger("ResourceType"); | |
switch (resourceType) { | |
case ResourceType.AE: | |
AeEntity aeEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), AeEntity.class); | |
labelEntity.getLinkedAe().add(aeEntity); | |
break; | |
case ResourceType.AE_ANNC: | |
AeAnncEntity aeAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), AeAnncEntity.class); | |
labelEntity.getLinkedAeA().add(aeAnncEntity); | |
break; | |
case(ResourceType.CONTENT_INSTANCE): | |
ContentInstanceEntity contentInstanceEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), ContentInstanceEntity.class); | |
labelEntity.getLinkedCin().add(contentInstanceEntity); | |
break; | |
case(ResourceType.CONTAINER): | |
ContainerEntity containerEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), ContainerEntity.class); | |
labelEntity.getLinkedCnt().add(containerEntity); | |
break; | |
case(ResourceType.GROUP): | |
GroupEntity groupEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), GroupEntity.class); | |
// labelEntity.getLinkedGroup().add(groupEntity); | |
break; | |
case(ResourceType.REMOTE_CSE): | |
RemoteCSEEntity remoteCseEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), RemoteCSEEntity.class); | |
labelEntity.getLinkedCsr().add(remoteCseEntity); | |
break; | |
case(ResourceType.CSE_BASE): | |
CSEBaseEntity cseBaseEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), CSEBaseEntity.class); | |
// labelEntity.getLinkedCsb(); | |
break; | |
case (ResourceType.FLEXCONTAINER): | |
FlexContainerEntity flexContainerEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), FlexContainerEntity.class); | |
labelEntity.getLinkedFcnt().add(flexContainerEntity); | |
// result.addAll(labelEntity.getLinkedFcnt()); | |
break; | |
case (ResourceType.FLEXCONTAINER_ANNC): | |
FlexContainerAnncEntity flexContainerAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), FlexContainerAnncEntity.class); | |
labelEntity.getLinkedFcntA().add(flexContainerAnncEntity); | |
break; | |
case (ResourceType.ACCESS_CONTROL_POLICY): | |
AccessControlPolicyEntity accessControlPolicyEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), AccessControlPolicyEntity.class); | |
labelEntity.getLinkedACP().add(accessControlPolicyEntity); | |
break; | |
case(ResourceType.NODE): | |
NodeEntity nodeEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), NodeEntity.class); | |
labelEntity.getLinkedNodes().add(nodeEntity); | |
break; | |
case(ResourceType.NODE_ANNC): | |
NodeAnncEntity nodeAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), NodeAnncEntity.class); | |
labelEntity.getLinkedNodesA().add(nodeAnncEntity); | |
break; | |
case(ResourceType.MGMT_OBJ): | |
MgmtObjEntity mgmtObjEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), MgmtObjEntity.class); | |
labelEntity.addMgmtObj(mgmtObjEntity); | |
break; | |
case(ResourceType.MGMT_OBJ_ANNC): | |
MgmtObjAnncEntity mgmtObjAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), MgmtObjAnncEntity.class); | |
labelEntity.addMgmtObjA(mgmtObjAnncEntity); | |
break; | |
default: | |
break; | |
} | |
} | |
} | |
return labelEntity; | |
} | |
@Override | |
public void update(DBTransaction dbTransaction, LabelEntity resource) { | |
} | |
@Override | |
public void delete(DBTransaction dbTransaction, LabelEntity resource) { | |
} | |
} |