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

changeset 138
e2aa673dd473
parent 135
bafc315294fd
child 150
822b7e3d064d
equal deleted inserted replaced
137:a7e543ab0c5f 138:e2aa673dd473
46 private final PreparedStatement clearAffected, clearResolved; 46 private final PreparedStatement clearAffected, clearResolved;
47 private final PreparedStatement insertAffected, insertResolved; 47 private final PreparedStatement insertAffected, insertResolved;
48 private final PreparedStatement insertComment, updateComment, listComments; 48 private final PreparedStatement insertComment, updateComment, listComments;
49 49
50 public PGIssueDao(Connection connection) throws SQLException { 50 public PGIssueDao(Connection connection) throws SQLException {
51 list = connection.prepareStatement( 51 final var query = "select issueid, i.project, p.name as projectname, p.node as projectnode, "+
52 "select issueid, i.project, p.name as projectname, component, c.name as componentname, " + 52 "component, c.name as componentname, c.node as componentnode, " +
53 "status, category, subject, i.description, " + 53 "status, category, subject, i.description, " +
54 "userid, username, givenname, lastname, mail, " + 54 "userid, username, givenname, lastname, mail, " +
55 "created, updated, eta " + 55 "created, updated, eta " +
56 "from lpit_issue i " + 56 "from lpit_issue i " +
57 "join lpit_project p on i.project = projectid " + 57 "join lpit_project p on i.project = projectid " +
58 "left join lpit_component c on component = c.id " + 58 "left join lpit_component c on component = c.id " +
59 "left join lpit_user on userid = assignee " + 59 "left join lpit_user on userid = assignee ";
60
61 list = connection.prepareStatement(query +
60 "where i.project = ? and coalesce(component, -1) = coalesce(?, component, -1)"); 62 "where i.project = ? and coalesce(component, -1) = coalesce(?, component, -1)");
61 63
62 listForVersion = connection.prepareStatement( 64 listForVersion = connection.prepareStatement(
63 "with issue_version as ( "+ 65 "with issue_version as ( "+
64 "select issueid, versionid from lpit_issue_affected_version union "+ 66 "select issueid, versionid from lpit_issue_affected_version union "+
65 "select issueid, versionid from lpit_issue_resolved_version) "+ 67 "select issueid, versionid from lpit_issue_resolved_version) "+
66 "select issueid, i.project, p.name as projectname, component, c.name as componentname, " + 68 query +
67 "status, category, subject, i.description, " +
68 "userid, username, givenname, lastname, mail, " +
69 "created, updated, eta " +
70 "from lpit_issue i " +
71 "join lpit_project p on i.project = projectid " +
72 "left join lpit_component c on component = c.id " +
73 "left join issue_version using (issueid) "+ 69 "left join issue_version using (issueid) "+
74 "left join lpit_user on userid = assignee " +
75 "where coalesce(versionid,-1) = ? and coalesce(component, -1) = coalesce(?, component, -1)" 70 "where coalesce(versionid,-1) = ? and coalesce(component, -1) = coalesce(?, component, -1)"
76 ); 71 );
77 72
78 find = connection.prepareStatement( 73 find = connection.prepareStatement(query + "where issueid = ? ");
79 "select issueid, i.project, p.name as projectname, component, c.name as componentname, " +
80 "status, category, subject, i.description, " +
81 "userid, username, givenname, lastname, mail, " +
82 "created, updated, eta " +
83 "from lpit_issue i " +
84 "join lpit_project p on i.project = projectid " +
85 "left join lpit_component c on component = c.id " +
86 "left join lpit_user on userid = assignee " +
87 "where issueid = ? ");
88 74
89 insert = connection.prepareStatement( 75 insert = connection.prepareStatement(
90 "insert into lpit_issue (project, component, status, category, subject, description, assignee, eta) " + 76 "insert into lpit_issue (project, component, status, category, subject, description, assignee, eta) " +
91 "values (?, ?, ?::issue_status, ?::issue_category, ?, ?, ?, ?) returning issueid" 77 "values (?, ?, ?::issue_status, ?::issue_category, ?, ?, ?, ?) returning issueid"
92 ); 78 );
126 } 112 }
127 113
128 private Issue mapColumns(ResultSet result) throws SQLException { 114 private Issue mapColumns(ResultSet result) throws SQLException {
129 final var project = new Project(result.getInt("project")); 115 final var project = new Project(result.getInt("project"));
130 project.setName(result.getString("projectname")); 116 project.setName(result.getString("projectname"));
117 project.setNode(result.getString("projectnode"));
131 var component = new Component(result.getInt("component")); 118 var component = new Component(result.getInt("component"));
132 if (result.wasNull()) { 119 if (result.wasNull()) {
133 component = null; 120 component = null;
134 } else { 121 } else {
135 component.setName(result.getString("componentname")); 122 component.setName(result.getString("componentname"));
123 component.setNode(result.getString("componentnode"));
136 } 124 }
137 final var issue = new Issue(result.getInt("issueid")); 125 final var issue = new Issue(result.getInt("issueid"));
138 issue.setProject(project); 126 issue.setProject(project);
139 issue.setComponent(component); 127 issue.setComponent(component);
140 issue.setStatus(IssueStatus.valueOf(result.getString("status"))); 128 issue.setStatus(IssueStatus.valueOf(result.getString("status")));

mercurial