Program: 47034
Project: 47034
Buggy source:
/** 
 * Initialized the database for use, performing checks and creating a new database if necessary.
 * @param force whether to recreate the database even though it isn'tnecessary.
 */
@SuppressFBWarnings("String_Node_Str") public synchronized void init(boolean force){
  dbCount=-1;
  int currentVersion=-1;
  Connection conn=null;
  ResultSet rs=null;
  Statement stmt=null;
  boolean trace=LOGGER.isTraceEnabled();
  try {
    conn=getConnection();
  }
 catch (  SQLException se) {
    final File dbFile=new File(dbDir + File.separator + dbName+ "String_Node_Str");
    final File dbDirectory=new File(dbDir);
    if (dbFile.exists() || (se.getErrorCode() == 90048)) {
      FileUtils.deleteQuietly(dbDirectory);
      if (!dbDirectory.exists()) {
        LOGGER.info("String_Node_Str");
      }
 else {
        if (!net.pms.PMS.isHeadless()) {
          JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor((Component)PMS.get().getFrame()),String.format(Messages.getString("String_Node_Str"),dbDir),Messages.getString("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
        }
        LOGGER.error("String_Node_Str" + dbDir + "String_Node_Str");
        PMS.get().getRootFolder(null).stopScan();
        configuration.setUseCache(false);
        return;
      }
    }
 else {
      LOGGER.error("String_Node_Str" + se.getMessage());
      LOGGER.trace("String_Node_Str",se);
      RootFolder rootFolder=PMS.get().getRootFolder(null);
      if (rootFolder != null) {
        rootFolder.stopScan();
      }
      configuration.setUseCache(false);
      return;
    }
  }
 finally {
    close(conn);
  }
  try {
    conn=getConnection();
    stmt=conn.createStatement();
    rs=stmt.executeQuery("String_Node_Str");
    if (rs.next()) {
      dbCount=rs.getInt(1);
    }
    rs.close();
    stmt.close();
    stmt=conn.createStatement();
    rs=stmt.executeQuery("String_Node_Str");
    if (rs.next()) {
      currentVersion=Integer.parseInt(rs.getString(1));
    }
  }
 catch (  SQLException se) {
    if (se.getErrorCode() != 42102) {
      LOGGER.error(null,se);
    }
  }
 finally {
    close(rs);
    close(stmt);
    close(conn);
  }
  boolean forceReInit=false;
  if (latestVersion != currentVersion) {
    try {
      conn=getConnection();
      for (int version=currentVersion; version < latestVersion; version++) {
        LOGGER.trace("String_Node_Str","String_Node_Str",version,version + 1);
switch (version) {
case 11:
          try (Statement statement=conn.createStatement()){
            statement.execute("String_Node_Str");
          }
         version=12;
      break;
case 12:
    try (Statement statement=conn.createStatement()){
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
    }
   version=13;
break;
default :
forceReInit=true;
}
}
if (!forceReInit) {
try (Statement statement=conn.createStatement()){
statement.execute("String_Node_Str");
statement.execute("String_Node_Str");
statement.execute("String_Node_Str" + latestVersion + "String_Node_Str");
}
 }
}
 catch (SQLException se) {
LOGGER.error("String_Node_Str" + se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
 finally {
close(conn);
}
}
if (force || dbCount == -1 || forceReInit) {
LOGGER.debug("String_Node_Str");
try {
conn=getConnection();
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
}
 catch (SQLException se) {
if (se.getErrorCode() != 42102) {
LOGGER.error("String_Node_Str",se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
}
try {
StringBuilder sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_CODECV).append(')');
sb.append("String_Node_Str").append(SIZE_FRAMERATE).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_DVDISO).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_CONTAINER).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_VIDEOTRACK).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_AVC_LEVEL).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_CONTAINER).append(')');
sb.append("String_Node_Str").append(SIZE_MUXINGMODE).append(')');
sb.append("String_Node_Str").append(SIZE_FRAMERATE_MODE).append(')');
sb.append("String_Node_Str").append(SIZE_STEREOSCOPY).append(')');
sb.append("String_Node_Str").append(SIZE_MATRIX_COEFFICIENTS).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_IMDBID).append(')');
sb.append("String_Node_Str").append(SIZE_YEAR).append(')');
sb.append("String_Node_Str").append(SIZE_MOVIEORSHOWNAME).append(')');
sb.append("String_Node_Str").append(SIZE_MOVIEORSHOWNAME).append(')');
sb.append("String_Node_Str").append(SIZE_TVSEASON).append(')');
sb.append("String_Node_Str").append(SIZE_TVEPISODENUMBER).append(')');
sb.append("String_Node_Str").append(SIZE_TVEPISODENAME).append(')');
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_LANG).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_SAMPLEFREQ).append(')');
sb.append("String_Node_Str").append(SIZE_CODECA).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_ALBUM).append(')');
sb.append("String_Node_Str").append(SIZE_ARTIST).append(')');
sb.append("String_Node_Str").append(SIZE_SONGNAME).append(')');
sb.append("String_Node_Str").append(SIZE_GENRE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_MUXINGMODE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_LANG).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str" + latestVersion + "String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str");
String[] chars=Messages.getString("String_Node_Str").split("String_Node_Str");
for (int i=0; i < chars.length; i++) {
executeUpdate(conn,"String_Node_Str" + chars[i] + "String_Node_Str"+ chars[i]+ "String_Node_Str"+ (i + 2)+ "String_Node_Str");
}
LOGGER.debug("String_Node_Str");
}
 catch (SQLException se) {
LOGGER.error("String_Node_Str" + se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
 finally {
close(conn);
}
}
 else {
LOGGER.debug("String_Node_Str" + dbCount);
LOGGER.debug("String_Node_Str" + latestVersion);
}
}

