Hallo,
ich habe folgenden Code unten. Diese Zeiteinteilung pro Woche gehört zu einem User. Ich möchte nun alle halbe Stunden nachschaun ob dieser da ist, z.B.:
27.09.2015: 08:00 - 13:00
start immer bei 07:00 und ende immer um 19:00
07:00 - 07:30 nicht da -> 0
07:30 - 08:00 nicht da -> 0
08:00 - 08:30 da -> 1
08:30 - 09:00 da -> 1
09:30 - 10:00 da -> 1
...
13:00 - 13:30 nicht da -> 0
sowas soll dann rauskommen nur für diesen User:
0 0 0 0 1 1 1 ... 1 0 0 0 1 1 1 0 ...
für andere User kommt auch sowas raus und diese möchte ich dann zusammenzählen.
Meine Frage wäre jetzt, wie ich das performant lösen könnte.
wenn ich da mit einer for- Schleife über alle Intervall darüber iteriere, braucht das ja einigermaßen, da ich bis zu 1000 solcher SchedulerContainers haben kann (z.B. 80 User mit je 12 Terminen = 960 SchedulerContainers).
Ich verwende übrigens JodaTime aber ich hab noch keine Mögl
ich habe folgenden Code unten. Diese Zeiteinteilung pro Woche gehört zu einem User. Ich möchte nun alle halbe Stunden nachschaun ob dieser da ist, z.B.:
27.09.2015: 08:00 - 13:00
start immer bei 07:00 und ende immer um 19:00
07:00 - 07:30 nicht da -> 0
07:30 - 08:00 nicht da -> 0
08:00 - 08:30 da -> 1
08:30 - 09:00 da -> 1
09:30 - 10:00 da -> 1
...
13:00 - 13:30 nicht da -> 0
sowas soll dann rauskommen nur für diesen User:
0 0 0 0 1 1 1 ... 1 0 0 0 1 1 1 0 ...
für andere User kommt auch sowas raus und diese möchte ich dann zusammenzählen.
Meine Frage wäre jetzt, wie ich das performant lösen könnte.
wenn ich da mit einer for- Schleife über alle Intervall darüber iteriere, braucht das ja einigermaßen, da ich bis zu 1000 solcher SchedulerContainers haben kann (z.B. 80 User mit je 12 Terminen = 960 SchedulerContainers).
Ich verwende übrigens JodaTime aber ich hab noch keine Mögl
Java:
final List<List<SchedulerContainer>> weekScheduler = new ArrayList<>();
weekScheduler.add(0, new ArrayList<SchedulerContainer>()); // day 1 of week
weekScheduler.add(1, new ArrayList<SchedulerContainer>()); // day 2 of week
weekScheduler.add(2, new ArrayList<SchedulerContainer>()); // day 3 of week
weekScheduler.add(3, new ArrayList<SchedulerContainer>()); // day 4 of week
weekScheduler.add(4, new ArrayList<SchedulerContainer>()); // day 5 of week
weekScheduler.add(5, new ArrayList<SchedulerContainer>()); // day 6 of week
weekScheduler.add(6, new ArrayList<SchedulerContainer>()); // day 7 of week
final SchedulerContainer sc1 = new SchedulerContainer();
sc1.setStart(formatter.parseDateTime("27.09.2015 08:00"));
sc1.setEnd(formatter.parseDateTime("27.09.2015 13:00"));
sc1.setContainerType(SchedulerContainerTypeEnum.SERVICE);
sc1.setRepeatable(true);
weekScheduler.get(1).add(sc1);
final SchedulerContainer sc2 = new SchedulerContainer();
sc2.setStart(formatter.parseDateTime("29.09.2015 11:00"));
sc2.setEnd(formatter.parseDateTime("29.09.2015 17:00"));
sc2.setContainerType(SchedulerContainerTypeEnum.SERVICE);
sc2.setRepeatable(true);
weekScheduler.get(3).add(sc1);