@Override public void endPlsqlTable(String tableName, String typeDDL, String typeDropDDL) { ListenerHelper top = stac.pop(); TableHelper tableHelper = (TableHelper) stac.peek(); String tableAlias = tableHelper.targetTypeName().toLowerCase(); ObjectRelationalDataTypeDescriptor ordt = descriptorMap.get(tableAlias); if (ordt == null) { ordt = new ObjectRelationalDataTypeDescriptor(); ordt.descriptorIsAggregate(); ordt.setAlias(tableHelper.tableAlias()); ordt.setJavaClassName(tableName.toLowerCase() + COLLECTION_WRAPPER_SUFFIX); ordt.getQueryManager(); } boolean itemsMappingFound = ordt.getMappingForAttributeName(ITEMS_MAPPING_ATTRIBUTE_NAME) == null ? false : true; if (top.isRecord()) { if (!itemsMappingFound) { ObjectArrayMapping itemsMapping = new ObjectArrayMapping(); itemsMapping.setAttributeName(ITEMS_MAPPING_ATTRIBUTE_NAME); itemsMapping.setFieldName(ITEMS_MAPPING_FIELD_NAME); itemsMapping.setStructureName(tableHelper.targetTypeName()); itemsMapping.setReferenceClassName(((RecordHelper) top).recordName().toLowerCase()); ordt.addMapping(itemsMapping); } tableHelper.nestedIsComplex(); } else { if (!itemsMappingFound) { ArrayMapping itemsMapping = new ArrayMapping(); itemsMapping.setAttributeName(ITEMS_MAPPING_ATTRIBUTE_NAME); itemsMapping.setFieldName(ITEMS_MAPPING_FIELD_NAME); itemsMapping.useCollectionClass(ArrayList.class); itemsMapping.setStructureName(tableHelper.targetTypeName()); ordt.addMapping(itemsMapping); } if (top.isTable()) { tableHelper.nestedIsComplex(); } } if (!itemsMappingFound) { descriptorMap.put(tableAlias, ordt); } }