Program: 102005
Project: 102005
Buggy source:
@SuppressWarnings("String_Node_Str") @Override public boolean helpCreate(Object newObject,Map properties,List<EObject> references){
  CoreArgCheck.isNotNull(newObject);
  if (properties == null)   properties=new HashMap();
  boolean defineDefaultTableSQL=properties.get("String_Node_Str") != null;
  boolean doValidate=properties.get("String_Node_Str") != null;
  if (newObject instanceof EObject) {
    EObject newTarget=(EObject)newObject;
    if (TransformationHelper.isVirtual(newTarget)) {
      MetamodelAspect aspect=AspectManager.getSqlAspect(newTarget);
      if (aspect != null && aspect instanceof SqlTableAspect) {
        SqlTableAspect tableAspect=(SqlTableAspect)aspect;
        if (!TransformationHelper.hasSqlTransformationMappingRoot(newTarget)) {
          EObject newRoot=ModelResourceContainerFactory.createNewSqlTransformationMappingRoot(newTarget,false,this);
          ModelResourceContainerFactory.addMappingHelper(newRoot);
          if (isMapValueTrue(VIRTUAL_TABLE_CLEAR_SUPPORTS_UPDATE,properties,true)) {
            tableAspect.setSupportsUpdate(newTarget,false);
          }
          if (defineDefaultTableSQL) {
            EObject tRoot=TransformationHelper.getMappingRoot(newTarget);
            List columns=tableAspect.getColumns(newTarget);
            int count=0;
            StringBuilder sb=new StringBuilder();
            if (!columns.isEmpty()) {
              sb.append("String_Node_Str");
              for (              Object col : columns) {
                String colName=ModelerCore.getModelEditor().getName((EObject)col);
                if (count > 0)                 sb.append(',');
                String seg="String_Node_Str" + colName;
                sb.append(seg);
                count++;
              }
              TransformationHelper.setSelectSqlString(tRoot,sb.toString(),false,this);
              TransformationMappingHelper.reconcileMappingsOnSqlChange(tRoot,null);
              TransformationMappingHelper.reconcileTargetAttributes(tRoot,null);
            }
            if (doValidate) {
              QueryValidator validator=new TransformationValidator((SqlTransformationMappingRoot)tRoot);
              validator.validateSql(sb.toString(),QueryValidator.SELECT_TRNS,true);
            }
          }
          return true;
        }
 else         if (defineDefaultTableSQL) {
          EObject tRoot=TransformationHelper.getMappingRoot(newTarget);
          List columns=tableAspect.getColumns(newTarget);
          int count=0;
          StringBuilder sb=new StringBuilder();
          if (!columns.isEmpty()) {
            sb.append("String_Node_Str");
            for (            Object col : columns) {
              String colName=ModelerCore.getModelEditor().getName((EObject)col);
              if (count > 0)               sb.append(',');
              String seg="String_Node_Str" + colName;
              sb.append(seg);
              count++;
            }
            TransformationHelper.setSelectSqlString(tRoot,sb.toString(),false,this);
            TransformationMappingHelper.reconcileMappingsOnSqlChange(tRoot,null);
            TransformationMappingHelper.reconcileTargetAttributes(tRoot,null);
          }
          if (doValidate) {
            QueryValidator validator=new TransformationValidator((SqlTransformationMappingRoot)tRoot);
            validator.validateSql(sb.toString(),QueryValidator.SELECT_TRNS,true);
          }
        }
      }
 else       if (TransformationHelper.isSqlProcedure(newTarget) && !TransformationHelper.isOperation(newTarget)) {
        if (!TransformationHelper.hasSqlTransformationMappingRoot(newTarget)) {
          EObject newRoot=ModelResourceContainerFactory.createNewSqlTransformationMappingRoot(newTarget,false,this);
          ModelResourceContainerFactory.addMappingHelper(newRoot);
        }
        if (defineDefaultTableSQL) {
          EObject tRoot=TransformationHelper.getMappingRoot(newTarget);
          TransformationHelper.setSelectSqlString(tRoot,VIRTUAL_PROCEDURE_TEMPLATE_SQL,false,this);
        }
        return true;
      }
    }
  }
  return false;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override public boolean helpCreate(Object newObject,Map properties,List<EObject> references){
  CoreArgCheck.isNotNull(newObject);
  if (properties == null)   properties=new HashMap();
  boolean defineDefaultTableSQL=properties.get(CREATE_OBJECT_GENERATE_DEFAULT_SQL_PROPERTY) != null;
  boolean doValidate=properties.get(CREATE_OBJECT_VALIDATE_PROPERTY) != null;
  String providedSQL=(String)properties.get(CREATE_OBJECT_PROVIDED_SQL_PROPERTY);
  if (!(newObject instanceof EObject))   return false;
  EObject newTarget=(EObject)newObject;
  if (!TransformationHelper.isVirtual(newTarget))   return false;
  MetamodelAspect aspect=AspectManager.getSqlAspect(newTarget);
  if (aspect != null && aspect instanceof SqlTableAspect) {
    SqlTableAspect tableAspect=(SqlTableAspect)aspect;
    if (!TransformationHelper.hasSqlTransformationMappingRoot(newTarget)) {
      EObject newRoot=ModelResourceContainerFactory.createNewSqlTransformationMappingRoot(newTarget,false,this);
      ModelResourceContainerFactory.addMappingHelper(newRoot);
      if (isMapValueTrue(VIRTUAL_TABLE_CLEAR_SUPPORTS_UPDATE,properties,true)) {
        tableAspect.setSupportsUpdate(newTarget,false);
      }
    }
    EObject tRoot=TransformationHelper.getMappingRoot(newTarget);
    String selectSql=TransformationHelper.getSelectSqlString(tRoot);
    if (selectSql != null)     return true;
    if (defineDefaultTableSQL)     selectSql=generateDefaultSQL(newTarget,tableAspect);
 else     if (providedSQL != null) {
      selectSql=providedSQL;
    }
    if (selectSql == null)     return false;
    TransformationHelper.setSelectSqlString(tRoot,selectSql,false,this);
    TransformationMappingHelper.reconcileMappingsOnSqlChange(tRoot,null);
    TransformationMappingHelper.reconcileTargetAttributes(tRoot,null);
    if (doValidate) {
      QueryValidator validator=new TransformationValidator((SqlTransformationMappingRoot)tRoot);
      validator.validateSql(selectSql,QueryValidator.SELECT_TRNS,true);
    }
    return true;
  }
 else   if (TransformationHelper.isSqlProcedure(newTarget) && !TransformationHelper.isOperation(newTarget)) {
    if (!TransformationHelper.hasSqlTransformationMappingRoot(newTarget)) {
      EObject newRoot=ModelResourceContainerFactory.createNewSqlTransformationMappingRoot(newTarget,false,this);
      ModelResourceContainerFactory.addMappingHelper(newRoot);
    }
    EObject tRoot=TransformationHelper.getMappingRoot(newTarget);
    String selectSql=TransformationHelper.getSelectSqlString(tRoot);
    if (selectSql != null)     return true;
    if (defineDefaultTableSQL)     selectSql=VIRTUAL_PROCEDURE_TEMPLATE_SQL;
 else     if (providedSQL != null) {
      selectSql=providedSQL;
    }
    if (selectSql == null)     return false;
    TransformationHelper.setSelectSqlString(tRoot,selectSql,false,this);
    return true;
  }
  return false;
}