Program: 124033
Project: 124033
Buggy source:
private boolean checkItem(ItemRecord itemRecord,boolean overwrite){
  boolean result=false;
  try {
    Item item=itemRecord.getItem();
    if (item instanceof TDQItem) {
      return false;
    }
    ERepositoryObjectType itemType=ERepositoryObjectType.getItemType(item);
    cache.initialize(itemType);
    boolean isAllowMultipleName=(itemType == ERepositoryObjectType.SQLPATTERNS || itemType == ERepositoryObjectType.METADATA_FILE_XML);
    String itemPath=null;
    if (item.getState() != null) {
      itemPath=item.getState().getPath();
    }
    boolean nameAvailable=true;
    IRepositoryViewObject itemWithSameId=null;
    IRepositoryViewObject itemWithSameName=null;
    for (    IRepositoryViewObject current : cache.getItemsFromRepository().get(itemType)) {
      if (itemRecord.getProperty().getLabel().equalsIgnoreCase(current.getLabel()) && itemRecord.getProperty().getId() != current.getId()) {
        if (!isAllowMultipleName || current.getPath().equals(itemPath)) {
          nameAvailable=false;
        }
        if (!nameAvailable) {
          itemWithSameName=current;
        }
      }
      if (itemRecord.getProperty().getId().equalsIgnoreCase(current.getId())) {
        itemWithSameId=current;
      }
    }
    itemRecord.setExistingItemWithSameId(itemWithSameId);
    boolean idAvailable=itemWithSameId == null;
    boolean isSystem=false;
    if (item.eClass().equals(PropertiesPackage.eINSTANCE.getRoutineItem())) {
      RoutineItem routineItem=(RoutineItem)item;
      if (item instanceof RoutineItem) {
        RoutineItem rItem=(RoutineItem)item;
        Set<String> set=routineExtModulesMap.get(rItem.getProperty().getId());
        if (set == null) {
          set=new HashSet<String>();
          routineExtModulesMap.put(rItem.getProperty().getId(),set);
        }
        for (        IMPORTType type : (List<IMPORTType>)rItem.getImports()) {
          set.add(type.getMODULE());
        }
      }
      if (routineItem.isBuiltIn()) {
        isSystem=true;
      }
    }
    if (item.eClass().equals(PropertiesPackage.eINSTANCE.getSQLPatternItem())) {
      SQLPatternItem sqlPatternItem=(SQLPatternItem)item;
      if (sqlPatternItem.isSystem()) {
        isSystem=true;
      }
    }
    if (isSystem) {
      itemRecord.addError(Messages.getString("String_Node_Str"));
      return result;
    }
    if (nameAvailable) {
      if (idAvailable) {
        if (!isSystem) {
          result=true;
        }
      }
 else {
        itemRecord.setState(State.ID_EXISTED);
        result=true;
      }
    }
 else {
      if (idAvailable) {
        itemRecord.setState(State.NAME_EXISTED);
        if (!isSystem && overwrite) {
          itemRecord.setExistingItemWithSameId(itemWithSameName);
          result=true;
        }
      }
 else {
        itemRecord.setState(State.NAME_AND_ID_EXISTED);
        if (overwrite) {
          result=true;
        }
        if (!isSystem && overwrite && !itemWithSameName.getProperty().getLabel().equals(itemWithSameId.getProperty().getLabel())) {
          itemRecord.setExistingItemWithSameId(itemWithSameName);
          result=true;
        }
      }
      if (!result && !isSystem) {
        itemRecord.addError(Messages.getString("String_Node_Str"));
      }
    }
    if (result && overwrite && itemRecord.getState() == State.NAME_AND_ID_EXISTED) {
      if (checkIfLocked(itemRecord)) {
        itemRecord.addError(Messages.getString("String_Node_Str"));
        result=false;
      }
    }
  }
 catch (  Exception e) {
    log.error("String_Node_Str" + itemRecord.getPath(),e);
  }
  return result;
}

