Skip to content

Commit

Permalink
Umstellung auf DBIterator
Browse files Browse the repository at this point in the history
  • Loading branch information
JohannMaierhofer committed Jun 14, 2024
1 parent 1cd5c29 commit 265489d
Showing 1 changed file with 20 additions and 67 deletions.
87 changes: 20 additions & 67 deletions src/de/jost_net/JVerein/gui/control/MailControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
import java.io.IOException;
import java.io.StringWriter;
import java.rmi.RemoteException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
Expand Down Expand Up @@ -50,7 +48,6 @@
import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ;
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.datasource.rmi.DBService;
import de.willuhn.datasource.rmi.ResultSetExtractor;
import de.willuhn.jameica.gui.AbstractView;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
Expand Down Expand Up @@ -85,12 +82,6 @@ public class MailControl extends FilterControl
private Mail mail;

private TablePart mailsList;

private boolean and = false;

private String sql = "";

private ArrayList<Object> bedingungen = new ArrayList<>();


public MailControl(AbstractView view)
Expand Down Expand Up @@ -645,10 +636,10 @@ public void TabRefresh()
return;
}
mailsList.removeAll();
ArrayList<Mail> mails = getMails();
for (Mail mail: mails)
DBIterator<Mail> mails = getMails();
while (mails.hasNext())
{
mailsList.addItem(mail);
mailsList.addItem(mails.next());
}
}
catch (RemoteException e1)
Expand All @@ -657,95 +648,57 @@ public void TabRefresh()
}
}

@SuppressWarnings("unchecked")
private ArrayList<Mail> getMails() throws RemoteException
private DBIterator<Mail> getMails() throws RemoteException
{
and = false;
bedingungen = new ArrayList<>();
final DBService service = Einstellungen.getDBService();
ArrayList<Mail> mails = new ArrayList<>();
sql = "select DISTINCT mail.id, lower(mail.betreff) from mail ";
sql += "join mailempfaenger on mail.id = mailempfaenger.mail ";
sql += "join mitglied on mailempfaenger.mitglied = mitglied.id ";
DBService service = Einstellungen.getDBService();
DBIterator<Mail> mails = service.createList(Mail.class);
mails.join("mailempfaenger");
mails.addFilter("mailempfaenger.mail = mail.id");
mails.join("mitglied");
mails.addFilter("mitglied.id = mailempfaenger.mitglied");

if (isSuchnameAktiv() && getSuchname().getValue() != null)
{
String tmpSuchname = (String) getSuchname().getValue();
if (tmpSuchname.length() > 0)
{
addCondition("(lower(mitglied.name) like ?)", "%" + tmpSuchname.toLowerCase() + "%");
mails.addFilter("(lower(betreff) like ?)",
new Object[] { "%" + tmpSuchname.toLowerCase() + "%" });
}
}
if (isSuchtextAktiv() && getSuchtext().getValue() != null)
{
String tmpSuchtext = (String) getSuchtext().getValue();
if (tmpSuchtext.length() > 0)
{
addCondition("(lower(betreff) like ?)", "%" + tmpSuchtext.toLowerCase() + "%");
mails.addFilter("(lower(betreff) like ?)",
new Object[] { "%" + tmpSuchtext.toLowerCase() + "%" });
}
}
if (isEingabedatumvonAktiv() && getEingabedatumvon().getValue() != null)
{
Date d = (Date) getEingabedatumvon().getValue();
addCondition("bearbeitung >= ?", new java.sql.Date(d.getTime()));
mails.addFilter("bearbeitung >= ?", new Object[] { new java.sql.Date(d.getTime()) });
}
if (isEingabedatumbisAktiv() && getEingabedatumbis().getValue() != null)
{
Date d = (Date) getEingabedatumbis().getValue();
addCondition("bearbeitung <= ?", new java.sql.Date(d.getTime()));
mails.addFilter("bearbeitung <= ?", new Object[] { new java.sql.Date(d.getTime()) });
}
if (isDatumvonAktiv() && getDatumvon().getValue() != null)
{
Date d = (Date) getDatumvon().getValue();
addCondition("versand >= ?", new java.sql.Date(d.getTime()));
mails.addFilter("mail.versand >= ?", new Object[] { new java.sql.Date(d.getTime()) });
}
if (isDatumbisAktiv() && getDatumbis().getValue() != null)
{
Date d = (Date) getDatumbis().getValue();
addCondition("versand <= ?", new java.sql.Date(d.getTime()));
mails.addFilter("mail.versand <= ?", new Object[] { new java.sql.Date(d.getTime()) });
}
sql += " ORDER BY lower(mail.betreff)";

ResultSetExtractor rs = new ResultSetExtractor()
{
mails.setOrder("ORDER BY betreff");

@Override
public Object extract(ResultSet rs) throws RemoteException, SQLException
{
ArrayList<Mail> list = new ArrayList<>();
while (rs.next())
{
list.add((Mail) service.createObject(Mail.class,
rs.getString(1)));
}
return list;
}
};
mails = (ArrayList<Mail>) service.execute(sql,
bedingungen.toArray(), rs);

return mails;
}


private void addCondition(String condition)
{
if (and)
{
sql += " AND ";
}
else
{
sql += "where ";
}
and = true;
sql += condition;
}

private void addCondition(String condition, Object obj)
{
addCondition(condition);
bedingungen.add(obj);
}

public class EvalMail
{
Expand Down

0 comments on commit 265489d

Please sign in to comment.