public List<DataObjectInfo> getSelectedDataObjects() { List<DataObjectInfo> dois = new ArrayList<DataObjectInfo>(); Map<String, DataObjectInfo> dataObjectMap = new HashMap<String, DataObjectInfo>(); for (DataObjectInfo doi : getDataObjectInfos()) { if (doi.isGenerate()) { DataObjectInfo dataObjectWithSameClassName = dataObjectMap.get(doi.getClassName()); if (dataObjectWithSameClassName != null) { // DataObjectInfo with same name already exist, merged the two! // if one is an existing data object, then we merge the other one, if both are new // it doesn't matter'. If both are existing we do not merge (they must live in different // packages otherwise this would not be possible) if (doi.isExisting() && dataObjectWithSameClassName.isExisting()) { dois.add(doi); } else if (doi.isExisting()) { // we need to remove the existing entry from the list, and add the new one, because the // new // already exists in persistence-mapping.xml mergeDataObjects(doi, dataObjectWithSameClassName); dois.remove(dataObjectWithSameClassName); dois.add(doi); dataObjectMap.put(doi.getClassName(), doi); } else { mergeDataObjects(dataObjectWithSameClassName, doi); } } else { dois.add(doi); dataObjectMap.put(doi.getClassName(), doi); } } } return dois; }