/** * Checks if is id col. * * @param m * the m * @param colName * the col name * @return true, if is id col */ private boolean isIdCol(EntityMetadata m, String colName) { return ((AbstractAttribute) m.getIdAttribute()).getJPAColumnName().equals(colName); }
/** * @param entityClassName * @param em * @return */ public static String buildOutput(Class<?> entityClass, EntityMetadata entityMetadata, Object output) { StringBuilder sb = new StringBuilder("'"); sb.append("{\"").append(entityClass.getSimpleName().toLowerCase()).append("\":").append(output) .append(",\"entityClassName\":\"").append(entityMetadata.getEntityClazz().getSimpleName()) .append("\",\"id\":\"" + entityMetadata.getIdAttribute().getName()).append("\"}").append("'"); return sb.toString(); }
@Override public Object[] findIdsByColumn(String schemaName, String tableName, String pKeyName, String columnName, Object columnValue, Class entityClazz) { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClazz); return getColumnsById(schemaName, tableName, columnName, ((AbstractAttribute) metadata.getIdAttribute()).getJPAColumnName(), columnValue, metadata.getIdAttribute().getBindableJavaType()).toArray(); }
public Object find(Class entityClass, Object key) { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClass); String tableName = entityMetadata.getTableName(); Class fieldClass = entityMetadata.getIdAttribute().getJavaType(); String select_Query = SparkQueryConstants.SELECTALL_QUERY; select_Query = StringUtils.replace(select_Query, SparkQueryConstants.TABLE, tableName); StringBuilder builder = new StringBuilder(select_Query); builder.append(SparkQueryConstants.ADD_WHERE_CLAUSE); builder.append(dataHandler.getColumnName(entityMetadata.getIdAttribute())); builder.append(SparkQueryConstants.EQUALS); appendValue(builder, fieldClass, key); List result = this.executeQuery(builder.toString(), entityMetadata, null); return result.isEmpty() ? null : result.get(0); }
/** * Will return partition key part of composite id. * * @return the partition key field */ private Field getPartitionKeyField() { Field[] embeddedFields = entityMetadata.getIdAttribute().getBindableJavaType().getDeclaredFields(); Field field = null; for (Field embeddedField : embeddedFields) { if (!ReflectUtils.isTransientOrStatic(embeddedField)) { field = embeddedField; break; } } return field; }
private static void setId(Object entity, Object value, EntityMetadata m) { value = PropertyAccessorHelper.fromSourceToTargetClass(m.getIdAttribute().getJavaType(), value.getClass(), value); PropertyAccessorHelper.setId(entity, m, value); } }
/** * Fetches Row keys from a {@link List} of {@link KeySlice}. * * @param keySlices the key slices * @param metadata the metadata * @return the row keys */ public static List<Object> getRowKeys(List<KeySlice> keySlices, EntityMetadata metadata) { PropertyAccessor<?> accessor = PropertyAccessorFactory.getPropertyAccessor((Field) metadata.getIdAttribute() .getJavaMember()); List<Object> rowKeys = new ArrayList<Object>(); for (KeySlice keySlice : keySlices) { byte[] key = keySlice.getKey(); Object rowKey = accessor.fromBytes(metadata.getIdAttribute().getJavaType(), key); rowKeys.add(rowKey); } return rowKeys; }
public static void onJPAColumnMapping(final EntityType entityType, EntityMetadata entityMetadata) { Set<Attribute> attributes = entityType.getAttributes(); Iterator<Attribute> iter = attributes.iterator(); while (iter.hasNext()) { Attribute attribute = iter.next(); // jpa column mapping is for non id columns only. if (!entityMetadata.getIdAttribute().equals(attribute)) { entityMetadata.addJPAColumnMapping(((AbstractAttribute) attribute).getJPAColumnName(), attribute.getName()); } } entityMetadata.setEntityType(entityType); }
private void processGeneratedValueAnnotation(Class<?> clazz, String persistenceUnit, EntityMetadata m, Map<String, IdDiscriptor> entityNameToKeyDiscriptorMap) { GeneratedValueProcessor processer = new GeneratedValueProcessor(); String pu = m.getPersistenceUnit(); String clientFactoryName = getClientFactoryName(persistenceUnit); if (pu != null && pu.equals(persistenceUnit) || clientFactoryName.equalsIgnoreCase("com.impetus.client.rdbms.RDBMSClientFactory")) { Field f = (Field) m.getIdAttribute().getJavaMember(); if (f.isAnnotationPresent(GeneratedValue.class)) { processer.process(clazz, f, m, entityNameToKeyDiscriptorMap); } } }
@Override public <E> List<E> findAll(Class<E> entityClazz, String[] columnsToSelect, Object... arg1) { // TODO: Vivek correct it. unfortunately i need to open a new session // for each finder to avoid lazy loading. Session s = getSession(); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, getPersistenceUnit(), entityClazz); Object[] pKeys = getDataType(entityMetadata, arg1); String id = ((AbstractAttribute) entityMetadata.getIdAttribute()).getJPAColumnName(); Criteria c = s.createCriteria(entityClazz); c.add(Restrictions.in(id, pKeys)); return c.list(); }
/** * From bytes. * * @param m * the m * @param metaModel * the meta model * @param b * the b * @return the object */ public static Object fromBytes(EntityMetadata m, MetamodelImpl metaModel, byte[] b) { Class idFieldClass = m.getIdAttribute().getJavaType(); if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { return fromBytes(b, String.class); } return fromBytes(b, idFieldClass); }
/** * Create "Proxy" nodes into Neo4J. Proxy nodes are defined as nodes in * Neo4J that refer to a record in some other database. They cater to * polyglot persistence cases. */ public Node createProxyNode(Object sourceNodeId, Object targetNodeId, GraphDatabaseService graphDb, EntityMetadata sourceEntityMetadata, EntityMetadata targetEntityMetadata) { String sourceNodeIdColumnName = ((AbstractAttribute) sourceEntityMetadata.getIdAttribute()).getJPAColumnName(); String targetNodeIdColumnName = ((AbstractAttribute) targetEntityMetadata.getIdAttribute()).getJPAColumnName(); Node node = graphDb.createNode(); node.setProperty(PROXY_NODE_TYPE_KEY, PROXY_NODE_VALUE); node.setProperty(sourceNodeIdColumnName, sourceNodeId); node.setProperty(targetNodeIdColumnName, targetNodeId); return node; }
/** * Find GRIDFSDBFile. * * @param entityMetadata * the entity metadata * @param key * the key * @return the grid fsdb file */ private GridFSDBFile findGridFSDBFile(EntityMetadata entityMetadata, Object key) { String id = ((AbstractAttribute) entityMetadata.getIdAttribute()).getJPAColumnName(); DBObject query = new BasicDBObject("metadata." + id, key); KunderaGridFS gfs = new KunderaGridFS(mongoDb, entityMetadata.getTableName()); return gfs.findOne(query); }
@Override public List<Object> findByRelation(String colName, Object colValue, Class entityClazz) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entityClazz); Object[] ids = findIdsByColumn(m.getSchema(), m.getTableName(), ((AbstractAttribute) m.getIdAttribute()).getJPAColumnName(), colName, colValue, m.getEntityClazz()); List<Object> resultSet = new ArrayList<Object>(); if (ids != null) { for (Object id : new HashSet(Arrays.asList(ids))) { Object object = find(entityClazz, id); if (object != null) { resultSet.add(object); } } } return resultSet; }
/** * Method to add specific relation name for given relational field. * * @param rField * relation object. */ private void addRelationName(Relation rField) { if (rField != null && !rField.isRelatedViaJoinTable()) { String relationName = getJoinColumnName(rField.getProperty()); if (rField.getProperty().isAnnotationPresent(PrimaryKeyJoinColumn.class)) { relationName = this.getIdAttribute().getName(); } addToRelationNameCollection(relationName); } }
private Object getObjectFromByteArray(EntityType entityType, byte[] value, String jpaColumnName, EntityMetadata m) { if (jpaColumnName != null) { String fieldName = m.getFieldName(jpaColumnName); if (fieldName != null) { Attribute attribute = fieldName != null ? entityType.getAttribute(fieldName) : null; EntityMetadata relationMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, attribute.getJavaType()); Object colValue = PropertyAccessorHelper.getObject(relationMetadata.getIdAttribute().getJavaType(), (byte[]) value); return colValue; } } log.warn("No value found for column {}, returning null.", jpaColumnName); return null; }
@Test public void testMappedMetamodel() { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata( ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance(), Employee.class); MetamodelImpl metaModel = (MetamodelImpl) ((EntityManagerFactoryImpl) emf).getKunderaMetadataInstance() .getApplicationMetadata().getMetamodel(persistenceUnit); EntityType entityType = metaModel.entity(Employee.class); Set<Attribute> attributes = entityType.getAttributes(); Assert.assertEquals(5, attributes.size()); Assert.assertNotNull(entityMetadata.getIdAttribute()); Assert.assertNotNull("id", entityMetadata.getIdAttribute().getName()); }
@Override public void delete(Object entity, Object pKey) { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( metadata.getPersistenceUnit()); AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(metadata.getEntityClazz()); List<String> secondaryTables = ((DefaultEntityAnnotationProcessor) managedType.getEntityAnnotation()) .getSecondaryTablesName(); secondaryTables.add(metadata.getTableName()); if (metaModel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType())) { pKey = KunderaCoreUtils.prepareCompositeKey(metadata, pKey); } for (String colTableName : secondaryTables) { deleteByColumn(metadata.getSchema(), colTableName, ((AbstractAttribute) metadata.getIdAttribute()).getJPAColumnName(), pKey); } }
@Override public void delete(Object entity, Object rowKey) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, entity.getClass()); MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { rowKey = KunderaCoreUtils.prepareCompositeKey(m, rowKey); } deleteByColumn(m.getSchema(), m.getTableName(), null, rowKey); }
@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); }