Java Library for PGN parser I would like to find a Java library that will allow me to read a PGN file that could contain several chess games, probably with comments inserted also. But, it won't be used to generate moves or play the moves in a board. I just want to read the pgn and get the header section and move section, and dump everything into a database.

Any light that will direct me to the right path is really appreciated. I just need the parser and segment the information from the pgn and then I will do the dumping into the database.

Thanks in advance for any help.
After reading a bunch of open source code, I just found out that most of them are relying on Chesspresso which is a solid Java Chess library that can handle move validation, PGN parser (what I was looking for), chessboard renderering, etc.

The code is well-documented and easy to understand. It took me around 30 minutes to read the code and start testing. Pretty happy with this library.

You can download the source code from sourceforge: Chesspresso Source Code

Sample code: (This is a fragment from Game class, I just need to add more detail for the header section and I will be ready to dump each pgn game into my database).

    public String getHeaderString(int line)
{
    if (line == 0) {
        StringBuffer sb = new StringBuffer();
        sb.append(getWhite());
        if (getWhiteElo() != 0) sb.append(" [").append(getWhiteElo()).append("]");
        sb.append(" - ").append(getBlack());
        if (getBlackElo() != 0) sb.append(" [").append(getBlackElo()).append("]");
        sb.append("  ").append(getResultStr()).append("  (").append(getNumOfMoves()).append(")");
        return sb.toString();
    } else if (line == 1) {
        StringBuffer sb = new StringBuffer();
        sb.append(getEvent()).append(", ").append(getSite()).append(", ").append(getDate());
        sb.append("  [").append(getRound()).append("]");
        return sb.toString();
    } else if (line == 2) {
        return getECO();
    } else {
        throw new RuntimeException("Only 3 header lines supported");
    }
}