Yes but the query joins two entities. So there is no type for that data in my table which holds all fields. So for just displaying hardcoded data for analyzing this is exploding the work. But yeah in the end I did that by defining a new kind of type with combined fields and filled the records with values for these fields:
private ConfigurableFilterDataProvider<Record, Void, Condition> buildDataProviderMock() {
Field<?>[] fields = {
Tables.PROJECT.NAME,
Tables.PROJECT.PROJECT_NO,
Tables.PROJECT.YEAR,
Tables.PROJECT.USER_ID,
Tables.PROJECT.PLANNED_START_DATE,
Tables.PROJECT.PLANNED_END_DATE,
Tables.PROJECT.ACTUAL_END_DATE,
Tables.PROJECT.COMPANY_ID,
Tables.PROJECT.CREATED_ON,
Tables.PROJECT.CREATED_BY,
Tables.PROJECT.CUSTOMER_ID,
Tables.PROJECT.STATUS,
Tables.PROJECT_SUM.SUM_INCOMING_PLANNED,
Tables.PROJECT_SUM.SUM_INCOMING_ACTUAL,
Tables.PROJECT_SUM.SUM_OUTGOING_PLANNED,
Tables.PROJECT_SUM.SUM_OUTGOING_ACTUAL,
Tables.COMPANY.SHORT_NAME,
Tables.DATEV_PARTNER.NAME.as("partner_name"),
Tables.PROJECT.CUSTOMER_PROJECT_NO,
Tables.PROJECT.CUSTOMER_CONTACT,
Tables.USER.USERNAME
};
Result<Record> customResult = dslContext.newResult(fields);
int projects = 53;
for (int i = 0; i < projects; i++) {
Random random = new Random();
int randomInt = random.nextInt(10000);
Record record = dslContext.newRecord(fields);
record.setValue(Tables.PROJECT.NAME, "Dummy-Project-" + randomInt);
record.setValue(Tables.PROJECT.PROJECT_NO, "23090" + randomInt);
record.setValue(Tables.PROJECT.YEAR, 2024);
record.setValue(Tables.PROJECT.USER_ID, 0);
record.setValue(Tables.PROJECT.PLANNED_START_DATE, LocalDate.of(2024, 1, 1));
record.setValue(Tables.PROJECT.PLANNED_END_DATE, LocalDate.of(2024, 1, 1));
record.setValue(Tables.PROJECT.ACTUAL_END_DATE, LocalDate.of(2024, 1, 1));
record.setValue(Tables.PROJECT.COMPANY_ID, 1);
record.setValue(Tables.PROJECT.CREATED_ON, LocalDateTime.of(2024, 1, 1, 0, 0));
record.setValue(Tables.PROJECT.CREATED_BY, "Dummy-user-" + randomInt);
record.setValue(Tables.PROJECT.CUSTOMER_ID, 1);
record.setValue(Tables.PROJECT.STATUS, "active");
record.setValue(Tables.PROJECT_SUM.SUM_INCOMING_PLANNED, BigDecimal.valueOf(123456));
record.setValue(Tables.PROJECT_SUM.SUM_INCOMING_ACTUAL, BigDecimal.valueOf(123456));
record.setValue(Tables.PROJECT_SUM.SUM_OUTGOING_PLANNED, BigDecimal.valueOf(123456));
record.setValue(Tables.PROJECT_SUM.SUM_OUTGOING_ACTUAL, BigDecimal.valueOf(123456));
record.setValue(Tables.COMPANY.SHORT_NAME, "HO");
record.setValue(Tables.DATEV_PARTNER.NAME.as("partner_name"), "Dummy-customer");
record.setValue(Tables.PROJECT.CUSTOMER_PROJECT_NO, "12345");
record.setValue(Tables.PROJECT.CUSTOMER_CONTACT, "Dummy-user");
record.setValue(Tables.USER.USERNAME, "Dummy-user");
customResult.add(record);
}
DataProvider<Record,Condition> dataProvider = new AbstractDataProvider<Record,Condition>() {
@Override
public boolean isInMemory() {
return false;
}
@Override
public int size(Query<Record, Condition> query) {
return customResult.size();
}
@Override
public Stream<Record> fetch(Query<Record, Condition> query) {
return customResult.stream();
}
};
return dataProvider.withConfigurableFilter();
}
It worked. At least a bit. But there are more problems: No of these filters work anymore and a for-loop over more than 50 projects I get again: Internal error Please notify the administrator. Take note of any unsaved data, and click here or press ESC to continue.
How can I (as an administrator) see the error logs. I see nothing in my terminal xO