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;
 }