further progressing, not yet finished

This commit is contained in:
Jörg Henke
2023-06-23 14:44:54 +02:00
parent 6452c003c5
commit 059dcadb01
3 changed files with 76 additions and 44 deletions

View File

@ -0,0 +1,74 @@
package de.jottyfan.timetrack.modules.calendar;
import static de.jottyfan.timetrack.db.done.Tables.T_DONE;
import static de.jottyfan.timetrack.db.done.Tables.T_PROJECT;
import static de.jottyfan.timetrack.db.done.Tables.T_MODULE;
import static de.jottyfan.timetrack.db.done.Tables.T_JOB;
import static de.jottyfan.timetrack.db.done.Tables.T_BILLING;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jooq.DSLContext;
import org.jooq.Record7;
import org.jooq.SelectJoinStep;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
*
* @author henkej
*
*/
@Repository
public class CalendarDoneRepository {
private static final Logger LOGGER = LogManager.getLogger(CalendarDoneRepository.class);
@Autowired
private DSLContext jooq;
/**
* get all already recorded dates from the data base
*
* @return the event beans; an empty list at least
*/
public List<EventBean> getAllDates() {
SelectJoinStep<Record7<Integer, LocalDateTime, LocalDateTime, String, String, String, String>> sql = jooq
// @formatter:off
.select(T_DONE.PK,
T_DONE.TIME_FROM,
T_DONE.TIME_UNTIL,
T_PROJECT.NAME,
T_MODULE.NAME,
T_JOB.NAME,
T_BILLING.NAME)
.from(T_DONE)
.leftJoin(T_PROJECT).on(T_PROJECT.PK.eq(T_DONE.FK_PROJECT))
.leftJoin(T_MODULE).on(T_MODULE.PK.eq(T_DONE.FK_MODULE))
.leftJoin(T_JOB).on(T_JOB.PK.eq(T_DONE.FK_JOB))
.leftJoin(T_BILLING).on(T_BILLING.PK.eq(T_DONE.FK_BILLING));
// @formatter:on
LOGGER.trace(sql.toString());
List<EventBean> list = new ArrayList<>();
for (Record7<Integer, LocalDateTime, LocalDateTime, String, String, String, String> r : sql.fetch()) {
String id = String.valueOf(r.get(T_DONE.PK));
String job = r.get(T_JOB.NAME);
String project = r.get(T_PROJECT.NAME);
String module = r.get(T_MODULE.NAME);
String billing = r.get(T_BILLING.NAME);
LocalDateTime start = r.get(T_DONE.TIME_FROM);
LocalDateTime end = r.get(T_DONE.TIME_UNTIL);
StringBuilder buf = new StringBuilder();
buf.append(billing).append(billing == null ? "" : "; ");
buf.append(job).append(job == null ? "" : " - ");
buf.append(module).append(module == null ? "" : ": ");
buf.append(project);
String title = buf.toString();
list.add(EventBean.ofEvent(id, title, start, end));
}
return list;
}
}

View File

@ -18,7 +18,7 @@ import com.google.gson.GsonBuilder;
public class CalendarService { public class CalendarService {
@Autowired @Autowired
private DummyRepository dummyRepository; private CalendarDoneRepository repository;
// TODO: implement a davical database reader as a repository // TODO: implement a davical database reader as a repository
// TODO: implement a caldav client as repository // TODO: implement a caldav client as repository
@ -28,7 +28,7 @@ public class CalendarService {
public String getJsonEvents() { public String getJsonEvents() {
Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, new LocalDateAdapter()) Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, new LocalDateAdapter())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter()).create(); .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter()).create();
return gson.toJson(dummyRepository.getExamples()); return gson.toJson(repository.getAllDates());
} }
} }

View File

@ -1,42 +0,0 @@
package de.jottyfan.timetrack.modules.calendar;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Repository;
/**
*
* @author jotty
*
*/
@Repository
public class DummyRepository {
/**
* get example dates
*
* @return the example dates
*/
public List<EventBean> getExamples() {
List<EventBean> list = new ArrayList<>();
EventBean event1 = EventBean.ofAllDayEvent("e1", "all day event", LocalDate.of(2023, 5, 8));
event1.setBackgroundColor("darkcyan");
list.add(event1);
EventBean event2 = EventBean.ofEvent("e2", "overlapping", LocalDate.of(2023, 5, 8).atTime(10, 0),
LocalDate.of(2023, 5, 9).atTime(10, 0));
list.add(event2);
EventBean event3 = EventBean.ofEvent("e3", "developing", LocalDate.of(2023, 5, 10).atTime(8, 0),
LocalDate.of(2023, 5, 10).atTime(10, 0));
list.add(event3);
return list;
}
}