From 115bd4d29f89b0c5dcf12e8f1d2fa24f8ef9e042 Mon Sep 17 00:00:00 2001 From: Tilman Walther Date: Fri, 10 Feb 2012 22:42:30 +0100 Subject: [PATCH] inital commit --- Notes.txt | 54 + database/db.backup | Bin 0 -> 60000 bytes database/db.data | Bin 0 -> 164904 bytes database/db.properties | 18 + database/db.script | 17 + pom.xml | 56 + resources/icon.png | Bin 0 -> 4686 bytes resources/icon.svg | 2560 +++++++++++++++++ resources/icon1.png | Bin 0 -> 3411 bytes resources/icon2.png | Bin 0 -> 3580 bytes resources/icon3.png | Bin 0 -> 3501 bytes .../transactions/DatabaseController.java | 129 + .../java/de/tilman/transactions/Service.java | 398 +++ .../de/tilman/transactions/Transaktion.java | 32 + src/main/java/org/example/HelloServlet.java | 18 + src/main/java/org/example/HelloWorld.java | 32 + src/webapp/WEB-INF/index.html | 2 + src/webapp/WEB-INF/web.xml | 15 + .../transactions/DatabaseController.class | Bin 0 -> 6931 bytes .../transactions/Service$CsvServlet.class | Bin 0 -> 3800 bytes .../transactions/Service$ReadServlet.class | Bin 0 -> 9941 bytes .../transactions/Service$ShutdownThread.class | Bin 0 -> 1037 bytes .../transactions/Service$StatsServlet.class | Bin 0 -> 1911 bytes .../de/tilman/transactions/Service.class | Bin 0 -> 7590 bytes .../de/tilman/transactions/Transaktion.class | Bin 0 -> 1194 bytes target/classes/org/example/HelloServlet.class | Bin 0 -> 1323 bytes target/classes/org/example/HelloWorld.class | Bin 0 -> 1800 bytes 27 files changed, 3331 insertions(+) create mode 100755 Notes.txt create mode 100755 database/db.backup create mode 100755 database/db.data create mode 100755 database/db.properties create mode 100755 database/db.script create mode 100755 pom.xml create mode 100755 resources/icon.png create mode 100755 resources/icon.svg create mode 100755 resources/icon1.png create mode 100755 resources/icon2.png create mode 100755 resources/icon3.png create mode 100755 src/main/java/de/tilman/transactions/DatabaseController.java create mode 100755 src/main/java/de/tilman/transactions/Service.java create mode 100755 src/main/java/de/tilman/transactions/Transaktion.java create mode 100755 src/main/java/org/example/HelloServlet.java create mode 100755 src/main/java/org/example/HelloWorld.java create mode 100755 src/webapp/WEB-INF/index.html create mode 100755 src/webapp/WEB-INF/web.xml create mode 100755 target/classes/de/tilman/transactions/DatabaseController.class create mode 100755 target/classes/de/tilman/transactions/Service$CsvServlet.class create mode 100755 target/classes/de/tilman/transactions/Service$ReadServlet.class create mode 100755 target/classes/de/tilman/transactions/Service$ShutdownThread.class create mode 100755 target/classes/de/tilman/transactions/Service$StatsServlet.class create mode 100755 target/classes/de/tilman/transactions/Service.class create mode 100755 target/classes/de/tilman/transactions/Transaktion.class create mode 100755 target/classes/org/example/HelloServlet.class create mode 100755 target/classes/org/example/HelloWorld.class diff --git a/Notes.txt b/Notes.txt new file mode 100755 index 0000000..8d05c8c --- /dev/null +++ b/Notes.txt @@ -0,0 +1,54 @@ +cd /Users/tilman/.m2/repository/hsqldb/hsqldb/1.8.0.10/ +java -cp hsqldb-1.8.0.10.jar org.hsqldb.util.DatabaseManager + jdbc:hsqldb:file:/Volumes/hidrive-mirror/Dokumente/Finanzen/Ausgaben-Datenbank/database/db + sa + +Export nach OOo Calc +SELECT "Datum", "Name", "Betrag", "Beschreibung" FROM "Transaktionen" JOIN "Kategorien" ON "Kategorien"."ID" = "Transaktionen"."Kategorie" ORDER BY "Datum" ASC + + + +Starten: +#!/bin/sh +cd /media/usb/hidrive/Dokumente/Finanzen/Ausgaben-Datenbank/database +screen -S HSQLDB sudo -u nobody java -Duser.timezone=Europe/Berlin -cp hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 file:db -dbname.0 transaktionen +cd /media/usb/hidrive/Dokumente/Finanzen/Ausgaben-Datenbank +screen -S Transaktionen sudo -u nobody java -Duser.timezone=Europe/Berlin -jar transaktionen.jar + + + + +Transaktion einfügen und ID zurückliefern +INSERT INTO "Transaktionen" ("ID", "Datum", "Kategorie", "Betrag", "Beschreibung") VALUES (null, CURDATE(), 32, 1.99, 'Test'); +CALL IDENTITY(); + +Letzte Transaktion +SELECT * FROM "Transaktionen" WHERE id=(SELECT Max(id) FROM "Transaktionen") + +Export +SELECT "Datum", "Name", "Betrag", "Beschreibung" FROM "Transaktionen" JOIN "Kategorien" ON "Kategorien".ID="Transaktionen"."Kategorie" + +Letzte 10 Transaktionen +SELECT * FROM "Transaktionen" ORDER BY ID desc LIMIT 10 + + +SELECT * FROM "Transaktionen" WHERE "Datum">'2011-01-01' + +SELECT "ID", "Datum", "Kategorie", "Betrag", "Beschreibung" FROM "Transaktionen" ORDER BY "Datum" desc, "ID" desc LIMIT 10 + + + +UPDATE "Transaktionen" SET "Datum"='2011-11-08' WHERE "ID"=930 +UPDATE "Transaktionen" SET "Beschreibung"='Aufladung MyCard' WHERE "ID"=990 +DELETE FROM "Transaktionen" WHERE "ID"=999 +UPDATE "Transaktionen_Tilman" SET "Kategorie"=19 WHERE "ID"=15 + + +screen -S Transaktionen sudo -u nobody java -Duser.timezone=Europe/Berlin -cp hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 file:db -dbname.0 transaktionen + + +CREATE CACHED TABLE "Kategorien_Tilman"("ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,"Name" VARCHAR(255) NOT NULL); +CREATE CACHED TABLE "Transaktionen_Tilman"("ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,"Datum" DATE NOT NULL,"Kategorie" INTEGER NOT NULL,"Betrag" DECIMAL(50,2) NOT NULL,"Beschreibung" VARCHAR(255)); + +ALTER TABLE "Transaktionen" ADD "Auslage" INTEGER DEFAULT 0 NOT NULL; +INSERT INTO "Kategorien_Tilman" VALUES (null, 'Freizeit - Sport') \ No newline at end of file diff --git a/database/db.backup b/database/db.backup new file mode 100755 index 0000000000000000000000000000000000000000..f1bec345cf7df1eede2783b77b167d9b4bb69972 GIT binary patch literal 60000 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 + 4.0.0 + Transaktionen + Transaktionen + 0.0.1-SNAPSHOT + + + + org.mortbay.jetty + jetty-maven-plugin + 8.0.1.v20110908 + + + org.codehaus.mojo + exec-maven-plugin + 1.2 + + java + + + org.example.HelloWorld + + + + + + + log4j + log4j + 1.2.14 + jar + compile + + + org.mortbay.jetty + jetty-embedded + 6.1.26 + jar + compile + + + hsqldb + hsqldb + 1.8.0.10 + jar + compile + + + org.apache.commons + commons-lang3 + 3.0.1 + jar + compile + + + \ No newline at end of file diff --git a/resources/icon.png b/resources/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..ec7dfa1b3a1c44b6a8fb92be03a56b530c1cc4c2 GIT binary patch literal 4686 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 Q*Z=?k07*qoM6N<$f{!TwCIA2c literal 0 HcmV?d00001 diff --git a/resources/icon.svg b/resources/icon.svg new file mode 100755 index 0000000..a4cb107 --- /dev/null +++ b/resources/icon.svg @@ -0,0 +1,2560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + 10 + 10 + + 10 + + + + + + + 10 + 10 + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + 10 + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + 10 + + 10 + + + + + + + 10 + 10 + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icon1.png b/resources/icon1.png new file mode 100755 index 0000000000000000000000000000000000000000..3c46b489d3611ba96ae8ff0abf12c4773479bf19 GIT binary patch literal 3411 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 bFChOHR getCategories() throws SQLException { + resultSet = selectCategoriesSql.executeQuery(); + TreeMap categoryMap = new TreeMap(); + while (resultSet.next()) { + categoryMap.put(resultSet.getInt(1), resultSet.getString(2)); + } + return categoryMap; + } + + public int writeTransaction(Transaktion transaction) throws SQLException { + insertTransactionSql.setBigDecimal(3, transaction.betrag); + insertTransactionSql.setInt(2, transaction.kategorie); + insertTransactionSql.setDate(1, new java.sql.Date(transaction.datum.getTime())); + insertTransactionSql.setString(4, transaction.beschreibung); + insertTransactionSql.setInt(5, transaction.auslage); + insertTransactionSql.execute(); + + // return the ID of the new row + resultSet = statement.executeQuery("CALL IDENTITY();"); + resultSet.next(); + int lastId = resultSet.getInt(1); + log.info("written transaction with ID " + lastId); + return lastId; + } + + public void deleteTransaction(int id) throws SQLException { + log.info("delete transaction #" + id); + statement.execute("DELETE FROM \""+tblTransactions+"\" WHERE id=" + id); + } + + public Transaktion getLastTransaction() throws SQLException { + resultSet = statement.executeQuery("SELECT \"ID\", \"Datum\", \"Kategorie\", \"Betrag\", \"Beschreibung\", \"Auslage\" FROM \""+tblTransactions+"\" WHERE id = (SELECT Max(id) FROM \""+tblTransactions+"\");"); + resultSet.next(); + return new Transaktion(resultSet.getInt(1), resultSet.getBigDecimal(4), resultSet.getInt(3), resultSet.getDate(2), resultSet.getString(5), resultSet.getInt(6)); + } + + public LinkedList getLastTransactions(int num) throws SQLException { + LinkedList list = new LinkedList(); + Map categories = getCategories(); + resultSet = statement.executeQuery("SELECT \"ID\", \"Datum\", \"Kategorie\", \"Betrag\", \"Beschreibung\", \"Auslage\" FROM \""+tblTransactions+"\" ORDER BY \"Datum\" desc, \"ID\" desc LIMIT " + num); + while (resultSet.next()) { + Transaktion trns = new Transaktion(resultSet.getInt(1), resultSet.getBigDecimal(4), resultSet.getInt(3), categories.get(resultSet.getInt(3)), resultSet.getDate(2), resultSet.getString(5), resultSet.getInt(6)); + list.push(trns); + } + return list; + } + + public BigDecimal getSumExpenses(int id) throws SQLException { + resultSet = statement.executeQuery("SELECT SUM(\"Betrag\") FROM \"" + tblTransactions + "\" WHERE \"Auslage\"=" + id); + resultSet.next(); + BigDecimal result = resultSet.getBigDecimal(1); + if (result == null) + return new BigDecimal(0); + return result; + } + + public void resetExpenses(int id) throws SQLException { + log.info("resetting expenses for ID " + id); + statement.execute("UPDATE \"Transaktionen\" SET \"Auslage\"=0 WHERE \"Auslage\"=" + id); + } + + public void close() throws SQLException { + selectCategoriesSql.close(); + insertTransactionSql.close(); + + log.info("shutting down database"); + statement.execute("SHUTDOWN COMPACT"); + statement.close(); + + connection.close(); + log.info("database closed"); + } +} diff --git a/src/main/java/de/tilman/transactions/Service.java b/src/main/java/de/tilman/transactions/Service.java new file mode 100755 index 0000000..3ff869c --- /dev/null +++ b/src/main/java/de/tilman/transactions/Service.java @@ -0,0 +1,398 @@ +package de.tilman.transactions; + +import java.io.IOException; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.SortedMap; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.mortbay.jetty.Handler; +import org.mortbay.jetty.Server; +import org.mortbay.jetty.handler.DefaultHandler; +import org.mortbay.jetty.handler.HandlerList; +import org.mortbay.jetty.handler.ResourceHandler; +import org.mortbay.jetty.servlet.Context; +import org.mortbay.jetty.servlet.ServletHolder; +import org.mortbay.thread.QueuedThreadPool; + +public class Service { + + private final static Logger log = Logger.getLogger(Service.class); + private static int hostPort = 8080; + + protected Server jetty; + + private static SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy"); + + private Random rnd = new Random(); + + public void start() { + BasicConfigurator.configure(new ConsoleAppender(new PatternLayout("%d{ISO8601} - %m%n"))); + + try { + log.info("open database"); + DatabaseController database = new DatabaseController("Transaktionen", "Kategorien", "/input", true); + log.info("add shutdown hook for database"); + Runtime.getRuntime().addShutdownHook(new ShutdownThread(database)); + + DatabaseController databaseTilman = new DatabaseController("Transaktionen_Tilman", "Kategorien_Tilman", "/tilman", false); + + jetty = new Server(hostPort); + jetty.setThreadPool(new QueuedThreadPool(10)); + + Context inputContext = new Context(jetty, "/", Context.SESSIONS); + inputContext.addServlet(new ServletHolder(new ReadServlet(database)), "/input"); + inputContext.addServlet(new ServletHolder(new StatsServlet(database)), "/input/last"); + inputContext.addServlet(new ServletHolder(new CsvServlet(database)), "/input/csv"); + + inputContext.addServlet(new ServletHolder(new ReadServlet(databaseTilman)), "/tilman"); + inputContext.addServlet(new ServletHolder(new StatsServlet(databaseTilman)), "/tilman/last"); + inputContext.addServlet(new ServletHolder(new CsvServlet(databaseTilman)), "/tilman/csv"); + + + ResourceHandler resourceHandler = new ResourceHandler(); + resourceHandler.setResourceBase("resources"); + + log.info("serving " + resourceHandler.getBaseResource()); + HandlerList handlers = new HandlerList(); + handlers.setHandlers(new Handler[] { resourceHandler, inputContext, new DefaultHandler() }); + jetty.setHandler(handlers); + + jetty.start(); + jetty.join(); + log.info("Listening at " + hostPort); + } catch (Exception e) { + e.printStackTrace(); + log.fatal("Failed to start on port " + hostPort + ", reason: " + e.getMessage()); + } + } + + protected static void writeHeader(PrintWriter out) { + out.println("\n" + + "" + + "Ausgaben" + + ""); + out.println(""); + out.println(""); + out.println(""); + out.println(""); + out.println(""); // onload='document.forms[0].betrag.focus()' + } + + protected static void writeFooter(PrintWriter out) { + out.println(""); + out.close(); + } + + protected static void showTable(DatabaseController database, int num, PrintWriter out) throws ServletException { + out.println(""); + out.println(""); + + + LinkedList transactions = null; + try { + transactions = database.getLastTransactions(num); + } catch (SQLException se) { + throw new ServletException(se); + } + + while (!transactions.isEmpty()) { + Transaktion t = transactions.removeLast(); + out.println(""); + } + + out.println("
DatumKategorieBetragBeschreibung
" + formatter.format(t.datum) + "" + StringEscapeUtils.escapeHtml4(t.kategorieName) + " 0) ? "style=\"background-color: #ccddff;\">" : ">") + t.betrag.toPlainString() + " €" + ((t.beschreibung == null) ? "" : StringEscapeUtils.escapeHtml4(t.beschreibung)) + "
"); + + } + + + public class ReadServlet extends HttpServlet { + private static final long serialVersionUID = 1572581546682459768L; + + private int undoChallenge = -1; + private int auslagenChallenge = -1; + private int lastId = -1; + private DatabaseController database; + + public ReadServlet(DatabaseController database) { + super(); + this.database = database; + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); + PrintWriter out = response.getWriter(); + + writeHeader(out); + + if (request.getParameter("chl") != null) { + if ((undoChallenge == Integer.parseInt(request.getParameter("chl"))) && (lastId == Integer.parseInt(request.getParameter("del")))) { + try { + database.deleteTransaction(lastId); + } catch (SQLException se) { + throw new ServletException(se); + } + showMessage(out, "Transaktion gelöscht."); + } + else if (auslagenChallenge == Integer.parseInt(request.getParameter("chl"))) { + try { + database.resetExpenses(Integer.parseInt(request.getParameter("id"))); + } catch (SQLException se) { + throw new ServletException(se); + } + showMessage(out, "Auslagen zurückgesetzt."); + } + undoChallenge = -1; + auslagenChallenge = -1; + } + + showInputForm(out); + showTable(database, 10, out); + showAuslagen(out); + writeFooter(out); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=utf-8"); + + boolean error = false; + String errorMessage = null; + + // der Betrag kann mit Punkt oder Komma als Dezimalzeichen eingegeben werden + String betragStr = StringUtils.replaceChars(request.getParameter("betrag"), ',', '.'); + + // wenn kein Vorzeichen angegeben wurde, nehmen wir eine Ausgabe an + // und setzen den Betrag negativ + if (!(betragStr.startsWith("-") || betragStr.startsWith("+"))) { + betragStr = "-" + betragStr; + } + + BigDecimal betrag = null; + try { + betrag = new BigDecimal(betragStr); + if (betrag.compareTo(BigDecimal.valueOf(0)) == 0) + error = true; + } + catch (NumberFormatException nfe) { + error = true; + } + + if (error) + errorMessage = "Fehler: "" + request.getParameter("betrag") + "" ist kein zulässiger Betrag."; + + Date datum = null; + try { + datum = formatter.parse(request.getParameter("datum")); + } catch (ParseException pe) { + error = true; + errorMessage = "Fehler: "" + request.getParameter("datum") + "" ist kein zulässiges Datum."; + } + + if (!error) { + Transaktion transaction = new Transaktion(betrag, Integer.parseInt(request.getParameter("kategorie")), datum, request.getParameter("beschreibung"), (database.hasAuslagen ? Integer.parseInt(request.getParameter("auslage")) : 0)); + try { + lastId = database.writeTransaction(transaction); + } catch (SQLException se) { + throw new ServletException(se); + } + } + + response.setStatus(HttpServletResponse.SC_OK); + PrintWriter out = response.getWriter(); + + writeHeader(out); + if (!error) + showLastTransaction(out); + else + showMessage(out, errorMessage); + showInputForm(out); + showTable(database, 10, out); + showAuslagen(out); + writeFooter(out); + } + + private void showInputForm(PrintWriter out) throws ServletException { + + SortedMap categories; + try { + categories = database.getCategories(); + } catch (SQLException e) { + throw new ServletException(e); + } + + out.println("
"); + + out.println(""); + out.println(""); + out.println(""); + out.println(""); + + if (database.hasAuslagen) + out.println(""); + + out.println("
Betrag:
Kategorie:
Datum:
Notiz:
Auslage: Keine    Tilman    Anica
"); + + out.println("
"); + } + + private void showAuslagen(PrintWriter out) throws ServletException { + if (database.hasAuslagen) { + auslagenChallenge = rnd.nextInt(Integer.MAX_VALUE); + + out.println(""); + try { + out.println(""); + out.println(""); + } catch (SQLException se) { + throw new ServletException(se); + } + out.println("
Auslagen Anica " + database.getSumExpenses(2) + " €überwiesen
Auslagen Tilman " + database.getSumExpenses(1) + " €überwiesen
"); + } + } + + private void showLastTransaction(PrintWriter out) throws ServletException { + Transaktion trns = null; + try { + trns = database.getLastTransaction(); + } catch (SQLException e) { + throw new ServletException(e); + } + out.println("
"); + out.println("gespeichert: "); + out.print(trns.datum + " "); + if (trns.betrag.compareTo(BigDecimal.valueOf(0)) < 0) { + out.print(""); + } + else { + out.print(""); + } + out.println(trns.betrag.toPlainString() + " €"); + + undoChallenge = rnd.nextInt(Integer.MAX_VALUE); + + out.println("   löschen"); + out.println("
"); + } + + private void showMessage(PrintWriter out, String message) { + out.println("
"); + out.println(message); + out.println("
"); + } + } + + public class StatsServlet extends HttpServlet { + private static final long serialVersionUID = 4104919572342151480L; + private DatabaseController database; + + public StatsServlet(DatabaseController database) { + super(); + this.database = database; + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); + PrintWriter out = response.getWriter(); + + writeHeader(out); + showTable(database, ((request.getParameter("n") != null) ? Integer.parseInt(request.getParameter("n")) : 20), out); + writeFooter(out); + } + } + + public class CsvServlet extends HttpServlet { + private static final long serialVersionUID = 4104919572342151480L; + private DatabaseController database; + + public CsvServlet(DatabaseController database) { + super(); + this.database = database; + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + char separator = ';'; + + if (request.getParameter("separator") != null) { + separator = request.getParameter("separator").charAt(0); + } + + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); + PrintWriter out = response.getWriter(); + + writeHeader(out); + + out.println("
");
+			out.println("ID" + separator + "Datum" + separator + "Kategorie" + separator + "Betrag" + separator + "Beschreibung");	        
+	        
+	        List transactions = null;
+	        try {
+				transactions = database.getLastTransactions(((request.getParameter("n") != null) ? Integer.parseInt(request.getParameter("n")) : 50));
+			} catch (SQLException se) {
+				throw new ServletException(se);
+			}
+	        
+			for (Transaktion t : transactions) {
+				String s = "" + t.id + separator + formatter.format(t.datum) + separator + StringEscapeUtils.escapeHtml4(t.kategorieName) + separator + t.betrag.toPlainString() + separator + ((t.beschreibung == null) ? "" : StringEscapeUtils.escapeHtml4(t.beschreibung));
+				System.out.println(s);
+				out.println(s);
+			}
+	        
+			out.println("
"); + + writeFooter(out); + } + } + + class ShutdownThread extends Thread { + DatabaseController database; + + public ShutdownThread(DatabaseController database) { + this.database = database; + } + + public void run() { + try { + database.close(); + } catch (SQLException se) { + log.error(se); + } + } + } + + public static void main(String[] args) { + Service service = new Service(); + service.start(); + } +} diff --git a/src/main/java/de/tilman/transactions/Transaktion.java b/src/main/java/de/tilman/transactions/Transaktion.java new file mode 100755 index 0000000..b862f30 --- /dev/null +++ b/src/main/java/de/tilman/transactions/Transaktion.java @@ -0,0 +1,32 @@ +package de.tilman.transactions; + +import java.math.BigDecimal; +import java.util.Date; + +public class Transaktion { + public int id; + public BigDecimal betrag; + public int kategorie; + public String kategorieName; + public Date datum; + public String beschreibung; + public int auslage; + + public Transaktion(int id, BigDecimal betrag, int kategorie, Date datum, String beschreibung, int auslage) { + this.id = id; + this.betrag = betrag; + this.kategorie = kategorie; + this.datum = datum; + this.beschreibung = beschreibung; + this.auslage = auslage; + } + + public Transaktion(int id, BigDecimal betrag, int kategorie, String kategorieName, Date datum, String beschreibung, int auslage) { + this(id, betrag, kategorie, datum, beschreibung, auslage); + this.kategorieName = kategorieName; + } + + public Transaktion(BigDecimal betrag, int kategorie, Date datum, String beschreibung, int auslage) { + this(-1, betrag, kategorie, datum, beschreibung, auslage); + } +} diff --git a/src/main/java/org/example/HelloServlet.java b/src/main/java/org/example/HelloServlet.java new file mode 100755 index 0000000..cbec2a2 --- /dev/null +++ b/src/main/java/org/example/HelloServlet.java @@ -0,0 +1,18 @@ +package org.example; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class HelloServlet extends HttpServlet +{ + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + response.setContentType("text/html"); + response.setStatus(HttpServletResponse.SC_OK); + response.getWriter().println("

Hello Servlet

"); + response.getWriter().println("session=" + request.getSession(true).getId()); + } +} \ No newline at end of file diff --git a/src/main/java/org/example/HelloWorld.java b/src/main/java/org/example/HelloWorld.java new file mode 100755 index 0000000..4cea52b --- /dev/null +++ b/src/main/java/org/example/HelloWorld.java @@ -0,0 +1,32 @@ +package org.example; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.mortbay.jetty.HttpConnection; +import org.mortbay.jetty.Request; +import org.mortbay.jetty.Server; +import org.mortbay.jetty.handler.AbstractHandler; + +public class HelloWorld extends AbstractHandler { + + public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, + ServletException { + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); + response.getWriter().println("
Aloha,\nfunky time
"); + Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest(); + base_request.setHandled(true); + } + + public static void main(String[] args) throws Exception { + Server server = new Server(8080); + server.setHandler(new HelloWorld()); + + server.start(); + server.join(); + } +} \ No newline at end of file diff --git a/src/webapp/WEB-INF/index.html b/src/webapp/WEB-INF/index.html new file mode 100755 index 0000000..426b5a5 --- /dev/null +++ b/src/webapp/WEB-INF/index.html @@ -0,0 +1,2 @@ +

Hello World Webapp

+Hello Servlet \ No newline at end of file diff --git a/src/webapp/WEB-INF/web.xml b/src/webapp/WEB-INF/web.xml new file mode 100755 index 0000000..a8b529f --- /dev/null +++ b/src/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + Hello + org.example.HelloServlet + + + Hello + /hello/* + + \ No newline at end of file diff --git a/target/classes/de/tilman/transactions/DatabaseController.class b/target/classes/de/tilman/transactions/DatabaseController.class new file mode 100755 index 0000000000000000000000000000000000000000..f384660ec2cc03a135cbddc986d07b054c7e5943 GIT binary patch literal 6931 zcmbtZ33LuWT8vC zrlo0{txcP>A#Kx?wn<2AP-xS%X`43P_a)u;eQ(n?Blf$D@_ZzNNLTDsoIYU!L7Hzrcb>Cfi@H4QcTKy`Cd$_SZ);{r!5jQNZ8U za&4?D6mAK12?QdgC89<)neOL|8QdmkXlbKcOXYPR$_3_dy%htw>r#on75fu?@wRO8 zpq>?&#>IAbMSPekP$OS7Sd+|0Lp}G7YpH=u&anMCApOzP0zQ5i>D(Ib@ZkahPfimk z=g`j0(P&R+SImdm0uY#G^rd1hBxoE*S~WxO&t#K&j_$-W=`>yEx-`>rhj!M}2YZ+v zO{Y7CKB%XO(CpHjXmONNDsy^@%aoRmUY8PBT$;Qys}E^eJ>mXnb~2sQvxdt;^DCua zHzHcj2q(<$^sJuCr;MmRdiSp4D0eR#(u@H@Frei&=W{8oUt%P#B2G>5R5G13HZZhR z)!m%gnn~z>RH4R;YJqu^1X@8Y>gc$%#EiT^U6m`?ttl;+YpkA>C({Z33I$U!jX{Vc z(|SjKuusp%w7!%sX(Qv>t!0z4Zx2puvJGu;Z)CH|we_SUS4sc;p~G=~$fUg&S1>Lm zf;w;fn1Xc*R$-|$^GXF?_++b5fnv3q70j|)8x;iL^I-Z zNtKpwwknuwEf7|4iPhSnAc!S?w4>9D4&qWW&4g3IPV5r!?#pC5v_ZnObOIo%T}W6# z@FR-dUc?0EnhQ$yTKa0&(quwbK{tA6K4V#8wLtp>tGgDT6lU83xlL)gM(K2~f_a!< zj;nEv7cVPfKYF5qm*ZOc9?$9o%n<{PuW~KyjGOCf3Kn3Y7jg2ngqdYvOFo%O=vg0# z*Q{tL5^9a9HR_hG&UQ8EM<4oSoGFbt6L?$QEobakZ~)ZmG;L@|PbUPHPc(HLGWN!e zK2U0vLAA51E!3s9^s2#dTTs<vxy&C$Kh3;rqbxBq6y$M`A|A3b zMXQ#gRVybq#srp=q=rTVc38n8EcW4gMm^jS4RyuTa7V0D4f=4Sz|}#uN*Y)IPT%~v73<1z8}9Jpb|y<_UuO*kcj7KGmRQkt zB3%`(4*T&=yvvKbi%XjPvRzZ~ZrsDva!^*}&VAChusf3!5spOyQIq@6Q* zx{Z!B^nL~J!~0oXhVnFIy_>DpnZk{#J>uTk9+DeBpx}deklv*A!(5B?iUq7ZZjs># zfuYW<5V_GJXXcJBCr5^gC8c5f^z)57nMh5=4{%$%K2;pbCJo(Hs|7BrnvC17Qqfo) zo{p1v%!@|_f|F>$HDAFnMi|^aQ-#tylK_LP@bxXp{x&_H9Mn=KF;6Qf;BlIo(~Z(A zQne~P@kiC&(v*)W_&Ac2_D(ursNlPyAeFe|r2XvQ9 z6bViKTgJMxu(i&Q6#Q7C9rN^!!PJ=>*h#A4Y!3lV&PbCRW(EM zEBwZbU%NHyBxac-ek)MrR*0=5TMyD7N8+q2zvuZ;a?a4xDid{hiR(*@09iV59cP~K zB)NZpe3A!eOHKBnei;kExmDNb6H|F6vQH5IXL&3-BD?}iN{*<_YL&e~yLPxLnW%Oq zPNxKdl0mnLaz!X&20@`SZc#6ALOebd+$LrzqC)U0Bqe3(B;d?;{@YMo4&jGwUBaKa{uKn!X!BEh7 zQLBhLQ{F@Q98bGb(lQ^HrHH#zK*nIsc=+wwYF>nAx%Q&(d|hT_(~PKHF~@vb($1lLpMsh^5VD995VRphN|1vsJx`f9PAUV0_%3~Y}?HA6?9c` zJsnh|p_p2-W2K$YN+YbC@l+bc+h|{?2Q7nIi z9S`dH*Uu+V$>|qhr8z2p30j5AIlh|xGWOQUMZ_AqI+Y{GYffQpO~5~l^)-PR!)T}p zR1Bl3CQvzy4K;yH!)U1qv<+iRO|5L!$=32=Y^#}5HjM27|7k>e_+g+TPReur7xTs!HSWQT!Sm{3arI_d?S&O{?mJo zy^>Gak|C489yfy~aXe0H_)KaXm%m<^=rO}`q=@CscrE97@H#UvCpbfX*CL%dRKV*c z2FK3e*4|TiTjT*;T+8ueWd*$5gVT72>`X1-UJpiayhrv5_<+FOFFjlPFjpxvBf8Ke zWCLcPkrp=5<7V34giY9J`Z3qq(e`5wz5WnR(2oyu1%*#*f69EgH=95@%vgUW>#NrYBfrJ^s zpBGD~ETXSKIoqw6i8cm4L`b%v1zQ>FZMX_MkVFJI{@QdD9k?BxCRD2BnG^Cm@pt@# zI2RuIZX6~@?65jk{hL-Ta;%c>n8yB>!|b$34xi;8drAQ>deBp1@l4Z< zC|MR`9Cy2-*zB0rECdbWnNN7clyL?PGmes}H=9t(y(>joY4b`kjl0{HR0>~FPGj*t zgOj}yeG7Bh@)m^OBZGZxnn_aGnpzMutudd;RXJ8+y*?!ZlBiZhEVuSB61~{K7)X&x z0@6&|Eg|NJx#Ptn=9vj8Oi4>go;V}s_ns09+iOO|qK?TtywHuW<=6wz&+XCjl5+$KReDEVNu@#N3GmlFAFicR_hLOX>a`DdA&z_4eh|6| zh?R9tIB`B9mYZ?*;eN3~)Dy}XxL2$cs|eFw{QdZH612?JvedaXYqc|L4QEMJ&xGd% z@Ps(uE7a$?n-Eus8JtzhQnGA3M0lmNJ6)Krb+cyucuXC4ZE;F^wAVci<&0?PopMSv zJ#2z7#g(d(Ou+k@Y!5I+rKrw9sxa-+U#H`Ir%m!rm?bta2YO6rn1s)w-76aC#>NTM zn6cHk+RhP`V$+0jtQ0M!@rgBYyRwHsK~ bZe$HRiUwNN%4$^-R-0|B5S_HdBX<4|YzF!N literal 0 HcmV?d00001 diff --git a/target/classes/de/tilman/transactions/Service$CsvServlet.class b/target/classes/de/tilman/transactions/Service$CsvServlet.class new file mode 100755 index 0000000000000000000000000000000000000000..f67b59d7262a0fab8ae1c9e3bfe69337093da39c GIT binary patch literal 3800 zcma)8>3j#LUQ; zE~E?H_r0NMQ@XipT2heh&?aeVmZtl@{R{oxFa6a$Z)Svrg&`lLdGFo(?t1RM@74c3 z`y7Dn_?Lznf%XZR@XTD^uo9kQSgw)rOxto3Bhr~RGqSbcomR`7^fW{SHXSpjjhTcS z93>__uaFqxU&tfSM3QOb#-!s?&cW1xfY>9js-HqV!}7+ATv68T{Lh&)+wjCrf#`(c z8RLd41v-aUuw@`*p$yNlb2;fG1?s&?(`|jdz^yA?Q#R2B#oJ?Arq?TwZo3}yO7yGP z&^{&*>9;3j0|c6N=vWm)E!OK;jST{|ZS7-Us)}?2Ta$hBfT1NP2|< zI__7lYXxOf&eE`tab2E*zM`3hckF`C)-=SBrENOqPT^!szZbJejo}Q%3O^)%Qs@$ZQnj#9*Iv zGn0-q$BR~0shQ9rag^Q6vjYqYtS={|0&28wlKs$%;TUonrUce5g(5{@WTm4c4~vpm zC9dSz3Mfg%P=KT1_{uH3x@GBbL4oUtn_RzCw92%b|6`m&> z@i^YC;azNuOA^Xd9q++=SpybJa(Qs~jUSU4FR9^u0=KPz^1#kpz$Ww-pcF=FNmImsNz zLEFh2UQ%iNjE>LZbE;n}fU+4?1YEH))L+088onrSqaTB-iqdfgUm_xp`ho>oLvZ`y z^u<)yhp+z2I=+IZIE|;u&`z_DszI~_!?1_Oa28+J@HK%B+sP)3f{~e&iHx1ktJi@F z%3Wc*-Q{MCf;>pfxH`U}T680;gGWPboI8})-_kLQZ`0s$zk~>YKp&$rndmdK12SXg zjU1i-F21kfd(5wI&oa7>AE+8z<=OjlhG_+cD)~Ru@gwDyK3-9lQ9L7n2AoGp!-XsR z{z=!9c^z|@=a{yOs>T9~%6*QqrIDvW&#KmTad~SC$O^AN)$tsjXMdYC+_Vo(j{U!-ER~^L9r3L=w#%esh(eYIQi~WN#HhR zS<>mx8Llg7Ol;}pi`RiT;iI`0H=+*p+-cm^Aj%)#c0f~;dj0ul?0;B8jwbH*lCJKp z>FB(GwHE5}L}(+7dc@yPDsyfV*nYwHB`|;2tg(aIZjj zBp#W^eep>1?h;b*$VH?NHSeFpfm=!#ZGNbP!~Wu}<;A1rg~3G$8D0|Ibsgu?(%GC1 z6|XHX=V8vGu4#J-c6Z$@)^yij#O6cs`Z*MzkJl|=hWfQxoQi7;I3@4`PAiV|p*g%i zUVk1RDB&YY`#e6bwx2HH^PzUNeR3XOt=N9Egzr>rpMDw9=5w=XRIE=2tTeYf`V4*? zkCw0ykEl;dss4$;nZ;8K!3%x}=JE4$%-#&1#8Y^Yp;c)b!v+TUA=HY)SS^m=Ch-Wi zh)2;S9>WeXj(fxe-(wO*k)>NEd(knR6;teF7A^@}Y!L;~DUOTn!V*0!iheOIhQtX! z-46%JE2mqe@G@SZ1xzS@iC3BES}}-L{EAT7AvUmS{hC(I;1Bo>eoHi-B|LtI-xCs- zVDt2ks25uZnm^J0DE>_Ab>APw{}=NAl_v{m_%EGUMMSMItglPo(H$$Z~@ zU-ER{UC%w|KmR%RK7adzr=JC|Kt89TOwb&)f_5z4Zzh6v+Dv53h#gBNGQn;uy)zcE zW^J&{s4B-TTZ2z9{YrDExjUF~tAc&DoeHkx!|Nj$$EKJW-(;mToao}N3k32JLG3cm zYMTjrlNrxi6%)Vr&c58{FYIPRHW5uO>oenVE75DQbC+Pena#w_UMo>lUl}(uc2`uO zM@`%8F*EGjvbu!y7kFK`sGUx7>U6uH((a38X0-|YrG}|ZaMP-9M=TMu!-BPqC+b|P zeGD0zHVJ&ol2NM)f=LF(VSF{pF~vX~8U*EyO`BB9X$GoMqe`b6Fx=7^25Q~X33MmJD{SD>Ues zCzxzoyKUmIKi(ecGt(K%?#$ZTTF)6P=QzQ!)MF=U_}9c=8i?9J(zZKWw| zW0RvNwU70j$ZKe?Mi@&poJUoZ0JLW%1LtF@pk|kva3x(+%{s*saMYwtn{?3m$|HU8 z8mz!d4HpV#pGX&uH4SuuK5J0)^=8`aw;bu`jHL*7KgGJK#%iq9u!e5z*vx6`qC$JE zw1IV4PZv%pL$R)ecDra0xSg zd5SbTwhfNgj#{8cP!@}-twjx3O4i!6MGP(9owDd786CY8@O+O0{d=?Nm!64i?^Rv) zxKR?Qf&hk>~wnIvE|?4)@e2xNA|gWVUcE;z10OS`-w2srDNjwpG8A!?{3heQOf zwm)o;M>j-KGOJ)V=B{W56-FkzjiaR`4c5}FBiq-QDMynUt}7yE583G9!IfFp})=SMgQhZlOmf7c&4;gE!;TRBhTy#m$Jt z$d@LaG>+kO%a(a8QtWj)KEv4AT8-Oqhlbl3hlicdB`pJ=#hoNyM&Y!b*&MU`N_gK^ z9d~oC77h1MH>0OnnvKOtJJr~S`;;#&Ql$e1?#Bb%x|t$`8Khgsko$P4y}8JL`|vpf z58+{2*-pCh3MS;~vUsB!9$||kRljNX1((KpFR&u9ev@2r5cjFa=M8)T0|ePlm20fq zCTM8HS&Ojs? zPo_iuv=wa+gjZO7%r`>*j-cui_RraoP1@}`{#J0NTlU8?wtu@7OVG9BFFlsY#7K?) zr4DMyF=0Gu;H!9wx-cUVGK|Vurss9xguCuoe=2U#doAVnrkeh+3fhc8WPw2()o?^G z)zQ+J0}MQkV;tcSF%eqYTv>uMs8-?{e3wJXoIBe;Ps0oBSAye< z*jUF)G}Ly=)0<4kEFE8`&-7TN=d=~;$tHTMNUPs4@J)P+9NlMT@-#(66WFg16<%^# zjpy+lh2ZZBI!jpFBg0`GxS%M;Bg4I7^4AT#f$!1noX}hpbjWZe>9=TK?M+>ZVSixY z?-h~OD~4UojJIee4L=l|G3<|S?&kuaK&=}7fw5!Q@QmLXtI$e|Tj_L?NrU117UEak z@f)L>T_U49G9r%c4&>LwHcK$0X#ALRkxa+AeTJ1u`c(nX4x5-Ul`qQrh8+FkeRiU99E5M@!tmiN9CwmN+pl+ zgpPLwcXZfkP8#()3v~w4vEDvA5O(P#)Dg6!#jSB`8yk7LVb0)BFtzIpxKssF&y%a$(X!iXM5J7kGNNS|NbGBfPbxT8<@2Vk9BI;sv0Yw0C(xuy6P>5B;R*7s zhEz)p0hFMwM~As}Jy%iz?V8k%ke+~?wOk2YBZi!6$T&4YC6TI|uu2}&~W zh)vIIWU!J+3_Bf3=d|T_m1_~E`BK2|#K_J7L$L51dcW`-IwE*`@{|tVx|~Kw4uq9p zryDX|38qsp=b&FLewnGs3}(nDNP?DUB4*0E*hz)tOm+OIA*-`$C69KCbeT;)>Ik|U z3F{Kz0XV-cZwpH0O@=f}3q6F)zt+(%wXju}Rw|Q$$pKd}R3#`#j}28PE|r35vHv(x z_axn?pzXIYg@IZY7_w04(Upp2OoAaFi5(<5VfT2=x9f5ik8%ZH7zO{4&L})y+%xtL z*Cy@Q-jms3aeN(XqYD;~;E4r``F=7)At8}7$Ck|t+b1KP7tiy8rOjw8S-`cT*FGz< zU4h;!D7KoD=*gtoS1|{(++y)_1Ur7{>?G^_TpOKBwBl*p^2txOV0g0g6S0U{#Hi9C zxNMZ7+ zsv~)#W`Oh#Pa|2Bu~`_rb+6-|k=+V(#cq>EUQ02`c<0iNqJ*FjcD+g`#qw?q+{>jA z7cgPYTRgn5-pLMUnk_30UN(|w@@Y2jiWZg3)$(_Po;y0q*kJPRvcJ9jnxUbgYFQ)e zG+CQJc@=dqWW8KO?JBx=Ez z26VZMz&tM&?OZU2ms*`FWL=>`7H?yw6=W#N&GW}gU3z$x8VJAi4DU*J#dwdB=m?q& z1I_`>kxCaHT7$9mM+XP;W$PK&~5MI!XxX3J--%#yr|EKj=&Hn2RPf2=_*Mp;|M_*rDf8Qk^UE(Q&M&{K z0OQ7~?=pPXIHnHud`{roHjY#CO>b^FjET*InA}`;7*o|_ntDuco_iSnC!Kj_@;Q}j z0=IDOn^A=u_|4`<&UF)};L|vhEt5DOXTvPa=C3NL)yv?+90d5=$hu1YHlanWFHdpx z3f8?kx32Xlf@PRH9^X8Q#Vj1fx%^PodIX&A#~-!U|8Y48o=lINOR>nIb~b)Nwm)aR;?_ zC#K z$MFiDaI_zGtn+F?`>$dbcGJ?-FZN(B<(h&+_!zFDJeLwLSL5Tf%zcH@HS9S9+7Jct z5hof}XlT=TL}xKuQ?*S!E2}u<`mu~z9_PlYY1ByGnB`#!`C963aFjZ3?znkJa8szF zp`z}V9Bw@TKTCHxrAf!IZ%f@RgSfY$B8UAsJQ%8wP~|Zk+|p1nh(|+}4V6_#@K_Fi zeE^0pJOC}E`NF5~#|&rW;~be^hvVzM>`mg6kah%LX{kHph>$}rqzzzpNcV-EanCs8 z@{RlJp3RRt{QxdGhUd35RJPQ;n8!qe)>8L1=S5ll5MJJo@hx@V&NmOhS3ZbWLwd7n zZqRdhjSi$xROLXhNTY14->~L1e4wX7y z=0A34*S9(I5SJ=7n>M<$43QG6#$H>awK!+?&!~AHGwG82GY9ptj88?WK00}mBGj@N z)kH#-vlRw&`1P6r)UH+VBRgI4T#JMHe<$i)1iz!4UN|9g#Em zS}(H-YYpHWZ`_>!(>NtZqu{{Mj+T0vtHf1%s+W13g|2=KZ*Litww%m&)>~XykG;=k z?}F!6v*KJeyk6SfpHBWf>9D2F$eE>56=$zyd;{KL&2RZv3%?^gevd`Gungf3Sb}%S zqkqJ9{E6)RK7H_AB5(-5q1MLnu5GfE^ODF%c`JD(qwY7VhIv}fF8G0qOlH|Am-A!^ zjXF_gdL;u@az1%lG4|E6RF<*N1(e9o8n^%QLVs0qd#zxr!ueKIt|DySSGam_h(cF5 z_#%AXgGNA6*bPN>niyW~qN3V-&vhst9<8ztem3QE1OTOldQ%z2;ew{0P<%M?h+J4N zt8%iMnFV#eLFwGJ+(r+M6*<}DAZII$HjK}D`KbFoEhm@Pi#cpjcX-4b?khFi8hbb$ zV~ui*xsGGhORs1CnWVi(3p6^1X%2*cx+1kWjl?&TlwwL99+i4LCKLG8Y!VL16vwQ} zB;0u3tSqTeE2PgVC)AcXCgI=4yo*O^lq!`7@w>=zD%?XA`Z&`YvPP*PC$UjpTrd4D zWRrO<4$6+Xha~N&&-OGVJ6W~I3!4w1mRkQ{uu;KrgG!U`KAmyfzsct6z#B0ekTh5 ziXZCK>avhNvIqtvV7;7G1cnI(sU~<*aXz_+(X5PnzL(?6rcZdDjN|$yVX0xeks3H+UwA|5 z1kvF3$Z?~=fax+(#|;D53AHH@3pdf=Dx^}8A}luCU%T?8H(ql$wT&dYQg4O(tVsrHf3x^Y6mA^%8 zrZ>pbE6mYroMGMBN!St=`Am(KAILTX>^bQ4jj|zSGEm1X1RA8SLR@r-P;-7hBz~+07brv&lu)(Kpj5hCB{w)9i literal 0 HcmV?d00001 diff --git a/target/classes/de/tilman/transactions/Service$StatsServlet.class b/target/classes/de/tilman/transactions/Service$StatsServlet.class new file mode 100755 index 0000000000000000000000000000000000000000..9dd6a8afcef2b17ac9daf87b417a82c68506a5fe GIT binary patch literal 1911 zcmah}+jiSj5Z&WTyOLV+~39lI*!mf|!i*txiM(-5aF*M}4PkO&mXNXKpX z6#4@^vld-6ec+MB;t%)|-Y9bm57N<@nKRn6XV3ZL@5jFaxPq??BnXRLX(`(| z6t1Ow;Rd3kY|jm>mh|u09Xa1pLIrx`NM#^JnEOWD6Gv7MnXCh)de$bt;uu1XUAA!A z(hoS(okpENHwdR{oK^`}wT07{>7~COJgDG@B|@evl-Lu2WH8MkXzFnY=TN@qIMS~Y z#?*lw%wHy)A9hS*;v#hHvhCVxg|Jl^6+Fy807J1&NY%Wq90y_Ago#sGByq;XB+e3& zg<@NKUNVuz1YxRayK<|4xF`KxvFC8X(@n3#R0$@G_pvdh>mpQ!0g0=6t~Fd@y6bI7 zMc64c|Gz~$^1HqaRCQ!n(BqcLs;)A-cGQu*P#Ol#zo3G+`6odJ-XxsXFf7}%8n;gz z8O$>uN**az&Y@H790)&<>RMlYU0IsI0tyB$5*9{P5J59hM2RrT8MHE_t9HNdF|B7K z3M@ys`&LW&w!6<&==5b16)T5DjI~eGYSjLKhYlI7< zml#&-u+n1^`YZ7V4NBQnJ%_<@}`Mf|MIx*d0~ZyA8DCzaip3f(Q_@n zjMPIIJt^@B@GN_MUHm|Ve7UifI^W(By|8QpJTWKge?~P1J|z@~=;cL1cB7qdn;Wb|8*fz%N>kLc(z;}{m-(UnJdr}Q&s z7N@Tsqnf~P$UpsjgpYniI(LRcHu$-zktLy#&FK=Uh78q_r!~yd2F}qYR;j_-z7ZlV zMgKiPTE`Y{bLor)+xUbr&Z3MRv^eK3TP-A>;3`rE$iT9J1p{~V=iMiK=y_{`t;7jF T<6{YYjxTu4aul(6zXbgQd`be> literal 0 HcmV?d00001 diff --git a/target/classes/de/tilman/transactions/Service.class b/target/classes/de/tilman/transactions/Service.class new file mode 100755 index 0000000000000000000000000000000000000000..a0884f8e146bb6271217900bd5019c761ce99287 GIT binary patch literal 7590 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 UI%z!3XMxYld^((amQNS*f0g!4u>b%7 literal 0 HcmV?d00001 diff --git a/target/classes/de/tilman/transactions/Transaktion.class b/target/classes/de/tilman/transactions/Transaktion.class new file mode 100755 index 0000000000000000000000000000000000000000..42502a0c2b4ed4e1e2d43cef91447ee2cbd74763 GIT binary patch literal 1194 zcmbu7&2G~`5Xb-P#7>jiZE2l?n|{zxLh624;tKQt6{1pA5UqOOBv!I*>`0EoQ}7^M zIYgB>@Blm%VrCMh6;$ehMDon+?#%q=zx(U=kDmZu;;;luq27t3-1HNjMtP>wp>F49 zkPf2@39dOPp{THQrN8K?uhVYyv2_)zzr*E)~8gUrMV-poJK3B}8kBq@EKXD01Zg5A;iD518K%@H9+$5ey1+*Ukn_p;cu zMk)0y>Cv#SyHv<|ZBmmTDI7IV?gyDJ-&Xs#^~vs~Lh;?86IW1x?_vp6g+g=pvJ8dC zE^IjL1ujaMW3T3-JXzat;lks!Ef))zXK&lZA{>RqQy|!$r4#ompr;v%!wss#S({D(pN00E0(k+Tc8YLrtdOE-(XQb&7HeV?6y%CoRBHEA$WGV+&P0 z$10xDxet@-*r65vHH2D;$J~~9OwLm^_)Snv_L$lhkGUP8ZcM4aPG|PR+Wtmh2Trwg zgBQZPd&{^WH3O=+Mr1YN`7GT2jK`nx_)?R3e14;n>+_uok1u4*;|m!p>GNx)EY@>x zN|sQ}dtPYmtsex%s!d?GNEI1)lZtH#&e7!X4961)md6ta#_^;z%i~FFmdBIUHZ|R+ H$il%NeGt?Y literal 0 HcmV?d00001 diff --git a/target/classes/org/example/HelloServlet.class b/target/classes/org/example/HelloServlet.class new file mode 100755 index 0000000000000000000000000000000000000000..8180b85b3ab429d92b3a458426c75e52c32cefd7 GIT binary patch literal 1323 zcmah}TT|0O6#ljp651%XTt!3>fdYjH-c3O+a;bLIp$v|`1-et>gd`?grv3_li!U(M z8J``0l;hbXVrD@5vbS^geBb%b+5P$J>vsT4c&Q-8Fy#7moj1*6&*u6Lw{5q|{S%uD z1!;!S59W#4)Pv|qKN7;zcW8)x7`jT9V~G`pj>617Lwdul@eDf9t)UZL3_TUg;jbFU z2i)H?4{XkmuegV%y>I%K+{cG$abyJy!Lq^!-sSk&+?l zKhv;^HF^oA=W&NT=PxT&qyX=XHc&YnU25}GqKN;A-n zER9;^K=T#arEwKK6y#dyl|l}^VW7`skpOGOe18jrDHL<~(ZWqyv@lK|#^focqvbag z-{lw1aCa`$|=^#=P!u?;t2v(2{K2ZBLuoiD@kfB0*grzEH<$f5?#YK McET*n2^s(AiSy$jUlIe^+3pqePkVQDUYn0?N>c6to2GLh3&|#c+Zepb$wT^G4y3~ zWd>~{sB!~+=r@r>iea$m`ust&Ug2WLu6UebxEMILSGI+#_HCmkYi`JJx!9Xlfda)8 z7;Lmk4vj2Wy9K{r4$<;^B99J zv3cn5hIGlIW0+wiis}Z|_QNxej!}kL<>&-&$2>ceMuuTr@c%O>;FaRP9f%IVhYm?7YSh_@Fn-<&QXJ^I@Y5qxw3+vH8F>IhJN~_ByHKG zI%`=~Gm~wqY= zrCaB#mNFa2VnIjlT(Qmpm{?TQ^@hUqd>u;+6Wvm4H_L#9cXhnOFyDPf^_J52xug1H zlB(Zl7^NIGnnF-bIzEQ0l+NoA3M$%%CO*Q))Of;alVF(X`Sq!w4CJw5;uc7t2Gutn zi>fN{6Q!Y)v<0Cl(RXQ3Ax;e%VriKN!TvI^c81)q$7hLI-d zA&g=gV>C?}EMq((v=#?y6QYn<#qEgX3fAxm5mB~Ju^wf-g3qu4jSzHvj!nw_4*BT^ zXJJ#PQR&BBY_;>z2xL3T#-UFY%-k#7+Z&qu@fi1ui?6`;j`6UCM~f}&(Eo0yU>U*% mCW+q^F`c2eS^Arc_-0}#Ji${sGe8-AgKsGm!*{e#;Mu>4D$8F0 literal 0 HcmV?d00001