added tests, preparing submission confirmation
This commit is contained in:
@@ -3,6 +3,7 @@ package de.srsoftware.widerhall.data;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.xml.crypto.Data;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -63,19 +64,19 @@ public class MailingList {
|
||||
.append(SMTP_PASS).append(" ").append(VARCHAR).append(", ")
|
||||
.append(STATE).append(" ").append(INT)
|
||||
.append(");");
|
||||
Database.open().query(sql.toString()).run();
|
||||
Database.open().query(sql).run();
|
||||
}
|
||||
|
||||
public static void enable(String listEmail, boolean enable) throws SQLException {
|
||||
// https://stackoverflow.com/questions/16440831/bitwise-xor-in-sqlite-bitwise-not-not-working-as-i-expect
|
||||
String expression = enable ? "state = state | "+ENABLED : "state = (~(state & "+ENABLED+"))&(state|"+ENABLED+")";
|
||||
Database.open().query("UPDATE " + TABLE_NAME + " SET "+expression).where(EMAIL, listEmail).run();
|
||||
Database.open().update(TABLE_NAME,expression).where(EMAIL, listEmail).run();
|
||||
}
|
||||
|
||||
public static void hide(String listEmail, boolean hide) throws SQLException {
|
||||
// https://stackoverflow.com/questions/16440831/bitwise-xor-in-sqlite-bitwise-not-not-working-as-i-expect
|
||||
String expression = hide ? "state = (~(state & "+PUBLIC+"))&(state|"+PUBLIC+")" : ("state = state | "+PUBLIC);
|
||||
Database.open().query("UPDATE " + TABLE_NAME + " SET "+expression).where(EMAIL, listEmail).run();
|
||||
Database.open().update(TABLE_NAME,expression).where(EMAIL, listEmail).run();
|
||||
}
|
||||
|
||||
public static List<MailingList> listsOf(User user) {
|
||||
@@ -84,7 +85,7 @@ public class MailingList {
|
||||
var list = new ArrayList<MailingList>();
|
||||
if (keys != null && keys.isEmpty()) return list;
|
||||
try {
|
||||
Database.Request query = Database.open().query("SELECT * FROM " + TABLE_NAME);
|
||||
Database.Request query = Database.open().select(TABLE_NAME);
|
||||
if (keys != null) query.where(EMAIL, keys);
|
||||
var rs = query.exec();
|
||||
while (rs.next()) {
|
||||
@@ -110,7 +111,10 @@ public class MailingList {
|
||||
public static List<MailingList> openLists() {
|
||||
var list = new ArrayList<MailingList>();
|
||||
try {
|
||||
var rs = Database.open().query("SELECT *, (" + STATE + " & " + PUBLIC + ") as test FROM " + TABLE_NAME).where("test", PUBLIC).exec();
|
||||
var rs = Database.open()
|
||||
.select(TABLE_NAME,"*", "(" + STATE + " & " + PUBLIC + ") as test")
|
||||
.where("test", PUBLIC)
|
||||
.exec();
|
||||
while (rs.next()) {
|
||||
var email = rs.getString(EMAIL);
|
||||
var name = rs.getString(NAME);
|
||||
@@ -127,6 +131,31 @@ public class MailingList {
|
||||
return openLists().stream().filter(ml -> ml.email.equals(list)).count() > 0;
|
||||
}
|
||||
|
||||
public static MailingList load(String listEmail) {
|
||||
try {
|
||||
var rs = Database.open()
|
||||
.select(TABLE_NAME)
|
||||
.where(EMAIL,listEmail)
|
||||
.exec();
|
||||
if (rs.next()){
|
||||
return new MailingList(rs.getString(EMAIL),
|
||||
rs.getString(NAME),
|
||||
rs.getString(IMAP_HOST),
|
||||
rs.getInt(IMAP_PORT),
|
||||
rs.getString(IMAP_USER),
|
||||
rs.getString(IMAP_PASS),
|
||||
rs.getString(SMTP_HOST),
|
||||
rs.getInt(SMTP_PORT),
|
||||
rs.getString(SMTP_USER),
|
||||
rs.getString(SMTP_PASS),
|
||||
rs.getInt(STATE));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
LOG.debug("Failed to load MailingList: ",e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Map<String, Object> safeMap() {
|
||||
var map = new HashMap<String,Object>();
|
||||
String[] parts = email.split("@", 2);
|
||||
|
||||
Reference in New Issue
Block a user