Merge branch 'main' into lang_de

This commit is contained in:
2022-04-20 18:14:38 +02:00
8 changed files with 37 additions and 18 deletions

View File

@@ -93,6 +93,7 @@ public class Database {
private final StringBuilder sql; // buffer the sql to be built
private final HashMap<String, List<Object>> where = new HashMap<>(); // buffer condition statements for select
private final HashMap<String,Object> values = new HashMap<>(); // buffer values for insert/update statements
private final List<String> sortFields = new ArrayList<>();
/**
* Start to create a new request with the initial SQL
@@ -126,6 +127,10 @@ public class Database {
}
}
private void applySorting(){
if (!sortFields.isEmpty()) sql.append(" ORDER BY ").append(String.join(", ",sortFields));
}
@Override
protected Request clone() {
Request clone = new Request(sql);
@@ -142,6 +147,7 @@ public class Database {
var args = new ArrayList<>();
applyValues(args);
applyConditions(args);
applySorting();
return new CompiledRequest(sql.toString(),args);
}
@@ -245,6 +251,11 @@ public class Database {
list.add(value);
return this;
}
public Request sort(String field) {
sortFields.add(field);
return this;
}
}
public Database(Connection connection) {

View File

@@ -1,5 +1,6 @@
package de.srsoftware.widerhall.data;
import de.srsoftware.widerhall.Configuration;
import de.srsoftware.widerhall.Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,8 +12,10 @@ import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.sql.Array;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -59,7 +62,9 @@ public class Post {
var time = message.getSentDate().getTime();
Post post = new Post(id,list,fromEmail,fromName,subject,time);
Files.writeString(post.file().toPath(),text, StandardCharsets.UTF_8);
var file = post.file();
file.getParentFile().mkdirs();
Files.writeString(file.toPath(),text, StandardCharsets.UTF_8);
return post.save();
} catch (MessagingException | IOException | SQLException e) {
LOG.warn("Failed to create post from {}",message);
@@ -93,10 +98,10 @@ public class Post {
return new File(filename);
}
public static HashSet<Post> find(MailingList list) throws SQLException {
var rs = Database.open().select(TABLE_NAME).where(LIST,list.email()).compile().exec();
public static ArrayList<Post> find(MailingList list) throws SQLException {
var rs = Database.open().select(TABLE_NAME).where(LIST,list.email()).sort(DATE).compile().exec();
try {
var result = new HashSet<Post>();
var result = new ArrayList<Post>();
while (rs.next()) result.add(Post.from(rs));
return result;
} finally {
@@ -111,6 +116,7 @@ public class Post {
if (post == null) {
var list = MailingList.load(rs.getString(LIST));
post = new Post(id, list, rs.getString(FROM_ADDR), rs.getString(FROM_NAME), rs.getString(SUBJECT), rs.getLong(DATE));
post.filename = rs.getString(FILE);
cache.put(id,post);
}
return post;
@@ -122,7 +128,7 @@ public class Post {
private String generateFilename() {
return "/tmp/"+id+".json";
return Configuration.instance().archiveDir()+File.separator+id+".txt";
}
public String id() {