@Override protected List<E> populateEntities(EntityMetadata m, Client client) throws Exception { int count = 0; List results = new ArrayList(); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); EntityType entityType = metaModel.entity(entityMetadata.getEntityClazz()); Map<String, Object> relationalValues = new HashMap<String, Object>(); if (rSet == null) { String parsedQuery = query.onQueryOverCQL3(m, client, metaModel, null); Statement statement = new SimpleStatement(parsedQuery); statement.setFetchSize(fetchSize); rSet = ((DSClient) client).executeStatement(statement); rowIter = rSet.iterator(); } while (rowIter.hasNext() && count++ < fetchSize) { Object entity = null; Row row = rowIter.next(); ((DSClient) client).populateObjectFromRow(entityMetadata, metaModel, entityType, results, relationalValues, entity, row); } return results; }
@Test public void testWithClosedPDInstance() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { PersistenceDelegator delegator = CoreTestUtilities.getDelegator(em); PersonnelDTO dto = new PersonnelDTO("1", "vivek", "mishra"); em.persist(dto); em.close(); LazyInitializerFactory factory = kunderaMetadata.getCoreMetadata().getLazyInitializerFactory(); KunderaProxy proxy = factory.getProxy("personnel", PersonnelDTO.class, null, null, "1", delegator); LazyInitializer li = proxy.getKunderaLazyInitializer(); try { li.initialize(); Assert.fail("Should have gone to catch block!"); } catch(LazyInitializationException liex) { Assert.assertEquals("could not initialize proxy " + PersonnelDTO.class.getName() + "_" + "1" + " - the owning Session was closed",liex.getMessage()); } em = emf.createEntityManager(); }
/** * Load. */ public void load(final KunderaMetadata kunderaMetadata) { log.info("Loading Kundera Core Metdata ... "); CoreMetadata coreMetadata = new CoreMetadata(); coreMetadata.setLazyInitializerFactory(new CglibLazyInitializerFactory()); kunderaMetadata.setCoreMetadata(coreMetadata); } }
PersonnelDTO dto = new PersonnelDTO("1", "vivek", "mishra"); em.persist(dto); LazyInitializerFactory factory = kunderaMetadata.getCoreMetadata().getLazyInitializerFactory(); KunderaProxy proxy = factory.getProxy("personnel#1", PersonnelDTO.class, null, null, "1", delegator); LazyInitializer li = proxy.getKunderaLazyInitializer();
/** * Adds the sort order. * * @param builder * the builder * @param query * the query * @param entityMetadata * the entity metadata */ private void addSortOrder(SearchRequestBuilder builder, KunderaQuery query, EntityMetadata entityMetadata) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata() .getMetamodel(entityMetadata.getPersistenceUnit()); List<OrderByItem> orderList = KunderaQueryUtils.getOrderByItems(query.getJpqlExpression()); for (OrderByItem orderByItem : orderList) { String ordering = orderByItem.getOrdering().toString(); if (ordering.equalsIgnoreCase(ESConstants.DEFAULT)) { ordering = Expression.ASC; } builder.addSort(KunderaCoreUtils.getJPAColumnName(orderByItem.getExpression().toParsedText(), entityMetadata, metaModel), SortOrder.valueOf(ordering)); } }
@Test public void invalidValidQueryTest() { LuceneIndexer indexer = LuceneIndexer.getInstance(LUCENE_DIR_PATH); EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata( ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), Person.class); Person p = new Person(); p.setAge(32); p.setDay(Day.TUESDAY); p.setPersonId("p1"); indexer.index(metadata, (MetamodelImpl) ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance() .getApplicationMetadata().getMetamodel("patest"), p); indexer.flush(); Assert.assertNotNull(indexer); String luceneQuery = "+Person.AGE:32 AND +entity.class:com.impetus.kundera.query.Person"; try { Map<String, Object> results = indexer.search(luceneQuery, 0, 10, false, ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), metadata); Assert.assertTrue(!results.isEmpty()); } catch (LuceneIndexingException liex) { Assert.fail(); } indexer.close(); }
/** * Gets the data frame. * * @param query * the query * @param m * the m * @param kunderaQuery * the kundera query * @return the data frame */ public DataFrame getDataFrame(String query, EntityMetadata m, KunderaQuery kunderaQuery) { PersistenceUnitMetadata puMetadata = kunderaMetadata.getApplicationMetadata().getPersistenceUnitMetadata( persistenceUnit); String clientName = puMetadata.getProperty(DATA_CLIENT).toLowerCase(); SparkDataClient dataClient = SparkDataClientFactory.getDataClient(clientName); if (registeredTables.get(m.getTableName()) == null || !registeredTables.get(m.getTableName())) { dataClient.registerTable(m, this); registeredTables.put(m.getTableName(), true); } // at this level temp table or table should be ready DataFrame dataFrame = sqlContext.sql(query); return dataFrame; }
/** * Gets the query. * * @param clause * the clause * @param metadata * the metadata * @return the query */ private QueryBuilder getQueryBuilder(FilterClause clause, final EntityMetadata metadata) { String condition = clause.getCondition(); String value = clause.getValue().get(0).toString(); String name = ((AbstractAttribute) ((MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( metadata.getPersistenceUnit())).entity(metadata.getEntityClazz()).getAttribute(clause.getProperty())) .getJPAColumnName(); String likePattern = value.contains(ESConstants.PERCENTAGE) ? value.replaceAll(ESConstants.PERCENTAGE, ESConstants.ASTERISK) : ESConstants.ASTERISK + value + ESConstants.ASTERISK; QueryBuilder queryBuilder = null; if (condition.equals(Expression.LIKE)) { queryBuilder = QueryBuilders.wildcardQuery(name, likePattern); } return QueryBuilders.queryFilter(queryBuilder); } }
/** * Export schema handles the handleOperation method. * * @param hbase */ protected void exportSchema(final String persistenceUnit, List<TableInfo> tables) { // Get persistence unit metadata this.puMetadata = kunderaMetadata.getApplicationMetadata().getPersistenceUnitMetadata(persistenceUnit); String paramString = externalProperties != null ? (String) externalProperties .get(PersistenceProperties.KUNDERA_CLIENT_FACTORY) : null; if (clientFactory != null && ((clientFactory.equalsIgnoreCase(puMetadata.getProperties().getProperty( PersistenceProperties.KUNDERA_CLIENT_FACTORY))) || (paramString != null && clientFactory .equalsIgnoreCase(paramString)))) { readConfigProperties(puMetadata); // invoke handle operation. if (operation != null && initiateClient()) { tableInfos = tables; handleOperations(tables); } } }
/** * Iterate and return. * * @param rSet * the r set * @param entityClazz * the entity clazz * @param metadata * the metadata * @return the list */ private List iterateAndReturn(ResultSet rSet, EntityMetadata metadata) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(metadata.getPersistenceUnit()); EntityType entityType = metaModel.entity(metadata.getEntityClazz()); Iterator<Row> rowIter = rSet.iterator(); List results = new ArrayList(); Map<String, Object> relationalValues = new HashMap<String, Object>(); while (rowIter.hasNext()) { Object entity = null; Row row = rowIter.next(); populateObjectFromRow(metadata, metaModel, entityType, results, relationalValues, entity, row); } return results; }
MetaModelBuilder<X, T> metaModelBuilder = kunderaMetadata.getApplicationMetadata().getMetaModelBuilder( entityMetadata.getPersistenceUnit()); EntityType entityType = (EntityType) metaModelBuilder.getManagedTypes().get(entityMetadata.getEntityClazz());
/** * Removes an object from Index. * * @param metadata * the metadata * @param entity * the entity * @param key * the key */ public final void remove(EntityMetadata metadata, Object entity, Object key) { if (indexer != null) { if (indexer.getClass().getName().equals(IndexingConstants.LUCENE_INDEXER)) { ((com.impetus.kundera.index.lucene.Indexer) indexer).unindex(metadata, key, kunderaMetadata, null); } else { indexer.unIndex(metadata.getEntityClazz(), entity, metadata, (MetamodelImpl) kunderaMetadata .getApplicationMetadata().getMetamodel(metadata.getPersistenceUnit())); } } }
/** * Creates the or update schema. * * @param isUpdate * the is update */ private void createOrUpdateSchema(Boolean isUpdate) { createNamespace(isUpdate); readExternalProperties(); Map<Class<?>, EntityType<?>> entityMap = kunderaMetadata.getApplicationMetadata() .getMetaModelBuilder(puMetadata.getPersistenceUnitName()).getManagedTypes(); // iterating all classes of pu to generate schema for (Class<?> clazz : entityMap.keySet()) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, clazz); if (m != null) { String tablename = m.getTableName(); HTableDescriptor hTableDescriptor = getTableDescriptor(clazz, entityMap.get(clazz), tablename); String hTableName = HBaseUtils.getHTableName(databaseName, tablename); createOrUpdateTable(hTableName, hTableDescriptor); } } }
@Override protected List<Object> recursivelyPopulateEntities(EntityMetadata m, Client client) { List<Object> entities = new ArrayList<Object>(); ApplicationMetadata appMetadata = kunderaMetadata.getApplicationMetadata(); String query = appMetadata.getQuery(getJPAQuery()); boolean isNative = kunderaQuery.isNative()/* * query == null ? true : * appMetadata * .isNative(getJPAQuery()) */; if (isNative) { String nativeQuery = query != null ? query : getJPAQuery(); Neo4JNativeQuery nativeQueryImpl = Neo4JNativeQueryFactory.getNativeQueryImplementation(queryType); entities = nativeQueryImpl.executeNativeQuery(nativeQuery, (Neo4JClient) client, m); } else { String luceneQuery = getLuceneQuery(kunderaQuery); entities = ((Neo4JClient) client).executeLuceneQuery(m, luceneQuery); } return setRelationEntities(entities, client, m); }
@Test public void invalidLuceneQueryTest() { LuceneIndexer indexer = LuceneIndexer.getInstance(LUCENE_DIR_PATH); EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata( ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), Person.class); Person p = new Person(); p.setAge(32); p.setDay(Day.TUESDAY); p.setPersonId("p1"); indexer.index(metadata, (MetamodelImpl) ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance() .getApplicationMetadata().getMetamodel("patest"), p); Assert.assertNotNull(indexer); final String luceneQuery = "Invalid lucene query"; try { indexer.search(luceneQuery, 0, 10, false, ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), metadata); } catch (LuceneIndexingException liex) { Assert.assertEquals("Error while parsing Lucene Query " + luceneQuery, liex.getMessage()); } indexer.close(); }
/** * Creates the select query. * * @param rowId * the row id * @param metadata * the metadata * @param tableName * the table name * @return the string builder */ private StringBuilder createSelectQuery(Object rowId, EntityMetadata metadata, String tableName) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(metadata.getPersistenceUnit()); CQLTranslator translator = new CQLTranslator(); String select_Query = translator.SELECTALL_QUERY; select_Query = StringUtils.replace(select_Query, CQLTranslator.COLUMN_FAMILY, translator.ensureCase(new StringBuilder(), tableName, false).toString()); StringBuilder builder = new StringBuilder(select_Query); builder.append(CQLTranslator.ADD_WHERE_CLAUSE); onWhereClause(metadata, rowId, translator, builder, metaModel, metadata.getIdAttribute()); builder.delete(builder.lastIndexOf(CQLTranslator.AND_CLAUSE), builder.length()); return builder; }
/** * getKunderaProperty method return auto schema generation property for give * persistence unit. * * @param externalProperties * * @param String * persistenceUnit. * @return value of kundera auto ddl in form of String. */ private String getSchemaProperty(String persistenceUnit, Map<String, Object> externalProperties) { PersistenceUnitMetadata persistenceUnitMetadata = kunderaMetadata.getApplicationMetadata() .getPersistenceUnitMetadata(persistenceUnit); String autoDdlOption = externalProperties != null ? (String) externalProperties.get(PersistenceProperties.KUNDERA_DDL_AUTO_PREPARE) : null; if (autoDdlOption == null) { autoDdlOption = persistenceUnitMetadata != null ? persistenceUnitMetadata.getProperty(PersistenceProperties.KUNDERA_DDL_AUTO_PREPARE) : null; } return autoDdlOption; } }
/** * Compute entity via columns. * * @param m * the m * @param isRelation * the is relation * @param relations * the relations * @param entities * the entities * @param qResults * the q results */ protected void computeEntityViaColumns(EntityMetadata m, boolean isRelation, List<String> relations, List<Object> entities, Map<ByteBuffer, List<Column>> qResults) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit()); EntityType entityType = metaModel.entity(m.getEntityClazz()); List<AbstractManagedType> subManagedType = ((AbstractManagedType) entityType).getSubManagedType(); for (ByteBuffer key : qResults.keySet()) { onColumn(m, isRelation, relations, entities, qResults.get(key), subManagedType, key); } }
/** * Populate embeddable object. * * @param data * the data * @param obj * the obj * @param m * the m * @param clazz * the clazz * @param prefix * @return the object */ private Object populateEmbeddableObject(HBaseDataWrapper data, Object obj, EntityMetadata m, Class clazz, String prefix) { MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); Set<Attribute> attributes = metaModel.embeddable(clazz).getAttributes(); writeValuesToEntity(obj, data, m, metaModel, attributes, null, null, -1, prefix); return obj; }
/** * Checks whether an entity with given metadata contains a collection field * * @param m * @return */ public static boolean containsBasicElementCollectionField(final EntityMetadata m, final KunderaMetadata kunderaMetadata) { Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit()); EntityType entityType = metaModel.entity(m.getEntityClazz()); Iterator<Attribute> iter = entityType.getAttributes().iterator(); while (iter.hasNext()) { Attribute attr = iter.next(); if (attr.isCollection() && !attr.isAssociation() && isBasicElementCollectionField((Field) attr.getJavaMember())) { return true; } } return false; }