Hallo,
ich bastel gerade an einer Funktion um zu überprüfen ob ein Objekt in eine DB eingetragen werden soll.
Die Auswahl erfolgt anhand des Timestamps bzw des Datums/Uhrzeit des Datensatzes.
Szenario:
Ich parse eine LogDatei in Objekte.
Es stehen dann Jahr, Monat, Tag und Stunde des Eintrags zur Verfügung.
Der Tag ist in 5 teile eingeteilt.
21-7
8 - 10
11 - 13
14 - 16
17 - 20
Die Objekte sollen eingetragen werden wenn sie in einen Bereich fallen der bereits abgeschlossen ist.
Soll heissen:
Wenn wir den 02.01.10 13:30 haben
dürfen alle Eintrage bis zum 02.10.10 bis 10:59 eingetragen werden da erst um 14 Uhr ein neuer Bereich beginnt.
Meine aktuelle Lösung erscheint mir etwas unhandlich und ist auch bei Monatswechseln nicht funktionsfähig ^^
ich könnte noch einen monthformatter hinzufügen und auch noch darauf prüfen aber das würde die ganze sache noch weiter aufblähen denk ich.
Ich packs aber iwie nich so wirklich eine vernünftige Lösung hier umzusetzen ... auch wenn das Problem jetz nicht so verzwickt ist.
Kann mir wer n Denkanstoss bzw. eine einfachere Lösung für mein Problem geben?
greetz skelle
edit: checkEntrytime gibt mir den Tagesabschnitt zurück in welchem sich die Uhrzeit befindet
ich bastel gerade an einer Funktion um zu überprüfen ob ein Objekt in eine DB eingetragen werden soll.
Die Auswahl erfolgt anhand des Timestamps bzw des Datums/Uhrzeit des Datensatzes.
Szenario:
Ich parse eine LogDatei in Objekte.
Es stehen dann Jahr, Monat, Tag und Stunde des Eintrags zur Verfügung.
Der Tag ist in 5 teile eingeteilt.
21-7
8 - 10
11 - 13
14 - 16
17 - 20
Die Objekte sollen eingetragen werden wenn sie in einen Bereich fallen der bereits abgeschlossen ist.
Soll heissen:
Wenn wir den 02.01.10 13:30 haben
dürfen alle Eintrage bis zum 02.10.10 bis 10:59 eingetragen werden da erst um 14 Uhr ein neuer Bereich beginnt.
Meine aktuelle Lösung erscheint mir etwas unhandlich und ist auch bei Monatswechseln nicht funktionsfähig ^^
Java:
//Überprüfung ob der Eintrag bereits aufgenommen werden soll
int dayEntry, dayNow,hourEntry, hourNow;
SimpleDateFormat sdf = new SimpleDateFormat("yymmddHH");
Date entry = sdf.parse(date + String.valueOf(time));
Date now = new Date(System.currentTimeMillis());
SimpleDateFormat dayFormatter = new SimpleDateFormat("dd");
SimpleDateFormat hourFormatter = new SimpleDateFormat("HH");
dayEntry = Integer.valueOf(dayFormatter.format(entry));
dayNow = Integer.valueOf(dayFormatter.format(now));
hourEntry = Integer.valueOf(hourFormatter.format(entry));
hourNow = Integer.valueOf(hourFormatter.format(now));
boolean doAdd = false;
if(dayNow > dayEntry && checkEntryTime(hourEntry) != 0)
doAdd = true;
if(dayNow == dayEntry && checkEntryTime(hourNow) > checkEntryTime(hourEntry))
doAdd = true;
if(doAdd)
this.entrys.add(new LogEntry(date, time, url, action, voId));
ich könnte noch einen monthformatter hinzufügen und auch noch darauf prüfen aber das würde die ganze sache noch weiter aufblähen denk ich.
Ich packs aber iwie nich so wirklich eine vernünftige Lösung hier umzusetzen ... auch wenn das Problem jetz nicht so verzwickt ist.
Kann mir wer n Denkanstoss bzw. eine einfachere Lösung für mein Problem geben?
greetz skelle
edit: checkEntrytime gibt mir den Tagesabschnitt zurück in welchem sich die Uhrzeit befindet
Java:
private int checkEntryTime(int hour)
{
if (hour >= 8 && hour < 11)
return 1;
if (hour >= 11 && hour < 14)
return 2;
if (hour >= 14 && hour < 17)
return 3;
if (hour >= 17 && hour < 20)
return 4;
if (hour > 20 || hour < 8)
return 0;
return -1;
}