Giter VIP home page Giter VIP logo

solarcsvimporter's Introduction

SolarImporter v1.2

Changelog

2012-12-28 Christian Bayer

* .../java/net/rzaw/solar/db/DatabaseProcessor.java
* Changed timestamp for daysums to be always on 0:00am to avoid duplicate daysum entries per day when using file expiry > 24h

2012-12-10 Christian Bayer

* .../java/net/rzaw/solar/db/DatabaseProcessor.java,
src/main/java/net/rzaw/solar/db/Transaction.java,
src/main/resources/create_tables.sql:
* Fixed duplicate adding of records when files change, now uses mysql 'replace into' to avoid duplicates

2012-12-02 Christian Bayer

* .../java/net/rzaw/solar/ImportChartResult.java,
src/main/java/net/rzaw/solar/Runtime.java,
.../java/net/rzaw/solar/charts/ChartProducer.java,
.../rzaw/solar/charts/RzawJDBCCategoryDataset.java,
.../net/rzaw/solar/charts/RzawJDBCXYDataset.java,
.../java/net/rzaw/solar/csvimport/CSVImporter.java,
.../java/net/rzaw/solar/csvimport/SumEntry.java,
.../java/net/rzaw/solar/db/DatabaseProcessor.java,
src/main/java/net/rzaw/solar/db/Transaction.java:
* Support for 36h delay before marking a file as "done" - proper transaction isolation and closing using transaction callable

2012-11-21 Christian Bayer

* pom.xml, src/main/java/net/rzaw/solar/Runtime.java,
.../java/net/rzaw/solar/db/DatabaseProcessor.java,
src/main/resources/log4j.properties:
* Use ThreadPoolExecutor to execute tasks: Use c3p0 pooled jdbc connections

2012-11-20 Christian Bayer

* src/main/java/net/rzaw/solar/Runtime.java,
.../java/net/rzaw/solar/charts/ChartProducer.java,
.../java/net/rzaw/solar/db/DatabaseProcessor.java: * Charts refined, removed
captions everywhere, correct legend
* split importing CSV data and producing charts up into seperate tasks that depend from the installation and can be executed in parallel per installation
* Use ExecutorService for executing all tasks in parallel
* cleanup, removed lots of obsolete db queries and disabled code

2012-11-18 Christian Bayer

* src/main/java/net/rzaw/solar/Runtime.java,
.../java/net/rzaw/solar/charts/ChartProducer.java,
.../rzaw/solar/charts/RzawJDBCCategoryDataset.java,
.../net/rzaw/solar/charts/RzawJDBCXYDataset.java,
.../java/net/rzaw/solar/csvimport/CSVImporter.java,
.../java/net/rzaw/solar/db/DatabaseProcessor.java,
src/main/resources/log4j.properties:
* Charting support for 4 base queries
* Better logging added all over the place, now also writes Errors to log ;)
* usual cleanup

2012-11-14 Christian Bayer

* pom.xml, src/main/java/net/rzaw/solar/Runtime.java,
src/main/java/net/rzaw/solar/csvimport/CSVImporter.java,
src/main/resources/solarcsvimporter.bat:
* increased default memory footprint for JVM
* setting correct version 1.2-SNAPSHOT in pom
* disabled charting for now
* solarcsvimporter-1: Joda date parsing fails when importing
* always use local time

2012-10-21 Christian Bayer

* README.md, pom.xml, src/main/assembly/assembly.xml,
src/main/java/net/rzaw/solar/Runtime.java,
src/main/java/net/rzaw/solar/StringFormatter.java,
.../java/net/rzaw/solar/charts/ChartProducer.java,
.../rzaw/solar/charts/RzawJDBCCategoryDataset.java,
.../net/rzaw/solar/charts/RzawJDBCXYDataset.java,
.../java/net/rzaw/solar/csvimport/CSVImporter.java,
.../rzaw/solar/csvimport/InstallationEntry.java,
.../java/net/rzaw/solar/csvimport/SumEntry.java,
.../java/net/rzaw/solar/db/DatabaseProcessor.java,
src/main/resources/config.properties, src/main/resources/create_tables.sql,
src/main/resources/log4j.properties, src/main/resources/solarcsvimporter.bat,
.../net/rzaw/solar/csvimport/_CSVImporter.java,
src/test/resources/min110527.csv, src/test/resources/min110901.csv,
src/test/resources/min120209.csv, src/test/resources/minEmpty.csv:
* Initial import, v1.2-SNAPSHOT

