-
Notifications
You must be signed in to change notification settings - Fork 253
Configuring user defined global entity representation
ikostenko edited this page Apr 18, 2013
·
2 revisions
It is possible to specify how entity items will be displayed in domain views of other entities that have persistent fields associated with this entity.
This is configured in the EntityMetadataConfigurationUnit
of the entity administration, and affects all views of other entities where the persistent association field is used implicitly or explicitly.
There are two options to define custom entity representation:
- Specifying one of the entity fields:
@Administration( User.class )
public class UserAdministration {
public static EntityMetadataConfigurationUnit configuration( EntityMetadataConfigurationUnitBuilder configurationBuilder ) {
return configurationBuilder.nameField( "firstname" ).build();
}
}
Given the following Discount Program entity administration...
@Administration(DiscountProgram.class)
public class DiscountProgramAdministration {
public static FieldSetConfigurationUnit listView( FieldSetConfigurationUnitBuilder fragmentBuilder ) {
return fragmentBuilder
.field( "name" ).caption( "Name" )
.field( "users" ).caption( "Customers" ).build();
}
public static FieldSetConfigurationUnit quickView( FieldSetConfigurationUnitBuilder fragmentBuilder ) {
return fragmentBuilder
.field( "name" ).caption( "Name" )
.field( "users" ).caption( "Customers" ).build();
}
public static FieldSetConfigurationUnit showView( final FieldSetConfigurationUnitBuilder fragmentBuilder ) {
return fragmentBuilder
.field( "name" ).caption( "Name" )
.field( "users" ).caption( "Customers" ).build();
}
public static FieldSetConfigurationUnit formView( final PersistentFieldSetConfigurationUnitBuilder fragmentBuilder ) {
return fragmentBuilder
.field( "name" ).caption( "Name" )
.field( "users" ).caption( "Customers" ).build();
}
public static FiltersConfigurationUnit filters( final FiltersConfigurationUnitBuilder filterBuilder ) {
return filterBuilder
.filter( "Name", "name" )
.filter( "Customers", "users" ).build();
}
}
...this will result in the following display of User entity items associated with Discount Program items:
- Specifying advanced entity representation using
org.lightadmin.core.config.domain.configuration.support.EntityNameExtractor
:
@Administration(User.class)
public class UserAdministration {
public static EntityMetadataConfigurationUnit configuration( EntityMetadataConfigurationUnitBuilder configurationBuilder ) {
return configurationBuilder.nameExtractor( userNameExtractor() ).build();
}
private static EntityNameExtractor<User> userNameExtractor() {
return new EntityNameExtractor<User>() {
@Override
public String apply( final User user ) {
return String.format("%s %s", user.getFirstname(), user.getLastname());
}
};
}
}
This will produce the following result: