@Override public Object find(Class entityClass, Object rowId) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClass); Object enhancedEntity = null; if (rowId == null) { return null; } MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { rowId = KunderaCoreUtils.prepareCompositeKey(m, rowId); } try { List results = findData(m, rowId, null, null, null, null); if (results != null && !results.isEmpty()) { enhancedEntity = results.get(0); } } catch (Exception e) { log.error("Error during find by id, Caused by: .", e); throw new KunderaException("Error during find by id, Caused by: .", e); } return enhancedEntity; }
@Override protected List findUsingLucene(EntityMetadata m, Client client) { QueryTranslator translator = new QueryTranslator(); translator.translate(getKunderaQuery(), m, true); List<Map<String, Object>> columns = translator.getColumnsToOutput(m, getKunderaQuery(), true); Object value = null; for (Object obj : getKunderaQuery().getFilterClauseQueue()) { if (obj instanceof FilterClause) { value = ((FilterClause) obj).getValue().get(0); } } byte[] valueInBytes = HBaseUtils.getBytes(value, ((AbstractAttribute) m.getIdAttribute()).getBindableJavaType()); return ((HBaseClient) client).findData(m, valueInBytes, null, null, columns, null); }
/** * On query. * * @param m * the m * @param client * the client * @return the list */ private List onQuery(EntityMetadata m, Client client) { boolean useLuceneOrES = !MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata()); QueryTranslator translator = new QueryTranslator(); List<Map<String, Object>> columnsToOutput = translator.getColumnsToOutput(m, getKunderaQuery(), useLuceneOrES); translator.translate(getKunderaQuery(), m, useLuceneOrES); Filter filters = translator.getFilters(); if (!translator.isWhereOrAggregationQuery() || !useLuceneOrES) { return ((HBaseClient) client).findData(m, null, translator.getStartRow(), translator.getEndRow(), columnsToOutput, filters); } else { return populateUsingLucene(m, client, null, null); } }