| /******************************************************************************* |
| * Copyright (c) 2013-2020 LAAS-CNRS (www.laas.fr) |
| * 7 Colonel Roche 31077 Toulouse - France |
| * |
| * 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/ |
| * |
| * Initial Contributors: |
| * Thierry Monteil : Project manager, technical co-manager |
| * Mahdi Ben Alaya : Technical co-manager |
| * Samir Medjiah : Technical co-manager |
| * Khalil Drira : Strategy expert |
| * Guillaume Garzone : Developer |
| * François Aïssaoui : Developer |
| * |
| * New contributors : |
| *******************************************************************************/ |
| package org.eclipse.om2m.persistence.eclipselink.internal.util; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.persistence.Query; |
| |
| import org.eclipse.om2m.commons.constants.DBEntities; |
| import org.eclipse.om2m.commons.entities.UriMapperEntity; |
| import org.eclipse.om2m.commons.resource.FilterCriteria; |
| import org.eclipse.om2m.persistence.eclipselink.internal.DBTransactionJPAImpl; |
| import org.eclipse.om2m.persistence.service.util.ComplexFindUtil; |
| |
| public class ComplexFindUtilImpl implements ComplexFindUtil { |
| |
| @Override |
| public List<UriMapperEntity> getChildUrisDis(String rootUri, FilterCriteria filter) { |
| DBTransactionJPAImpl transaction = new DBTransactionJPAImpl(); |
| transaction.open(); |
| |
| String req = "SELECT uri.hierarchicalUri FROM " + DBEntities.URI_MAPPER_ENTITY + |
| " uri WHERE uri.nonHierarchicalUri = '" + rootUri + "'" ; |
| Query q = transaction.getEm().createQuery(req); |
| List<String> resultList = q.getResultList(); |
| if(resultList.size() != 1){ |
| return new ArrayList<>(); |
| } |
| String hierarchicalUri = resultList.get(0); |
| |
| req = "SELECT uri FROM " + DBEntities.URI_MAPPER_ENTITY |
| + " uri WHERE uri.hierarchicalUri LIKE '" |
| + hierarchicalUri + "%'"; |
| if (filter.getResourceType() != null){ |
| req += " AND uri.resourceType = '" + filter.getResourceType() + "'"; |
| } |
| |
| q = transaction.getEm().createQuery(req); |
| |
| if (filter.getLimit() != null && filter.getLimit().intValue() > 0){ |
| q.setMaxResults(filter.getLimit().intValue()); |
| } |
| |
| List<UriMapperEntity> resultListEntities = q.getResultList(); |
| transaction.close(); |
| return resultListEntities; |
| } |
| } |