Bugfix falls leere Strings/Felder in verbrauch_daysum_cols und verbrauch_sum_cols stehen, Integer-ParseException verhindert.

SolarImporter v1.1

Du musst die datenbank nochmal neu erstellen, oder du fuegst die spalten hinzu. Ist aber eine frickelei, hau die alte weg und importierer alle CSVs neu. Heb dir aber die alte config-datei auf, sonst musste da alles neu eingeben. Die Verbrauchergeschichte funktioniert folgendermassen:

In der Anlagentabelle gibst du Spaltennummern, die als Verbrauch betrachtet werden sollen - auch dafuer gibts wieder daySum und Pac, also momentanverbrauch und summenwert. Allerdings kann man natuerlich nicht den Spaltenenamen in die Anlagentabelle schreiben, denn der ist ja im Zweifelsfall einfach wieder Pac/Daysum. Also musst du den index der spalte angeben, beginnend mit 1. In deiner angehangenen Tabelle vom RZ waeren das die folgenden:

verbrauch_daysum_cols: 5 verbrauch_sum_cols: 4

Die logik versteht auch durch kommas getrennte werte, wenn du also mehr werte in der leistungsberechnung ignorieren und dafuer als verbrauch zusammenaddieren willst, dann einfach durch komma trennen und in die db. Ich weiss allerdings nicht, ob es leerzeichen zwischen komma und zahl versteht, also im Zweifelsfall eher "1,4" schreiben als "1, 4".

SolarImporter v1.0

So, wie versprochen der Solarcsvimporter. Ich habe es der einfachheit halber mal angehangen, ich werde irgendwann den Quelltext auf meinen GitHub-Account hochladen. Bis dahin gibts direkten support Ist viel Text, aber alles einfache dinge, keine Angst.

Folgendes musst du tun:
1. Java herunterladen, falls nicht schon vorhanden: http://javadl.sun.com/webapps/download/AutoDL?BundleId=58124

2.solarcsvimporter.zip auspacken und in solarcsvimporter.bat den Pfad von Java anpassen (gleich die zweite Zeile).

3. Probieren, ob das programm laeuft: Auf der kommandozeile nach c:\ gehen (NICHT in das verzeichnis, in dem du die zip-datei ausgepackt hast!!) und die bat-datei ins kommandozeilenfenster ziehen. Damit kopiert windows den kompletten pfad der datei in die kommandozeile. Enter druecken. Da wir nicht im Verzeichnis sind, in dem das programm ausgepackt wurde (wenn doch, und alles klappt, sieht man naemlich gar nichts, weil das programm sich sofort mit der Datenbank verbinden will - die es aber bei dir unter der addresse sicher nicht gibt!), kann es seine config-datei nicht finden und meckert:

Exception in thread "main" java.io.FileNotFoundException: config.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:120)
at com.google.common.io.Files$1.getInput(Files.java:100)
at com.google.common.io.Files$1.getInput(Files.java:97)
at net.rzaw.solar.CSVImporter.main(CSVImporter.java:736)

Wenn genau das kommt, ist alles in Ordnung, das Programm konnte von Java ausgefuert werden, es kann alle Bibliotheken finden und java geht auch. JEDE ANDERE MELDUNG IST SCHLECHT! In dem Fall ist Java nicht richtig installiert, der pfad stimmt nicht oder meine bat-datei ist scheisse (konnte sie hier nicht testen).

