Apply DateColumnFilter [message #1763157] |
Fri, 12 May 2017 04:25  |
Eclipse User |
|
|
|
Hello,
I got a problem with the ColumnUserFilterState, that seems to not work with Dates.
I have a Column "SollAnColumn" with Dates in it and on this column I want to set a filter whitch excludes all rows of the Table with their Date outside of the given Range (Date fromDate, date toDate).
I would be very grateful for your help.
Here is a Snippet of the Column, where I want to apply a filter:
@Order(30.0)
public class SollAnColumn extends AbstractCockpitCisDateTimeColumn {
@Override
public int compareTableRows(ITableRow r1, ITableRow r2) {
return compareRowZeitBySort(r1, r2, SortMode.SOLL);
}
@Override
protected void execDecorateCell(Cell cell, ITableRow row) throws ProcessingException {
super.execDecorateCell(cell, row);
ZugfahrtAmBetriebspunktDTO model = (ZugfahrtAmBetriebspunktDTO) row.getCellValue(getZugfahrtAmBetriebspunktModelColumn().getColumnIndex());
if (!Objects.equals(model.getZugfahrtPunkt().getAnZeit().getSoll(), cell.getValue())) {
cell.setFont(ITALIC_FONT);
} else {
cell.setFont(NORMAL_FONT);
}
}
}
The Abstract Column with the correct Date Format:
public class AbstractCockpitCisDateTimeColumn extends AbstractDateColumn {
private static final String DATE_TIME_FORMAT = "HH:mm dd.MM.yyyy";
private static final String TIME_FORMAT = "HH:mm";
@Override
protected Date execParseValue(ITableRow row, Object rawValue) {
CisDateTime timeValue;
if (rawValue instanceof CisDateTime) {
timeValue = (CisDateTime) rawValue;
} else {
timeValue = CisDateTime.createCisDateTime((Date) rawValue);
}
return super.execParseValue(row, timeValue.getDate());
}
@Override
protected void execDecorateCell(Cell cell, ITableRow row) throws ProcessingException {
super.execDecorateCell(cell, row);
CisDateTime value = CisDateTime.createCisDateTime(getValue(row));
cell.setText(formatCisDateTime(value));
}
private String formatCisDateTime(CisDateTime value) {
if (value == null) {
return null;
}
int today = new DateTime().getDayOfYear();
if (value.getDateTime().getDayOfYear() != today) {
return value.toString(DATE_TIME_FORMAT);
}
return value.toString(TIME_FORMAT);
}
}
The Filtermananger applys when RadioButtonValue has changed:
@Order(10.0)
public class ZeitraumStundenGroup extends AbstractZugfahrtPunktZeitraumGroup {
@Override
protected boolean getConfiguredEnabled() {
return true;
}
@Override
protected void execChangedValue() {
Zeitraum zeitraum = getValue();
ZugfahrtPunktTableColumnFilterManager filterManager = getFilterManager();
if (filterManager != null) {
filterManager.applyCisDateComparableFilter(getTable().getSollAnColumn(), zeitraum);
}
}
}
The TableFilterManager how should apply the Filter to the Table, but doesnt seem to work:
public class ZugfahrtPunktTableColumnFilterManager extends TableUserFilterManager {
private AbstractTable table;
public ZugfahrtPunktTableColumnFilterManager(AbstractTable table) {
super(table);
this.table = table;
}
public void applyCisDateComparableFilter(IColumn filterCol, Zeitraum zeitraum) {
TableUserFilterManager filterManager = table.getUserFilterManager();
DateTimeColumnUserFilterState comparableFilter = (DateTimeColumnUserFilterState) getFilter(filterCol);
if (comparableFilter == null) {
comparableFilter = new DateTimeColumnUserFilterState(filterCol);
}
comparableFilter.setDateFrom(zeitraum.getZeitVon().getDate());
comparableFilter.setDateTo(zeitraum.getZeitBis().getDate());
if (filterManager.getFilter(filterCol.getColumnId()) != null) {
filterManager.removeFilterByKey(filterCol.getColumnId());
}
filterManager.addFilter(comparableFilter);
}
}
If you need more information just ask.
best regards,
Joshi
|
|
|
|
Re: Apply DateColumnFilter [message #1763981 is a reply to message #1763693] |
Tue, 23 May 2017 11:19  |
Eclipse User |
|
|
|
Hei Claudio
Alriight, i thought this is how you should define a filter in Java scout specific.
But you were right, there is no need for those TableUserFilterManager in this case.
Thank you for your help.
Joshi
|
|
|
Powered by
FUDForum. Page generated in 0.06058 seconds