void populateObjectFromRow(EntityMetadata metadata, MetamodelImpl metaModel, EntityType entityType, List results, Map<String, Object> relationalValues, Object entity, Row row) { ColumnDefinitions columnDefs = row.getColumnDefinitions(); Iterator<Definition> columnDefIter = columnDefs.iterator(); entity = iteratorColumns(metadata, metaModel, entityType, relationalValues, entity, row, columnDefIter); if (entity != null && entity.getClass().isAssignableFrom(metadata.getEntityClazz())) { Object rowKey = PropertyAccessorHelper.getId(entity, metadata); // populate secondary tables data if there is any. populateSecondaryTableData(rowKey, entity, metaModel, metadata); if (!relationalValues.isEmpty()) { results.add(new EnhanceEntity(entity, rowKey, relationalValues)); } else { results.add(entity); } } else if (entity != null) { results.add(entity); } }
final Iterator<Definition> columnDefIter = columnDefs.iterator();
/** * Iterate and return. * * @param rSet * the r set * @return the list */ private List iterateAndReturn(ResultSet rSet) { Iterator<Row> rowIter = rSet.iterator(); List results = new ArrayList(); while (rowIter.hasNext()) { Row row = rowIter.next(); ColumnDefinitions columnDefs = row.getColumnDefinitions(); Iterator<Definition> columnDefIter = columnDefs.iterator(); Map rowData = new HashMap(); while (columnDefIter.hasNext()) { Definition columnDef = columnDefIter.next(); rowData.put(columnDef.getName(), DSClientUtilities.assign(row, null, null, columnDef.getType().getName(), null, columnDef.getName(), null, null)); } results.add(rowData); } return results; }
/** * Populates data form secondary tables of entity for given row key. * * @param rowId * the row id * @param entity * the entity * @param metaModel * the meta model * @param metadata * the metadata */ private void populateSecondaryTableData(Object rowId, Object entity, MetamodelImpl metaModel, EntityMetadata metadata) { AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(metadata.getEntityClazz()); List<String> secondaryTables = ((DefaultEntityAnnotationProcessor) managedType.getEntityAnnotation()).getSecondaryTablesName(); for (String tableName : secondaryTables) { StringBuilder builder = createSelectQuery(rowId, metadata, tableName); ResultSet rSet = this.execute(builder.toString(), null); Iterator<Row> rowIter = rSet.iterator(); Row row = rowIter.next(); ColumnDefinitions columnDefs = row.getColumnDefinitions(); Iterator<Definition> columnDefIter = columnDefs.iterator(); entity = iteratorColumns(metadata, metaModel, metaModel.entity(metadata.getEntityClazz()), new HashMap<String, Object>(), entity, row, columnDefIter); } }
protected Object firstColumnToObject(Row row) { Iterator<Definition> columnDefinitions = row.getColumnDefinitions().iterator(); return (columnDefinitions.hasNext() ? columnToObject(row, columnDefinitions.next()) : null); }