4. Konfigurationsdatei anpassen, Mysql passwort und benutzernamen setzen, (lieber nicht root), hostname etc. setzen. Eventuell mit Wordpad oder einem richtigen Editor wie Ultraedit bearbeiten, weil die Datei vermutlich Unix- Zeilenende hat (erkennt man in Notepad daran, dass alles in einer Zeile steht. Nicht schoen.) Vorsicht am ende der Zeile, beispielsweise vom Passwort. Ich hatte dort noch ein leerzeichen stehen. Das wird eingelesen und als password verwendet (und funktioniert dann natuerlich nicht, hat mich 2 Tage gekostet, bis ich das rausbekommen hab).

5. Datenbank neu anlegen. Ich habe noch einige Aenderungen am Schema vorgenommen, sollte aber alles selbsterklaerend sein. Die create_tables.sql- Datei enthaelt auch die drop-Anweisungen fuer die alten tabellen, also vorsicht wenn du das in 2 Jahren nochmal ausfuehren solltest - er haut etwaige alte Tabellen dann weg! Am besten gleich nach dem ausfuehren auskommentieren.

6. (Endlich) in das Verzeichnis wechseln, in dem du das zip-file ausgepackt hast. dort nochmal solarimporter.bat ausfuehren. Jetzt sollte das hier kommen:

22:40:40,872 [main] INFO net.rzaw.solar.CSVImporter - Starting up CSVImporter, processing the following directories: []

Das sagt dir, dass er sich erfolgreich mit der Datenbank verbunden hat, aber in der Tabelle anlage keine verzeichnisse zum verarbeiten aufgefunden hat: [].

7. Du ahnst es sicher schon: Verzeichnisse in die Tabelle anlage schreiben. Einfach den vollstaendigen Pfad in verzeichnis schreiben und aktiv auf "true" setzen. Dann wird beim naechsten lauf das verzeichnis verarbeitet:

22:40:40,872 [main] INFO net.rzaw.solar.CSVImporter - Starting up CSVImporter, processing the following directories: [/home/cbayer/projects/computer/solar/solarcsvimporter/src/test/resources] 22:40:40,875 [main] INFO net.rzaw.solar.CSVImporter - file min110901.csv is already done, not processing again. 22:40:40,877 [main] INFO net.rzaw.solar.CSVImporter - file min110527.csv is already done, not processing again.

Bei mir hat er die Dateien schonmal verarbeitet, sie sind als fertig markiert. Bei dir duerfte er etwas mehr zu tun haben.

8. Christian antworten, welche Fehlermeldungen aufgetreten sind. Ich freue mich auf bug-reports Java-Fehler heissen Exception. Wann immer eine auftritt, mir ne mail schreiben mit dem kompletten Stacktrace: Also nicht nur die Meldung sondern alle Zeilen, die danach noch kommen: (oder du schickst mir eben gleich das ganze logfile)

Exception in thread "main" java.io.FileNotFoundException: config.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:120)
at com.google.common.io.Files$1.getInput(Files.java:100)
at com.google.common.io.Files$1.getInput(Files.java:97)
at net.rzaw.solar.CSVImporter.main(CSVImporter.java:736)

Das Ding schreibt automatisch logfiles in ein verzeichnis log im projektverzeichnis. Diese Dateien werden auch automatisch gewechselt, morgen wird die datei von heute umbenannt in solarimporter-20120902.log usw.

solarcsvimporter's People

Contributors

chrbayer84 avatar

Watchers

 avatar

solarcsvimporter's Issues

Joda date parsing fails when importing

Exception in thread "main"
java.lang.IllegalArgumentException: Cannot parse "25.03.12 02:55:00": Illegal instant due to time zone offset transition (Europe/Berlin) at
org.joda.time.format.DateTimeParserBucket.computeMillis(DateTimeParserBucket.java:390) at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:849) at
net.rzaw.solar.csvimport.CSVImporter.calcSumOverall(CSVImporter.java:352) at
net.rzaw.solar.csvimport.CSVImporter.calculateSumSameColumns(CSVImporter.java:337) at
net.rzaw.solar.csvimport.CSVImporter.processDirectory(CSVImporter.java:137) at
net.rzaw.solar.Runtime.main(Runtime.java:45)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.