src/main/java/de/uapcore/lightpit/dao/postgres/PGIssueDao.java

changeset 124
ed2e7aef2a3e
parent 121
428dca747d6b
child 128
947d0f6a6a83
     1.1 --- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGIssueDao.java	Fri Oct 09 19:06:51 2020 +0200
     1.2 +++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGIssueDao.java	Fri Oct 09 19:07:05 2020 +0200
     1.3 @@ -47,6 +47,7 @@
     1.4      private final PreparedStatement affectedVersions, resolvedVersions;
     1.5      private final PreparedStatement clearAffected, clearResolved;
     1.6      private final PreparedStatement insertAffected, insertResolved;
     1.7 +    private final PreparedStatement insertComment, updateComment, listComments;
     1.8  
     1.9      public PGIssueDao(Connection connection) throws SQLException {
    1.10          list = connection.prepareStatement(
    1.11 @@ -107,9 +108,19 @@
    1.12          );
    1.13          clearResolved = connection.prepareStatement("delete from lpit_issue_resolved_version where issueid = ?");
    1.14          insertResolved = connection.prepareStatement("insert into lpit_issue_resolved_version (issueid, versionid) values (?,?)");
    1.15 +
    1.16 +        insertComment = connection.prepareStatement(
    1.17 +                "insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?)"
    1.18 +        );
    1.19 +        updateComment = connection.prepareStatement(
    1.20 +                "update lpit_issue_comment set comment = ?, updated = now(), updatecount = updatecount+1 where commentid = ?"
    1.21 +        );
    1.22 +        listComments = connection.prepareStatement(
    1.23 +                "select * from lpit_issue_comment left join lpit_user using (userid) where issueid = ? order by created"
    1.24 +        );
    1.25      }
    1.26  
    1.27 -    private User obtainAssignee(ResultSet result) throws SQLException {
    1.28 +    private User obtainUser(ResultSet result) throws SQLException {
    1.29          final int id = result.getInt("userid");
    1.30          if (id != 0) {
    1.31              final var user = new User(id);
    1.32 @@ -132,7 +143,7 @@
    1.33          issue.setCategory(IssueCategory.valueOf(result.getString("category")));
    1.34          issue.setSubject(result.getString("subject"));
    1.35          issue.setDescription(result.getString("description"));
    1.36 -        issue.setAssignee(obtainAssignee(result));
    1.37 +        issue.setAssignee(obtainUser(result));
    1.38          issue.setCreated(result.getTimestamp("created"));
    1.39          issue.setUpdated(result.getTimestamp("updated"));
    1.40          issue.setEta(result.getDate("eta"));
    1.41 @@ -252,4 +263,38 @@
    1.42          issue.setAffectedVersions(listVersions(affectedVersions, issue));
    1.43          issue.setResolvedVersions(listVersions(resolvedVersions, issue));
    1.44      }
    1.45 +
    1.46 +    @Override
    1.47 +    public List<IssueComment> listComments(Issue issue) throws SQLException {
    1.48 +        listComments.setInt(1, issue.getId());
    1.49 +        List<IssueComment> comments = new ArrayList<>();
    1.50 +        try (var result = listComments.executeQuery()) {
    1.51 +            while (result.next()) {
    1.52 +                final var comment = new IssueComment(result.getInt("commentid"), issue);
    1.53 +                comment.setCreated(result.getTimestamp("created"));
    1.54 +                comment.setUpdated(result.getTimestamp("updated"));
    1.55 +                comment.setUpdateCount(result.getInt("updatecount"));
    1.56 +                comment.setComment(result.getString("comment"));
    1.57 +                comment.setAuthor(obtainUser(result));
    1.58 +                comments.add(comment);
    1.59 +            }
    1.60 +        }
    1.61 +        return comments;
    1.62 +    }
    1.63 +
    1.64 +    @Override
    1.65 +    public void saveComment(IssueComment comment) throws SQLException {
    1.66 +        Objects.requireNonNull(comment.getComment());
    1.67 +        Objects.requireNonNull(comment.getIssue());
    1.68 +        if (comment.getId() >= 0) {
    1.69 +            updateComment.setString(1, comment.getComment());
    1.70 +            updateComment.setInt(2, comment.getId());
    1.71 +            updateComment.execute();
    1.72 +        } else {
    1.73 +            insertComment.setInt(1, comment.getIssue().getId());
    1.74 +            insertComment.setString(2, comment.getComment());
    1.75 +            setForeignKeyOrNull(insertComment, 3, comment.getAuthor(), User::getId);
    1.76 +            insertComment.execute();
    1.77 +        }
    1.78 +    }
    1.79  }

mercurial