Program: 122382
Project: 122382
Buggy source:
@SuppressWarnings("String_Node_Str") private void checkParameters(){
  for (  IElementParameter param : this.getElementParametersWithChildrens()) {
    if (param.getMaxlength() > 0) {
      String paramValue=param.getValue().toString();
      paramValue.length();
      String tmpValue;
      if (paramValue.startsWith("String_Node_Str") && paramValue.endsWith("String_Node_Str")) {
        tmpValue=paramValue.replaceAll("String_Node_Str","String_Node_Str");
      }
 else {
        continue;
      }
      String factor="String_Node_Str";
      Pattern pattern=Pattern.compile(factor);
      Matcher matcher=pattern.matcher(tmpValue);
      int lenth=0;
      matcher.groupCount();
      while (matcher.find()) {
        lenth++;
      }
      String last=tmpValue.replaceAll(factor,"String_Node_Str");
      last=last.replaceAll("String_Node_Str","String_Node_Str");
      int realLength=last.length() + lenth;
      if (realLength > param.getMaxlength()) {
        String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName(),param.getMaxlength());
        Problems.add(ProblemStatus.ERROR,this,errorMessage);
      }
    }
    if (param.getFieldType() == EParameterFieldType.CLOSED_LIST) {
      String showIf=param.getShowIf();
      String notShowIf=param.getNotShowIf();
      IElementParameter dbTypeEle=this.getElementParameter("String_Node_Str");
      if (dbTypeEle != null && showIf != null && notShowIf == null) {
        String dbType=(String)dbTypeEle.getValue();
        boolean show=false;
        if (showIf.contains(dbType)) {
          show=true;
        }
        if (show && !ArrayUtils.contains(param.getListItemsValue(),param.getValue())) {
          Problems.add(ProblemStatus.ERROR,this,"String_Node_Str");
        }
      }
 else       if ("String_Node_Str".equals(param.getName()) || "String_Node_Str".equals(param.getName())) {
      }
 else {
        if (!ArrayUtils.contains(param.getListItemsValue(),param.getValue())) {
          Problems.add(ProblemStatus.ERROR,this,"String_Node_Str" + param.getDisplayName() + "String_Node_Str");
        }
      }
    }
    if (param.getName().equals(EParameterName.COMMENT.getName())) {
      String infoValue=(String)param.getValue();
      if (infoValue != null && !infoValue.equals("String_Node_Str")) {
        Problems.add(ProblemStatus.INFO,this,infoValue);
      }
    }
    if (param.isRequired(getElementParameters()) && !param.isShow(getElementParameters()) && this.externalNode != null) {
      if (param.getFieldType().equals(EParameterFieldType.TABLE)) {
        List<Map<String,String>> tableValues=(List<Map<String,String>>)param.getValue();
        if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str")) {
          checkFileOutputMSXML(param,tableValues);
        }
 else         if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str") && tableValues.size() != 0) {
          if (((Boolean)this.getElementParameter("String_Node_Str").getValue()) == true) {
            List<Map<String,String>> listGroup=(List<Map<String,String>>)externalNode.getElementParameter("String_Node_Str").getValue();
            List<Map<String,String>> listLoop=(List<Map<String,String>>)externalNode.getElementParameter("String_Node_Str").getValue();
            if (listGroup.size() == 0 || listLoop.size() == 0) {
              String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
              Problems.add(ProblemStatus.ERROR,this,errorMessage);
            }
          }
        }
 else         if ("String_Node_Str".equals(component.getName())) {
        }
 else {
          if (tableValues == null || tableValues.size() == 0) {
            String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
            Problems.add(ProblemStatus.ERROR,this,errorMessage);
          }
        }
      }
    }
    if (this.getOutgoingConnections("String_Node_Str").size() > 0) {
      boolean isShow=true;
      for (      IConnection iconn : this.getOutgoingConnections("String_Node_Str")) {
        if (iconn instanceof Connection) {
          Connection conn=(Connection)iconn;
          isShow=conn.getSourceNodeConnector().isShow();
          if (!isShow) {
            break;
          }
        }
      }
      if (!isShow) {
        EParameterFieldType fieldType=param.getFieldType();
switch (fieldType) {
case CLOSED_LIST:
          if (param.getName().equals("String_Node_Str")) {
            if (((String)param.getValue()).equals("String_Node_Str")) {
              Problems.add(ProblemStatus.ERROR,this,Messages.getString("String_Node_Str"));
            }
          }
case CHECK:
        if (param.getName().equals("String_Node_Str")) {
          if ((Boolean)param.getValue() == true) {
            Problems.add(ProblemStatus.ERROR,this,Messages.getString("String_Node_Str"));
          }
        }
    }
  }
}
if (param.isRequired() && param.isShow(getElementParameters())) {
  EParameterFieldType fieldType=param.getFieldType();
  String value;
  List multiSchemaDelimetedSeparaor=new ArrayList();
switch (fieldType) {
case TABLE:
    List<Map<String,String>> tableValues=(List<Map<String,String>>)param.getValue();
  if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str")) {
    checkFileOutputMSXML(param,tableValues);
  }
 else {
    if (tableValues == null || tableValues.size() == 0) {
      String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
      Problems.add(ProblemStatus.ERROR,this,errorMessage);
    }
 else     if (this.getComponent().getName().equals("String_Node_Str")) {
      for (      Map<String,String> map : tableValues) {
        if (map != null) {
          if ("String_Node_Str".equals(map.get("String_Node_Str")) || map.get("String_Node_Str") == null) {
            Problems.add(ProblemStatus.ERROR,this,Messages.getString("String_Node_Str"));
          }
        }
      }
    }
  }
break;
case CHECK:
break;
case RADIO:
break;
case SCHEMA_TYPE:
break;
case DCSCHEMA:
break;
case MEMO_SQL:
String errMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Object value2=param.getValue();
if (value2 == null) {
break;
}
String currentQuery=value2.toString();
if (CorePlugin.getDefault().getPreferenceStore().getBoolean(ITalendCorePrefConstants.SQL_ADD_WARNING)) {
if (currentQuery.indexOf(COMPARE_STR1) != -1 || currentQuery.indexOf(COMPARE_STR2) != -1) {
Problems.add(ProblemStatus.WARNING,this,errMessage);
break;
}
if (!NodeQueryCheckUtil.checkQueryOK(this,currentQuery)) {
Problems.add(ProblemStatus.WARNING,this,errMessage);
break;
}
}
break;
case CLOSED_LIST:
value=(String)param.getValue();
if (value == null || value.equals("String_Node_Str")) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
 else {
if (param.getListItemsValue().length != 0) {
boolean found=false;
for (int i=0; i < param.getListItemsValue().length && !found; i++) {
if (param.getListItemsValue()[i].equals(value)) {
found=true;
}
}
if (!found) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName(),value);
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
}
break;
default :
if (param.getValue() != null && !(param.getValue() instanceof String)) {
break;
}
value=(String)param.getValue();
if (value == null || value.equals("String_Node_Str")) {
if (this.getComponent() != null && "String_Node_Str".equals(this.getComponent().getName())) {
multiSchemaDelimetedSeparaor.add(param);
if (multiSchemaDelimetedSeparaor.size() == 2) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
 else {
if (getComponent() != null && "String_Node_Str".equals(getComponent().getName())) {
IElementParameter fromRepository=getElementParameter("String_Node_Str");
Object isFromRepository=fromRepository.getValue();
if (isFromRepository != null && "String_Node_Str".equals(isFromRepository.toString())) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
 else {
}
}
 else {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
}
}
}
checkValidationRule(param);
checktAggregateRow(param);
}
IElementParameter enableParallelizeParameter=getElementParameter(EParameterName.PARALLELIZE.getName());
if (enableParallelizeParameter != null && enableParallelizeParameter.getValue() != null) {
boolean x=(Boolean)enableParallelizeParameter.getValue();
if (x) {
addStatus(Process.PARALLEL_STATUS);
}
}
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void checkParameters(){
  for (  IElementParameter param : this.getElementParametersWithChildrens()) {
    if (param.getMaxlength() > 0) {
      String paramValue=param.getValue().toString();
      paramValue.length();
      String tmpValue;
      if (paramValue.startsWith("String_Node_Str") && paramValue.endsWith("String_Node_Str")) {
        tmpValue=paramValue.replaceAll("String_Node_Str","String_Node_Str");
      }
 else {
        continue;
      }
      String factor="String_Node_Str";
      Pattern pattern=Pattern.compile(factor);
      Matcher matcher=pattern.matcher(tmpValue);
      int lenth=0;
      matcher.groupCount();
      while (matcher.find()) {
        lenth++;
      }
      String last=tmpValue.replaceAll(factor,"String_Node_Str");
      last=last.replaceAll("String_Node_Str","String_Node_Str");
      int realLength=last.length() + lenth;
      if (realLength > param.getMaxlength()) {
        String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName(),param.getMaxlength());
        Problems.add(ProblemStatus.ERROR,this,errorMessage);
      }
    }
    if (param.getFieldType() == EParameterFieldType.CLOSED_LIST) {
      String showIf=param.getShowIf();
      String notShowIf=param.getNotShowIf();
      IElementParameter dbTypeEle=this.getElementParameter("String_Node_Str");
      if (dbTypeEle != null && showIf != null && notShowIf == null) {
        String dbType=(String)dbTypeEle.getValue();
        boolean show=false;
        if (showIf.contains(dbType)) {
          show=true;
        }
        if (show && !ArrayUtils.contains(param.getListItemsValue(),param.getValue())) {
          Problems.add(ProblemStatus.ERROR,this,"String_Node_Str");
        }
      }
 else       if ("String_Node_Str".equals(param.getName()) || "String_Node_Str".equals(param.getName())) {
      }
 else {
        if (!ArrayUtils.contains(param.getListItemsValue(),param.getValue())) {
          Problems.add(ProblemStatus.ERROR,this,"String_Node_Str" + param.getDisplayName() + "String_Node_Str");
        }
      }
    }
    if (param.getName().equals(EParameterName.COMMENT.getName())) {
      String infoValue=(String)param.getValue();
      if (infoValue != null && !infoValue.equals("String_Node_Str")) {
        Problems.add(ProblemStatus.INFO,this,infoValue);
      }
    }
    if (param.isRequired(getElementParameters()) && !param.isShow(getElementParameters()) && this.externalNode != null) {
      if (param.getFieldType().equals(EParameterFieldType.TABLE)) {
        List<Map<String,String>> tableValues=(List<Map<String,String>>)param.getValue();
        if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str")) {
          checkFileOutputMSXML(param,tableValues);
        }
 else         if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str") && tableValues.size() != 0) {
          if (((Boolean)this.getElementParameter("String_Node_Str").getValue()) == true) {
            List<Map<String,String>> listGroup=(List<Map<String,String>>)externalNode.getElementParameter("String_Node_Str").getValue();
            List<Map<String,String>> listLoop=(List<Map<String,String>>)externalNode.getElementParameter("String_Node_Str").getValue();
            if (listGroup.size() == 0 || listLoop.size() == 0) {
              String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
              Problems.add(ProblemStatus.ERROR,this,errorMessage);
            }
          }
        }
 else         if ("String_Node_Str".equals(component.getName())) {
        }
 else {
          if (tableValues == null || tableValues.size() == 0) {
            String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
            Problems.add(ProblemStatus.ERROR,this,errorMessage);
          }
        }
      }
    }
    for (    IConnection connection : getOutgoingConnections()) {
      if (!connection.getSourceNodeConnector().isShow()) {
        Problems.add(ProblemStatus.ERROR,this,"String_Node_Str" + connection.getSourceNodeConnector().getLinkName() + "String_Node_Str");
      }
    }
    if (param.isRequired() && param.isShow(getElementParameters())) {
      EParameterFieldType fieldType=param.getFieldType();
      String value;
      List multiSchemaDelimetedSeparaor=new ArrayList();
switch (fieldType) {
case TABLE:
        List<Map<String,String>> tableValues=(List<Map<String,String>>)param.getValue();
      if (tableValues != null && "String_Node_Str".equalsIgnoreCase(component.getName()) && param.getName().equals("String_Node_Str")) {
        checkFileOutputMSXML(param,tableValues);
      }
 else {
        if (tableValues == null || tableValues.size() == 0) {
          String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
          Problems.add(ProblemStatus.ERROR,this,errorMessage);
        }
 else         if (this.getComponent().getName().equals("String_Node_Str")) {
          for (          Map<String,String> map : tableValues) {
            if (map != null) {
              if ("String_Node_Str".equals(map.get("String_Node_Str")) || map.get("String_Node_Str") == null) {
                Problems.add(ProblemStatus.ERROR,this,Messages.getString("String_Node_Str"));
              }
            }
          }
        }
      }
    break;
case CHECK:
  break;
case RADIO:
break;
case SCHEMA_TYPE:
break;
case DCSCHEMA:
break;
case MEMO_SQL:
String errMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Object value2=param.getValue();
if (value2 == null) {
break;
}
String currentQuery=value2.toString();
if (CorePlugin.getDefault().getPreferenceStore().getBoolean(ITalendCorePrefConstants.SQL_ADD_WARNING)) {
if (currentQuery.indexOf(COMPARE_STR1) != -1 || currentQuery.indexOf(COMPARE_STR2) != -1) {
Problems.add(ProblemStatus.WARNING,this,errMessage);
break;
}
if (!NodeQueryCheckUtil.checkQueryOK(this,currentQuery)) {
Problems.add(ProblemStatus.WARNING,this,errMessage);
break;
}
}
break;
case CLOSED_LIST:
value=(String)param.getValue();
if (value == null || value.equals("String_Node_Str")) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
 else {
if (param.getListItemsValue().length != 0) {
boolean found=false;
for (int i=0; i < param.getListItemsValue().length && !found; i++) {
if (param.getListItemsValue()[i].equals(value)) {
found=true;
}
}
if (!found) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName(),value);
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
}
break;
default :
if (param.getValue() != null && !(param.getValue() instanceof String)) {
break;
}
value=(String)param.getValue();
if (value == null || value.equals("String_Node_Str")) {
if (this.getComponent() != null && "String_Node_Str".equals(this.getComponent().getName())) {
multiSchemaDelimetedSeparaor.add(param);
if (multiSchemaDelimetedSeparaor.size() == 2) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
 else {
if (getComponent() != null && "String_Node_Str".equals(getComponent().getName())) {
IElementParameter fromRepository=getElementParameter("String_Node_Str");
Object isFromRepository=fromRepository.getValue();
if (isFromRepository != null && "String_Node_Str".equals(isFromRepository.toString())) {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
 else {
}
}
 else {
String errorMessage=Messages.getString("String_Node_Str",param.getDisplayName());
Problems.add(ProblemStatus.ERROR,this,errorMessage);
}
}
}
}
}
checkValidationRule(param);
checktAggregateRow(param);
}
IElementParameter enableParallelizeParameter=getElementParameter(EParameterName.PARALLELIZE.getName());
if (enableParallelizeParameter != null && enableParallelizeParameter.getValue() != null) {
boolean x=(Boolean)enableParallelizeParameter.getValue();
if (x) {
addStatus(Process.PARALLEL_STATUS);
}
}
}