Fixed version (ground truth):
/** 
 * Initialized the database for use, performing checks and creating a new database if necessary.
 * @param force whether to recreate the database even though it isn'tnecessary.
 */
@SuppressFBWarnings("String_Node_Str") public synchronized void init(boolean force){
  dbCount=-1;
  int currentVersion=-1;
  Connection conn=null;
  ResultSet rs=null;
  Statement stmt=null;
  boolean trace=LOGGER.isTraceEnabled();
  try {
    conn=getConnection();
  }
 catch (  SQLException se) {
    final File dbFile=new File(dbDir + File.separator + dbName+ "String_Node_Str");
    final File dbDirectory=new File(dbDir);
    if (dbFile.exists() || (se.getErrorCode() == 90048)) {
      FileUtils.deleteQuietly(dbDirectory);
      if (!dbDirectory.exists()) {
        LOGGER.info("String_Node_Str");
      }
 else {
        if (!net.pms.PMS.isHeadless()) {
          JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor((Component)PMS.get().getFrame()),String.format(Messages.getString("String_Node_Str"),dbDir),Messages.getString("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
        }
        LOGGER.error("String_Node_Str" + dbDir + "String_Node_Str");
        PMS.get().getRootFolder(null).stopScan();
        configuration.setUseCache(false);
        return;
      }
    }
 else {
      LOGGER.error("String_Node_Str" + se.getMessage());
      LOGGER.trace("String_Node_Str",se);
      RootFolder rootFolder=PMS.get().getRootFolder(null);
      if (rootFolder != null) {
        rootFolder.stopScan();
      }
      configuration.setUseCache(false);
      return;
    }
  }
 finally {
    close(conn);
  }
  try {
    conn=getConnection();
    stmt=conn.createStatement();
    rs=stmt.executeQuery("String_Node_Str");
    if (rs.next()) {
      dbCount=rs.getInt(1);
    }
    rs.close();
    stmt.close();
    stmt=conn.createStatement();
    rs=stmt.executeQuery("String_Node_Str");
    if (rs.next()) {
      currentVersion=Integer.parseInt(rs.getString(1));
    }
  }
 catch (  SQLException se) {
    if (se.getErrorCode() != 42102) {
      LOGGER.error(null,se);
    }
  }
 finally {
    close(rs);
    close(stmt);
    close(conn);
  }
  boolean forceReInit=false;
  if (currentVersion != -1 && latestVersion != currentVersion) {
    try {
      conn=getConnection();
      for (int version=currentVersion; version < latestVersion; version++) {
        LOGGER.trace("String_Node_Str","String_Node_Str",version,version + 1);
switch (version) {
case 11:
          try (Statement statement=conn.createStatement()){
            statement.execute("String_Node_Str");
          }
         version=12;
      break;
case 12:
    try (Statement statement=conn.createStatement()){
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
      statement.execute("String_Node_Str");
    }
   version=13;
break;
default :
forceReInit=true;
}
}
if (!forceReInit) {
try (Statement statement=conn.createStatement()){
statement.execute("String_Node_Str");
statement.execute("String_Node_Str");
statement.execute("String_Node_Str" + latestVersion + "String_Node_Str");
}
 }
}
 catch (SQLException se) {
LOGGER.error("String_Node_Str" + se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
 finally {
close(conn);
}
}
if (force || dbCount == -1 || forceReInit) {
LOGGER.debug("String_Node_Str");
try {
conn=getConnection();
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
}
 catch (SQLException se) {
if (se.getErrorCode() != 42102) {
LOGGER.error("String_Node_Str",se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
}
try {
StringBuilder sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_CODECV).append(')');
sb.append("String_Node_Str").append(SIZE_FRAMERATE).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_DVDISO).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_CONTAINER).append(')');
sb.append("String_Node_Str").append(SIZE_ASPECTRATIO_VIDEOTRACK).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_AVC_LEVEL).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_CONTAINER).append(')');
sb.append("String_Node_Str").append(SIZE_MUXINGMODE).append(')');
sb.append("String_Node_Str").append(SIZE_FRAMERATE_MODE).append(')');
sb.append("String_Node_Str").append(SIZE_STEREOSCOPY).append(')');
sb.append("String_Node_Str").append(SIZE_MATRIX_COEFFICIENTS).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_IMDBID).append(')');
sb.append("String_Node_Str").append(SIZE_YEAR).append(')');
sb.append("String_Node_Str").append(SIZE_MOVIEORSHOWNAME).append(')');
sb.append("String_Node_Str").append(SIZE_MOVIEORSHOWNAME).append(')');
sb.append("String_Node_Str").append(SIZE_TVSEASON).append(')');
sb.append("String_Node_Str").append(SIZE_TVEPISODENUMBER).append(')');
sb.append("String_Node_Str").append(SIZE_TVEPISODENAME).append(')');
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_LANG).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_SAMPLEFREQ).append(')');
sb.append("String_Node_Str").append(SIZE_CODECA).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_ALBUM).append(')');
sb.append("String_Node_Str").append(SIZE_ARTIST).append(')');
sb.append("String_Node_Str").append(SIZE_SONGNAME).append(')');
sb.append("String_Node_Str").append(SIZE_GENRE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_MUXINGMODE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
sb=new StringBuilder();
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str");
sb.append("String_Node_Str").append(SIZE_LANG).append(')');
sb.append("String_Node_Str").append(SIZE_TITLE).append(')');
sb.append("String_Node_Str");
sb.append("String_Node_Str");
if (trace) {
LOGGER.trace("String_Node_Str",sb.toString());
}
executeUpdate(conn,sb.toString());
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str" + latestVersion + "String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
LOGGER.trace("String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str");
executeUpdate(conn,"String_Node_Str");
String[] chars=Messages.getString("String_Node_Str").split("String_Node_Str");
for (int i=0; i < chars.length; i++) {
executeUpdate(conn,"String_Node_Str" + chars[i] + "String_Node_Str"+ chars[i]+ "String_Node_Str"+ (i + 2)+ "String_Node_Str");
}
LOGGER.debug("String_Node_Str");
}
 catch (SQLException se) {
LOGGER.error("String_Node_Str" + se.getMessage());
LOGGER.trace("String_Node_Str",se);
}
 finally {
close(conn);
}
}
 else {
LOGGER.debug("String_Node_Str" + dbCount);
LOGGER.debug("String_Node_Str" + latestVersion);
}
}