@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); } }
@Override public void endPlsqlRecordField(String fieldName, int idx) { ListenerHelper top = stac.pop(); ListenerHelper listenerHelper = stac.peek(); if (listenerHelper.isRecord()) { RecordHelper recordHelper = (RecordHelper) stac.peek(); ObjectRelationalDataTypeDescriptor ordt = descriptorMap.get(recordHelper.targetTypeName().toLowerCase()); String lFieldName = fieldName.toLowerCase(); if (ordt.getMappingForAttributeName(lFieldName) == null) { if (top.isComplex()) { if (top.isTable()) { if (((TableHelper) top).isNestedComplex()) { ObjectArrayMapping objectArrayMapping = new ObjectArrayMapping(); objectArrayMapping.setAttributeName(lFieldName); objectArrayMapping.setFieldName(lFieldName); objectArrayMapping.setStructureName(top.targetTypeName()); objectArrayMapping.setReferenceClassName( ((TableHelper) top).tableName().toLowerCase() + COLLECTION_WRAPPER_SUFFIX); ordt.addMapping(objectArrayMapping); } else { ArrayMapping arrayMapping = new ArrayMapping(); arrayMapping.setAttributeName(lFieldName); arrayMapping.setFieldName(lFieldName); arrayMapping.setStructureName(top.targetTypeName()); ordt.addMapping(arrayMapping); } } else if (top.isRecord()) { StructureMapping structureMapping = new StructureMapping(); structureMapping.setAttributeName(lFieldName); structureMapping.setFieldName(lFieldName); structureMapping.setReferenceClassName(((RecordHelper) top).recordName().toLowerCase()); ordt.addMapping(structureMapping); } } else { ordt.addDirectMapping(lFieldName, lFieldName); } } } else { System.identityHashCode(listenerHelper); } }