Program: 119389
Project: 119389
Buggy source:
@SuppressWarnings("String_Node_Str") private void checkParameters(){
  boolean checkColumnExist=false;
  IMetadataTable metadataTable=null;
  List<IMetadataTable> tables=getMetadataList();
  if (tables != null && tables.size() == 1) {
    metadataTable=tables.get(0);
    checkColumnExist=true;
  }
  boolean checkPreColumnExist=false;
  IMetadataTable preMetadataTable=null;
  int preTableCount=0;
  List<? extends IConnection> incomingConnections=getIncomingConnections();
  if (incomingConnections != null && incomingConnections.size() > 0) {
    for (    IConnection incomingConnection : incomingConnections) {
      if (incomingConnection.getLineStyle().hasConnectionCategory(IConnectionCategory.DATA)) {
        IMetadataTable schemaTable=incomingConnection.getMetadataTable();
        if (schemaTable != null) {
          ++preTableCount;
          if (preTableCount > 1) {
            break;
          }
          preMetadataTable=schemaTable;
        }
      }
    }
  }
  if (preTableCount == 1) {
    checkPreColumnExist=true;
  }
  List<String> currentColumns=new ArrayList<String>();
  if (checkColumnExist) {
    currentColumns=getColumnLabels(metadataTable);
  }
  List<String> preColumns=new ArrayList<String>();
  if (checkPreColumnExist) {
    preColumns=getColumnLabels(preMetadataTable);
  }
  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.getFieldType() == EParameterFieldType.TABLE) {
      Object[] tableItemsValue=param.getListItemsValue();
      List<String> columnListParamNames=new ArrayList<String>();
      List<String> preColumnListParamNames=new ArrayList<String>();
      if (tableItemsValue != null && tableItemsValue.length > 0) {
        for (        Object tabItemValue : tableItemsValue) {
          if (tabItemValue instanceof IElementParameter) {
            IElementParameter itemParameter=(IElementParameter)tabItemValue;
            if (itemParameter.getFieldType() == EParameterFieldType.COLUMN_LIST) {
              columnListParamNames.add(itemParameter.getName());
            }
            if (itemParameter.getFieldType() == EParameterFieldType.PREV_COLUMN_LIST) {
              preColumnListParamNames.add(itemParameter.getName());
            }
          }
        }
      }
      StringBuffer inexistentColumns=new StringBuffer();
      List<Map<String,Object>> tableValues=(List<Map<String,Object>>)param.getValue();
      if (tableValues != null) {
        for (        Map<String,Object> tabMap : tableValues) {
          int row=tableValues.indexOf(tabMap) + 1;
          if (checkColumnExist) {
            for (            String paramName : columnListParamNames) {
              Object columnLineValue=tabMap.get(paramName);
              if (columnLineValue instanceof String && !currentColumns.contains(columnLineValue)) {
                inexistentColumns.append(columnLineValue).append("String_Node_Str" + row + "String_Node_Str").append("String_Node_Str");
              }
            }
          }
          if (checkPreColumnExist) {
            for (            String paramName : preColumnListParamNames) {
              Object columnLineValue=tabMap.get(paramName);
              if (columnLineValue instanceof String && !preColumns.contains(columnLineValue)) {
                inexistentColumns.append(columnLineValue).append("String_Node_Str" + row + "String_Node_Str").append("String_Node_Str");
              }
            }
          }
        }
      }
      if (inexistentColumns.length() > 0) {
        inexistentColumns.deleteCharAt(inexistentColumns.length() - 1);
        String warnMessage=Messages.getString("String_Node_Str",inexistentColumns.toString(),param.getDisplayName());
        Problems.add(ProblemStatus.WARNING,this,warnMessage);
      }
    }
    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);
      }
    }
    Boolean noConditionOnShow=StringUtils.isEmpty(param.getShowIf()) && StringUtils.isEmpty(param.getNotShowIf());
    if (param.isRequired(getElementParameters()) && !param.isShow(getElementParameters()) && noConditionOnShow&& 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 (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() != null && !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);
}
checkJobletConnections();
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(){
  boolean checkColumnExist=false;
  IMetadataTable metadataTable=null;
  List<IMetadataTable> tables=getMetadataList();
  if (tables != null && tables.size() == 1) {
    metadataTable=tables.get(0);
    checkColumnExist=true;
  }
  boolean checkPreColumnExist=false;
  IMetadataTable preMetadataTable=null;
  int preTableCount=0;
  List<? extends IConnection> incomingConnections=getIncomingConnections();
  if (incomingConnections != null && incomingConnections.size() > 0) {
    for (    IConnection incomingConnection : incomingConnections) {
      if (incomingConnection.getLineStyle().hasConnectionCategory(IConnectionCategory.DATA)) {
        IMetadataTable schemaTable=incomingConnection.getMetadataTable();
        if (schemaTable != null) {
          ++preTableCount;
          if (preTableCount > 1) {
            break;
          }
          preMetadataTable=schemaTable;
        }
      }
    }
  }
  if (preTableCount == 1) {
    checkPreColumnExist=true;
  }
  List<String> currentColumns=new ArrayList<String>();
  if (checkColumnExist) {
    currentColumns=getColumnLabels(metadataTable);
  }
  List<String> preColumns=new ArrayList<String>();
  if (checkPreColumnExist) {
    preColumns=getColumnLabels(preMetadataTable);
  }
  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.getFieldType() == EParameterFieldType.TABLE) {
      Object[] tableItemsValue=param.getListItemsValue();
      List<String> columnListParamNames=new ArrayList<String>();
      List<String> preColumnListParamNames=new ArrayList<String>();
      if (tableItemsValue != null && tableItemsValue.length > 0) {
        for (        Object tabItemValue : tableItemsValue) {
          if (tabItemValue instanceof IElementParameter) {
            IElementParameter itemParameter=(IElementParameter)tabItemValue;
            if (itemParameter.getFieldType() == EParameterFieldType.COLUMN_LIST) {
              columnListParamNames.add(itemParameter.getName());
            }
            if (itemParameter.getFieldType() == EParameterFieldType.PREV_COLUMN_LIST) {
              preColumnListParamNames.add(itemParameter.getName());
            }
          }
        }
      }
      StringBuffer inexistentColumns=new StringBuffer();
      List<Map<String,Object>> tableValues=(List<Map<String,Object>>)param.getValue();
      if (tableValues != null) {
        for (        Map<String,Object> tabMap : tableValues) {
          int row=tableValues.indexOf(tabMap) + 1;
          if (checkColumnExist) {
            for (            String paramName : columnListParamNames) {
              Object columnLineValue=tabMap.get(paramName);
              if (columnLineValue instanceof String && !currentColumns.contains(columnLineValue)) {
                inexistentColumns.append(columnLineValue).append("String_Node_Str" + row + "String_Node_Str").append("String_Node_Str");
              }
            }
          }
          if (checkPreColumnExist) {
            for (            String paramName : preColumnListParamNames) {
              Object columnLineValue=tabMap.get(paramName);
              if (columnLineValue instanceof String && !preColumns.contains(columnLineValue)) {
                inexistentColumns.append(columnLineValue).append("String_Node_Str" + row + "String_Node_Str").append("String_Node_Str");
              }
            }
          }
        }
      }
      if (inexistentColumns.length() > 0) {
        inexistentColumns.deleteCharAt(inexistentColumns.length() - 1);
        String warnMessage=Messages.getString("String_Node_Str",inexistentColumns.toString(),param.getDisplayName());
        Problems.add(ProblemStatus.WARNING,this,warnMessage);
      }
    }
    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);
      }
    }
    List<IElementParameter> emptyParamList=Collections.emptyList();
    Boolean noConditionOnShow=StringUtils.isEmpty(param.getShowIf()) && StringUtils.isEmpty(param.getNotShowIf());
    if (param.isRequired(getElementParameters()) && !param.isShow(emptyParamList) && noConditionOnShow&& 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 (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() != null && !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);
}
checkJobletConnections();
IElementParameter enableParallelizeParameter=getElementParameter(EParameterName.PARALLELIZE.getName());
if (enableParallelizeParameter != null && enableParallelizeParameter.getValue() != null) {
boolean x=(Boolean)enableParallelizeParameter.getValue();
if (x) {
addStatus(Process.PARALLEL_STATUS);
}
}
}