Program: 98900
Project: 98900
Buggy source:
/** 
 * Loads TravelPorts out of a file into the passed Hashtable.
 * @param server  the server used for searching the worlds.
 * @param cvsFile the file to load.
 * @param ports   the Hashtable used to store the loaded TravelPorts.
 * @throws IOException thrown when there are problems in reading the file.
 */
static void loadPorts(Server server,Hashtable<Integer,TravelPort> ports,File cvsFile) throws IOException {
  ports.clear();
  Scanner scanner=new Scanner(new FileReader(cvsFile));
  while (scanner.hasNextLine()) {
    String line=scanner.nextLine();
    try {
      String[] lineParts=line.split("String_Node_Str");
      if (lineParts.length == CSV_COLUMNS) {
        TravelPort port=new TravelPort(new Integer(lineParts[INDEX_ID]));
        port.setName(lineParts[INDEX_NAME]);
        if (!"String_Node_Str".equals(lineParts[INDEX_TARGET])) {
          port.setTargetId(new Integer(lineParts[INDEX_TARGET]));
        }
        if (!"String_Node_Str".equals(lineParts[INDEX_PASSWORD])) {
          port.setPassword(lineParts[INDEX_PASSWORD]);
        }
        if (!"String_Node_Str".equals(lineParts[INDEX_SPEAKER])) {
          port.setSpeaker(new Speaker(lineParts[INDEX_SPEAKER]));
        }
        port.setPrice(Double.parseDouble(lineParts[INDEX_PRICE]));
        World world=server.getWorld(lineParts[INDEX_WORLD]);
        Double edge1X=Double.parseDouble(lineParts[INDEX_EDGE1_X]);
        Double edge1Y=Double.parseDouble(lineParts[INDEX_EDGE1_Y]);
        Double edge1Z=Double.parseDouble(lineParts[INDEX_EDGE1_Z]);
        Location edge1=new Location(world,edge1X,edge1Y,edge1Z);
        port.setEdge1(edge1);
        Double edge2X=Double.parseDouble(lineParts[INDEX_EDGE2_X]);
        Double edge2Y=Double.parseDouble(lineParts[INDEX_EDGE2_Y]);
        Double edge2Z=Double.parseDouble(lineParts[INDEX_EDGE2_Z]);
        Location edge2=new Location(world,edge2X,edge2Y,edge2Z);
        port.setEdge2(edge2);
      }
 else {
        server.getLogger().warning(String.format("String_Node_Str",line));
      }
    }
 catch (    NumberFormatException e) {
      server.getLogger().warning(String.format("String_Node_Str",line));
    }
  }
  scanner.close();
  server.getLogger().info(String.format("String_Node_Str",ports.size()));
}

Fixed version (ground truth):
/** 
 * Loads TravelPorts out of a file into the passed Hashtable.
 * @param server  the server used for searching the worlds.
 * @param csvFile the file to load.
 * @param ports   the Hashtable used to store the loaded TravelPorts.
 * @throws IOException thrown when there are problems in reading the file.
 */
static void loadPorts(Server server,Hashtable<Integer,TravelPort> ports,File csvFile) throws IOException {
  ports.clear();
  Scanner scanner=new Scanner(new FileReader(csvFile));
  while (scanner.hasNextLine()) {
    String line=scanner.nextLine();
    try {
      String[] lineParts=line.split("String_Node_Str");
      if (lineParts.length == CSV_COLUMNS) {
        TravelPort port=new TravelPort(new Integer(lineParts[INDEX_ID]));
        port.setName(lineParts[INDEX_NAME]);
        if (!"String_Node_Str".equals(lineParts[INDEX_TARGET])) {
          port.setTargetId(new Integer(lineParts[INDEX_TARGET]));
        }
        if (!"String_Node_Str".equals(lineParts[INDEX_PASSWORD])) {
          port.setPassword(lineParts[INDEX_PASSWORD]);
        }
        if (!"String_Node_Str".equals(lineParts[INDEX_SPEAKER])) {
          port.setSpeaker(new Speaker(lineParts[INDEX_SPEAKER]));
        }
        port.setPrice(Double.parseDouble(lineParts[INDEX_PRICE]));
        World world=server.getWorld(lineParts[INDEX_WORLD]);
        Double edge1X=Double.parseDouble(lineParts[INDEX_EDGE1_X]);
        Double edge1Y=Double.parseDouble(lineParts[INDEX_EDGE1_Y]);
        Double edge1Z=Double.parseDouble(lineParts[INDEX_EDGE1_Z]);
        Location edge1=new Location(world,edge1X,edge1Y,edge1Z);
        port.setEdge1(edge1);
        Double edge2X=Double.parseDouble(lineParts[INDEX_EDGE2_X]);
        Double edge2Y=Double.parseDouble(lineParts[INDEX_EDGE2_Y]);
        Double edge2Z=Double.parseDouble(lineParts[INDEX_EDGE2_Z]);
        Location edge2=new Location(world,edge2X,edge2Y,edge2Z);
        port.setEdge2(edge2);
        ports.put(port.getId(),port);
      }
 else {
        server.getLogger().warning(String.format("String_Node_Str",line));
      }
    }
 catch (    NumberFormatException e) {
      server.getLogger().warning(String.format("String_Node_Str",line));
    }
  }
  scanner.close();
  server.getLogger().info(String.format("String_Node_Str",ports.size()));
}