24 */ |
24 */ |
25 |
25 |
26 package de.uapcore.lightpit.dao |
26 package de.uapcore.lightpit.dao |
27 |
27 |
28 import de.uapcore.lightpit.entities.* |
28 import de.uapcore.lightpit.entities.* |
|
29 import de.uapcore.lightpit.types.IssueHistoryType |
29 import de.uapcore.lightpit.types.WebColor |
30 import de.uapcore.lightpit.types.WebColor |
30 import de.uapcore.lightpit.util.* |
31 import de.uapcore.lightpit.util.* |
31 import de.uapcore.lightpit.viewmodel.ComponentSummary |
32 import de.uapcore.lightpit.viewmodel.ComponentSummary |
32 import de.uapcore.lightpit.viewmodel.IssueSummary |
33 import de.uapcore.lightpit.viewmodel.IssueSummary |
33 import de.uapcore.lightpit.viewmodel.VersionSummary |
34 import de.uapcore.lightpit.viewmodel.VersionSummary |
563 |
564 |
564 override fun insertIssue(issue: Issue): Int { |
565 override fun insertIssue(issue: Issue): Int { |
565 val id = withStatement( |
566 val id = withStatement( |
566 """ |
567 """ |
567 insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project) |
568 insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project) |
568 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?) |
569 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?) |
569 returning issueid |
570 returning issueid |
570 """.trimIndent() |
571 """.trimIndent() |
571 ) { |
572 ) { |
572 val col = setIssue(1, issue) |
573 val col = setIssue(1, issue) |
573 setInt(col, issue.project.id) |
574 setInt(col, issue.project.id) |
589 setInt(col, issue.id) |
590 setInt(col, issue.id) |
590 executeUpdate() |
591 executeUpdate() |
591 } |
592 } |
592 } |
593 } |
593 |
594 |
|
595 override fun insertHistoryEvent(issue: Issue, newId: Int) { |
|
596 val type = if (newId > 0) IssueHistoryType.New else IssueHistoryType.Update |
|
597 val issueid = if (newId > 0) newId else issue.id |
|
598 |
|
599 val eventid = |
|
600 withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") { |
|
601 setInt(1, issueid) |
|
602 setEnum(2, type) |
|
603 querySingle { it.getInt(1) }!! |
|
604 } |
|
605 withStatement( |
|
606 """ |
|
607 insert into lpit_issue_history_data (component, status, category, subject, description, assignee, eta, affected, resolved, eventid) |
|
608 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?) |
|
609 """.trimIndent() |
|
610 ) { |
|
611 setStringOrNull(1, issue.component?.name) |
|
612 setEnum(2, issue.status) |
|
613 setEnum(3, issue.category) |
|
614 setString(4, issue.subject) |
|
615 setStringOrNull(5, issue.description) |
|
616 setStringOrNull(6, issue.assignee?.shortDisplayname) |
|
617 setDateOrNull(7, issue.eta) |
|
618 setStringOrNull(8, issue.affected?.name) |
|
619 setStringOrNull(9, issue.resolved?.name) |
|
620 setInt(10, eventid) |
|
621 executeUpdate() |
|
622 } |
|
623 } |
|
624 |
594 //</editor-fold> |
625 //</editor-fold> |
595 |
626 |
596 //<editor-fold desc="IssueComment"> |
627 //<editor-fold desc="IssueComment"> |
597 |
628 |
598 private fun ResultSet.extractIssueComment() = |
629 private fun ResultSet.extractIssueComment() = |
614 withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where commentid = ?") { |
645 withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where commentid = ?") { |
615 setInt(1, id) |
646 setInt(1, id) |
616 querySingle { it.extractIssueComment() } |
647 querySingle { it.extractIssueComment() } |
617 } |
648 } |
618 |
649 |
619 override fun insertComment(issueComment: IssueComment) { |
650 override fun insertComment(issueComment: IssueComment): Int = |
620 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
651 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
621 withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?)") { |
652 withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?) returning commentid") { |
622 with(issueComment) { |
653 with(issueComment) { |
623 updateIssueDate.setInt(1, issueid) |
654 updateIssueDate.setInt(1, issueid) |
624 setInt(1, issueid) |
655 setInt(1, issueid) |
625 setStringSafe(2, comment) |
656 setStringSafe(2, comment) |
626 setIntOrNull(3, author?.id) |
657 setIntOrNull(3, author?.id) |
627 } |
658 } |
628 executeUpdate() |
659 val commentid = querySingle { it.getInt(1) }!! |
629 updateIssueDate.executeUpdate() |
660 updateIssueDate.executeUpdate() |
630 } |
661 commentid |
631 } |
662 } |
632 } |
663 } |
633 |
664 |
634 override fun updateComment(issueComment: IssueComment) { |
665 override fun updateComment(issueComment: IssueComment) { |
635 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
666 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
636 withStatement("update lpit_issue_comment set comment = ?, updatecount = updatecount + 1, updated = now() where commentid = ?") { |
667 withStatement("update lpit_issue_comment set comment = ?, updatecount = updatecount + 1, updated = now() where commentid = ?") { |
637 with(issueComment) { |
668 with(issueComment) { |
642 executeUpdate() |
673 executeUpdate() |
643 updateIssueDate.executeUpdate() |
674 updateIssueDate.executeUpdate() |
644 } |
675 } |
645 } |
676 } |
646 } |
677 } |
|
678 |
|
679 |
|
680 override fun insertHistoryEvent(issueComment: IssueComment, newId: Int) { |
|
681 val type = if (newId > 0) IssueHistoryType.NewComment else IssueHistoryType.UpdateComment |
|
682 val commentid = if (newId > 0) newId else issueComment.id |
|
683 |
|
684 val eventid = |
|
685 withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") { |
|
686 setInt(1, issueComment.issueid) |
|
687 setEnum(2, type) |
|
688 querySingle { it.getInt(1) }!! |
|
689 } |
|
690 withStatement("insert into lpit_issue_comment_history (commentid, eventid, comment) values (?,?,?)") { |
|
691 setInt(1, commentid) |
|
692 setInt(2, eventid) |
|
693 setString(3, issueComment.comment) |
|
694 executeUpdate() |
|
695 } |
|
696 } |
|
697 |
647 //</editor-fold> |
698 //</editor-fold> |
648 } |
699 } |