private Label getLabel(ResultSet rs) throws SQLException { String typeName = rs.getString("type"); Label.Type type = null; if (typeName != null) { type = Label.Type.valueOf(typeName); } Label label = new Label(rs.getString("label"), type, rs.getInt("color")); label.setId(rs.getLong("id")); return label; }
public boolean isUnread() { for (Label label : labels) { if (label.getType() == Label.Type.UNREAD) { return true; } } return false; }
private void updateLabels(Connection connection, Plaintext message) throws SQLException { // remove existing labels try (Statement stmt = connection.createStatement()) { stmt.executeUpdate("DELETE FROM Message_Label WHERE message_id=" + message.getId()); } // save new labels try (PreparedStatement ps = connection.prepareStatement("INSERT INTO Message_Label VALUES (" + message.getId() + ", ?)")) { for (Label label : message.getLabels()) { ps.setLong(1, (Long) label.getId()); ps.executeUpdate(); } } }
@Override public List<Plaintext> findMessages(Label label) { if (label == null) { return find("id NOT IN (SELECT message_id FROM Message_Label)"); } else { return find("id IN (SELECT message_id FROM Message_Label WHERE label_id=" + label.getId() + ")"); } }
@Override public int countUnread(Label label) { String where; if (label == null) { where = ""; } else { where = "id IN (SELECT message_id FROM Message_Label WHERE label_id=" + label.getId() + ") AND "; } where += "id IN (SELECT message_id FROM Message_Label WHERE label_id IN (" + "SELECT id FROM Label WHERE type = '" + Label.Type.UNREAD.name() + "'))"; try ( Connection connection = config.getConnection(); Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT count(*) FROM Message WHERE " + where) ) { if (rs.next()) { return rs.getInt(1); } } catch (SQLException e) { LOG.error(e.getMessage(), e); } return 0; }
public void removeLabel(Label.Type type) { Iterator<Label> iterator = labels.iterator(); while (iterator.hasNext()) { Label label = iterator.next(); if (label.getType() == type) { iterator.remove(); } } }