Fixed version (ground truth):
private boolean checkItem(ItemRecord itemRecord,boolean overwrite){
  boolean result=false;
  try {
    Item item=itemRecord.getItem();
    if (item instanceof TDQItem) {
      return false;
    }
    ERepositoryObjectType itemType=ERepositoryObjectType.getItemType(item);
    cache.initialize(itemType);
    boolean isAllowMultipleName=(itemType == ERepositoryObjectType.SQLPATTERNS || itemType == ERepositoryObjectType.METADATA_FILE_XML);
    String itemPath=null;
    if (item.getState() != null) {
      itemPath=item.getState().getPath();
    }
    boolean nameAvailable=true;
    IRepositoryViewObject itemWithSameId=null;
    IRepositoryViewObject itemWithSameName=null;
    for (    IRepositoryViewObject current : cache.getItemsFromRepository().get(itemType)) {
      if (itemRecord.getProperty().getLabel().equalsIgnoreCase(current.getLabel()) && itemRecord.getProperty().getId() != current.getId()) {
        if (!isAllowMultipleName || current.getPath().equals(itemPath)) {
          nameAvailable=false;
        }
        if (!nameAvailable) {
          itemWithSameName=current;
        }
      }
      if (itemRecord.getProperty().getId().equalsIgnoreCase(current.getId())) {
        itemWithSameId=current;
      }
    }
    itemRecord.setExistingItemWithSameId(itemWithSameId);
    boolean idAvailable=itemWithSameId == null;
    boolean isSystem=false;
    if (item.eClass().equals(PropertiesPackage.eINSTANCE.getRoutineItem())) {
      RoutineItem routineItem=(RoutineItem)item;
      if (item instanceof RoutineItem) {
        RoutineItem rItem=(RoutineItem)item;
        Set<String> set=routineExtModulesMap.get(rItem.getProperty().getId());
        if (set == null) {
          set=new HashSet<String>();
          routineExtModulesMap.put(rItem.getProperty().getId(),set);
        }
        for (        IMPORTType type : (List<IMPORTType>)rItem.getImports()) {
          set.add(type.getMODULE());
        }
      }
      if (routineItem.isBuiltIn()) {
        isSystem=true;
      }
    }
    if (item.eClass().equals(PropertiesPackage.eINSTANCE.getSQLPatternItem())) {
      SQLPatternItem sqlPatternItem=(SQLPatternItem)item;
      if (sqlPatternItem.isSystem()) {
        isSystem=true;
      }
    }
    if (isSystem) {
      itemRecord.addError(Messages.getString("String_Node_Str"));
      return result;
    }
    if (nameAvailable) {
      if (idAvailable) {
        if (!isSystem) {
          result=true;
        }
      }
 else {
        itemRecord.setState(State.ID_EXISTED);
        result=true;
      }
    }
 else {
      if (idAvailable) {
        itemRecord.setState(State.NAME_EXISTED);
        if (!isSystem && overwrite) {
          itemRecord.setExistingItemWithSameId(itemWithSameName);
          result=true;
        }
      }
 else {
        itemRecord.setState(State.NAME_EXISTED);
        if (overwrite) {
          result=true;
        }
        if (!isSystem && overwrite && !itemWithSameName.getProperty().getLabel().equals(itemWithSameId.getProperty().getLabel())) {
          itemRecord.setExistingItemWithSameId(itemWithSameName);
          itemRecord.setState(State.NAME_AND_ID_EXISTED);
          result=true;
        }
      }
      if (!result && !isSystem) {
        itemRecord.addError(Messages.getString("String_Node_Str"));
      }
    }
    if (result && overwrite && itemRecord.getState() == State.NAME_EXISTED) {
      if (checkIfLocked(itemRecord)) {
        itemRecord.addError(Messages.getString("String_Node_Str"));
        result=false;
      }
    }
  }
 catch (  Exception e) {
    log.error("String_Node_Str" + itemRecord.getPath(),e);
  }
  return result;
}