Program: 89468
Project: 89468
Buggy source:
@Override public void handleAction(Object context) throws ApplicationException {
  String kontoid;
  try {
    kontoid=askUserForKonto();
  }
 catch (  Exception e1) {
    e1.printStackTrace();
    Logger.error("String_Node_Str",e1);
    return;
  }
  ArrayList<FeldDefinitionen> fd=new ArrayList<FeldDefinitionen>();
  fd.add(new FeldDefinitionen("String_Node_Str",java.util.Date.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",DepotAktion.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimal.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  List<GenericObjectHashMap> daten;
  try {
    CSVImportHelper csv=new CSVImportHelper("String_Node_Str" + kontoid);
    daten=csv.run(fd);
  }
 catch (  Exception e) {
    Logger.error("String_Node_Str",e);
    throw new ApplicationException(e);
  }
  if (daten == null) {
    return;
  }
  String fehlt="String_Node_Str";
  try {
    for (    GenericObjectHashMap x : daten) {
      for (      FeldDefinitionen f : fd) {
        Object value=x.getAttribute(f.getAttr());
        if (f.isRequired() && value.toString().isEmpty()) {
          fehlt+="String_Node_Str" + f.getBeschreibung();
        }
        if (value instanceof BigDecimalWithCurrency) {
          BigDecimalWithCurrency b=(BigDecimalWithCurrency)value;
          x.setAttribute(f.getAttr(),b.getZahl());
          x.setAttribute(f.getAttr() + "String_Node_Str",b.getWaehrung());
        }
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        fehlt+="String_Node_Str";
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        fehlt+="String_Node_Str";
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",BigDecimal.ZERO);
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",BigDecimal.ZERO);
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && !x.getAttribute("String_Node_Str").toString().isEmpty()) {
        BigDecimal d=((BigDecimal)x.getAttribute("String_Node_Str")).divide((BigDecimal)x.getAttribute("String_Node_Str"),5,RoundingMode.HALF_UP);
        x.setAttribute("String_Node_Str",d);
      }
      if (!x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        BigDecimal d=((BigDecimal)x.getAttribute("String_Node_Str")).multiply((BigDecimal)x.getAttribute("String_Node_Str"));
        x.setAttribute("String_Node_Str",d);
      }
      DepotAktion aktion=Utils.checkTransaktionsBezeichnung(x.getAttribute("String_Node_Str").toString().toUpperCase());
      if (aktion == null) {
        continue;
      }
      if (aktion.equals(DepotAktion.KAUF)) {
        x.setAttribute("String_Node_Str",((BigDecimal)x.getAttribute("String_Node_Str")).abs().negate());
      }
      if (aktion.equals(DepotAktion.VERKAUF)) {
        x.setAttribute("String_Node_Str",((BigDecimal)x.getAttribute("String_Node_Str")).abs());
      }
      for (      FeldDefinitionen f : fd) {
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (x.getAttribute(f.getAttr()).toString().isEmpty()) {
          fehlt+="String_Node_Str" + f.getBeschreibung();
        }
      }
      if (!fehlt.isEmpty()) {
        Logger.error("String_Node_Str" + fehlt);
        throw new ApplicationException("String_Node_Str" + fehlt.substring(1));
      }
    }
    for (    GenericObjectHashMap x : daten) {
      if (UmsatzHelper.existsOrder((String)x.getAttribute("String_Node_Str"))) {
        Log.warn("String_Node_Str");
        continue;
      }
      if (x.getAttribute("String_Node_Str") == null) {
        Log.error("String_Node_Str");
      }
      Umsatz p=(Umsatz)Settings.getDBService().createObject(Umsatz.class,null);
      p.setKontoid(Integer.parseInt(kontoid));
      p.setAktion((DepotAktion)x.getAttribute("String_Node_Str"));
      p.setBuchungsinformationen("String_Node_Str");
      p.setWPid(Utils.getORcreateWKN(x.getAttribute("String_Node_Str").toString(),x.getAttribute("String_Node_Str").toString(),x.getAttribute("String_Node_Str").toString()));
      p.setAnzahl((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKurs((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKurzW(x.getAttribute("String_Node_Str").toString());
      p.setKosten((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKostenW(x.getAttribute("String_Node_Str").toString());
      p.setBuchungsdatum((Date)x.getAttribute("String_Node_Str"));
      p.setKommentar("String_Node_Str");
      p.setSteuern((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setSteuernW(x.getAttribute("String_Node_Str").toString());
      p.setTransaktionsgebuehren((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setTransaktionsgebuehrenW(x.getAttribute("String_Node_Str").toString());
      String orderid=(String)x.getAttribute("String_Node_Str");
      if (orderid.isEmpty()) {
        orderid=p.generateOrderId();
      }
      p.setOrderid(orderid);
      p.store();
    }
  }
 catch (  RemoteException e) {
    throw new ApplicationException(e);
  }
  Application.getMessagingFactory().sendMessage(new StatusBarMessage(Application.getI18n().tr("String_Node_Str"),StatusBarMessage.TYPE_INFO));
}

Fixed version (ground truth):
@Override public void handleAction(Object context) throws ApplicationException {
  String kontoid;
  try {
    kontoid=askUserForKonto();
  }
 catch (  Exception e1) {
    e1.printStackTrace();
    Logger.error("String_Node_Str",e1);
    return;
  }
  ArrayList<FeldDefinitionen> fd=new ArrayList<FeldDefinitionen>();
  fd.add(new FeldDefinitionen("String_Node_Str",java.util.Date.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",DepotAktion.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimal.class,"String_Node_Str",true));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",BigDecimalWithCurrency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",Currency.class,"String_Node_Str",false));
  fd.add(new FeldDefinitionen("String_Node_Str",String.class,"String_Node_Str",false));
  List<GenericObjectHashMap> daten;
  try {
    CSVImportHelper csv=new CSVImportHelper("String_Node_Str" + kontoid);
    daten=csv.run(fd);
  }
 catch (  Exception e) {
    Logger.error("String_Node_Str",e);
    throw new ApplicationException(e);
  }
  if (daten == null) {
    return;
  }
  String fehlt="String_Node_Str";
  try {
    for (    GenericObjectHashMap x : daten) {
      for (      FeldDefinitionen f : fd) {
        Object value=x.getAttribute(f.getAttr());
        if (f.isRequired() && (value == null || value.toString().isEmpty())) {
          fehlt+="String_Node_Str" + f.getBeschreibung();
        }
        if (value instanceof BigDecimalWithCurrency) {
          BigDecimalWithCurrency b=(BigDecimalWithCurrency)value;
          x.setAttribute(f.getAttr(),b.getZahl());
          x.setAttribute(f.getAttr() + "String_Node_Str",b.getWaehrung());
        }
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        fehlt+="String_Node_Str";
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        fehlt+="String_Node_Str";
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",BigDecimal.ZERO);
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",BigDecimal.ZERO);
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty()) {
        x.setAttribute("String_Node_Str",x.getAttribute("String_Node_Str"));
      }
      if (x.getAttribute("String_Node_Str").toString().isEmpty() && !x.getAttribute("String_Node_Str").toString().isEmpty()) {
        BigDecimal d=((BigDecimal)x.getAttribute("String_Node_Str")).divide((BigDecimal)x.getAttribute("String_Node_Str"),5,RoundingMode.HALF_UP);
        x.setAttribute("String_Node_Str",d);
      }
      if (!x.getAttribute("String_Node_Str").toString().isEmpty() && x.getAttribute("String_Node_Str").toString().isEmpty()) {
        BigDecimal d=((BigDecimal)x.getAttribute("String_Node_Str")).multiply((BigDecimal)x.getAttribute("String_Node_Str"));
        x.setAttribute("String_Node_Str",d);
      }
      DepotAktion aktion=Utils.checkTransaktionsBezeichnung(x.getAttribute("String_Node_Str").toString().toUpperCase());
      if (aktion == null) {
        continue;
      }
      if (aktion.equals(DepotAktion.KAUF)) {
        x.setAttribute("String_Node_Str",((BigDecimal)x.getAttribute("String_Node_Str")).abs().negate());
      }
      if (aktion.equals(DepotAktion.VERKAUF)) {
        x.setAttribute("String_Node_Str",((BigDecimal)x.getAttribute("String_Node_Str")).abs());
      }
      for (      FeldDefinitionen f : fd) {
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (f.getAttr().equals("String_Node_Str")) {
          continue;
        }
        if (x.getAttribute(f.getAttr()).toString().isEmpty()) {
          fehlt+="String_Node_Str" + f.getBeschreibung();
        }
      }
      if (!fehlt.isEmpty()) {
        Logger.error("String_Node_Str" + fehlt);
        throw new ApplicationException("String_Node_Str" + fehlt.substring(1));
      }
    }
    for (    GenericObjectHashMap x : daten) {
      if (UmsatzHelper.existsOrder((String)x.getAttribute("String_Node_Str"))) {
        Log.warn("String_Node_Str");
        continue;
      }
      if (x.getAttribute("String_Node_Str") == null) {
        Log.error("String_Node_Str");
      }
      Umsatz p=(Umsatz)Settings.getDBService().createObject(Umsatz.class,null);
      p.setKontoid(Integer.parseInt(kontoid));
      p.setAktion((DepotAktion)x.getAttribute("String_Node_Str"));
      p.setBuchungsinformationen("String_Node_Str");
      p.setWPid(Utils.getORcreateWKN(x.getAttribute("String_Node_Str").toString(),x.getAttribute("String_Node_Str").toString(),x.getAttribute("String_Node_Str").toString()));
      p.setAnzahl((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKurs((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKurzW(x.getAttribute("String_Node_Str").toString());
      p.setKosten((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setKostenW(x.getAttribute("String_Node_Str").toString());
      p.setBuchungsdatum((Date)x.getAttribute("String_Node_Str"));
      p.setKommentar("String_Node_Str");
      p.setSteuern((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setSteuernW(x.getAttribute("String_Node_Str").toString());
      p.setTransaktionsgebuehren((BigDecimal)x.getAttribute("String_Node_Str"));
      p.setTransaktionsgebuehrenW(x.getAttribute("String_Node_Str").toString());
      String orderid=(String)x.getAttribute("String_Node_Str");
      if (orderid.isEmpty()) {
        orderid=p.generateOrderId();
      }
      p.setOrderid(orderid);
      p.store();
    }
  }
 catch (  RemoteException e) {
    throw new ApplicationException(e);
  }
  Application.getMessagingFactory().sendMessage(new StatusBarMessage(Application.getI18n().tr("String_Node_Str"),StatusBarMessage.TYPE_INFO));
}