kjell1906
(Kjell Dirdal)
September 27, 2016, 9:06am
#1
How can I group generated columns in Grouptable?
I have this example but it don’t work. It shows as a regular column but is not capable of grouping
certificatesGroupTable.addGeneratedColumn(“year”, new GroupTable.ColumnGenerator(){
@Override
public Component generateCell(Certificate entity) {
Label label = componentsFactory.createComponent(Label.class);
Calendar cal = Calendar.getInstance();
cal.setTime(entity.getCreatedDate());
label.setValue(cal.get(Calendar.YEAR));
return label;
}
});
1 Like
firstova
(Natalia Firstova)
September 27, 2016, 12:23pm
#2
Hi,
You can’t group a table by a column which is not connected to the entity field.
If you want to group your entities by the creation date, you should use the existing field ‘createTs’. For example, if you want to group entities by the creation year, you should add a column “year” to your table in the XML file.
<column id="year"/>
Then you should write down the following code in the entity class:
private LocalDate asLocalDate(Date date) {
return date instanceof java.sql.Date ? ((java.sql.Date) date).toLocalDate()
: date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
@MetaProperty
public String getYear() {
LocalDate localDate = asLocalDate(getCreateTs());
return String.format("%d",localDate.getYear());
}
1 Like
kjell1906
(Kjell Dirdal)
September 27, 2016, 12:50pm
#3
Ah. That solved the problem.
Is it possible to force the group to be expanded rater than collapsed by default?
Do you have an example of how to aggregate column values in a group table, if possible?
firstova
(Natalia Firstova)
September 27, 2016, 1:09pm
#4
Could you, please, create a new topic for each of your questions? It would be helpful to other users with the same questions.