@Override
    public void storePost(Post post) {
        ResultSet rs = null;
        int ID = post.getID();
        if (ID > 0) { // post esiste già nel DB => faccio l'update
            editPost(post);
        } else { // post non esiste nel DB => faccio l'insert
            try {
                // this.iPost = connection.prepareStatement("INSERT INTO post (title, text, date, adminID) VALUES (?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
                iPost.setString(1, post.getTitle());
                iPost.setString(2, post.getText());
                // System.currentTimeMillis() / 1000L <= per ottenere il TIMESTAMP corrente
                iPost.setDate(3, new java.sql.Date(System.currentTimeMillis() / 1000L));
                iPost.setInt(4, post.getAuthor().getID());
                if (iPost.executeUpdate() == 1) { // allora ha inserito 1 riga
                    rs = iPost.getGeneratedKeys(); // per ottenere le chiavi generate automaticamente
                    // che hanno l'auto increment
                    // restituisce un ResultSet contenente
                    // tutte le chiavi generate
                    if (rs.next()) { // se ha restituito la chiave
                        ID = rs.getInt(1);
                    }
                }
                if (ID > 0) { // ho eseguito il blocco di codice ID = rs.getInt(1);
                    post.copyFrom(getPost(ID)); // aggiorna il post a quello appena salvato
                }
                post.setDirty(false); // considera il post pulito
            } catch (SQLException ex) {
                Logger.getLogger(SitoDataLayerMysqlImpl.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                if (rs != null) {
                    try {
                        rs.close();
                    } catch (SQLException ex) {
                        Logger.getLogger(SitoDataLayerMysqlImpl.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    }