We will add View provider that will show Employees from Database
First create Group of columns for Employee
public class EmployeesGroup extends DBColumnsGroupReflexive{
/** Localization path */
public static final String locPath = "ui/lists/employees";
/** Id of group */
public static final String ID = EmployeesGroup.class.getSimpleName();
static LocPair<StringLocValue> LOC_PAIR = new LocPairImpl<StringLocValue>(locPath,ID);
/** DB mapping */
public static final SJoinable mapping = new STable(EMPDBSchema.NAME,DBTableEmployee.NAME);
/** Columns container for reflection */
public static class Columns extends DBTableEmployee.Columns{
}
}
Add provider that will show employees
public class EmployeeDBListViewProviderImpl extends AbstractRDBListViewProviderImpl {
/**
* Creates AllEmployeesDBListViewProviderImpl
* @param viewProviderParams
* @param listViewProviderParameter
*/
public EmployeeDBListViewProviderImpl(
ViewProviderParams viewProviderParams,
ViewProviderDBParams listViewProviderParameter) {
super(viewProviderParams, listViewProviderParameter);
}
private static LocKey locPrefix = new LocKeyImpl("list/empList","employeeDBList");
@Override
protected LocKey getLocPrefix() {
return locPrefix;
}
@Override
protected ViewProviderComponentToolbar setupMainToolbar(){
ViewProviderComponentToolbar toolBar = super.setupMainToolbar();
toolBar.addComponent(createShowTaskRecordsBtn());
return toolBar;
}
@Override
protected Sort setupInitSort() {
return new Sort(Arrays.asList(new SortItem(ListViewUtils.getColumnId(EmployeeGroup.ID, EmployeeGroup.Columns.SURNAME.name))));
}
/**
* Creates button to show all employees task records
* @return show employee task records button
*/
protected ToggleButtonViewProviderComponent createShowTaskRecordsBtn(){
ToggleButtonLocValue locValue = locService.localizeData(locPrefix.createChildKey("taskRecordsSubList"), session.getSettingsContext(), new ToggleButtonLocValueBuilderFactory().createBuilder(), null, null);
String idColumn = ListViewUtils.getColumnId(EmployeeGroup.ID,EmployeeGroup.Columns.ID.getName());
String joinColumn = ListViewUtils.getColumnId(EmployeeTaskRecordGroup.ID,EmployeeTaskRecordGroup.Columns.EMPLOYEE_ID.getName());
ShowViewProviderCommand showSublistCmd = ShowViewProviderCommand.showSubListProvider(
new ViewProviderDef(ViewProviderKind.ListViewProvider,EmployeeTaskRecordDBListViewProviderImpl.class),
new MacroAdjustCurrentData(
new SetSublistSimpleJoinCriteriaAdjustCurrentData(idColumn,joinColumn),
new SetIDAdjustCurrentData(idColumn,Employee.EMPLOYEE_ID_KEY)
)
);
Command cmd = new ShowOrDisposeViewProviderCommand(showSublistCmd);
ToggleButtonViewProviderComponent toggleButtonViewProviderComponent = new ToggleButtonViewProviderComponentImpl("taskRecordsSubList",locValue,cmd);
return toggleButtonViewProviderComponent;
}
@Override
protected GroupsListViewDef setupGroupsListViewDef() {
EmployeeGroup employeeGroup = new EmployeeGroup();
return new GroupsListViewDefDBBuilderImpl().setMainGroup(employeeGroup).
addEqJoin(
DepartmentGroup.createjoinGroup(), DepartmentGroup.class.getSimpleName(),
employeeGroup.getJoinable().getAlias(), SJoinType.INNER, DepartmentGroup.Columns.ID.name, EmployeeGroup.Columns.DEPARTMENT_ID.name).
addEqJoin(
WorkPositionGroup.createjoinGroup(), WorkPositionGroup.class.getSimpleName(),
employeeGroup.getJoinable().getAlias(), SJoinType.INNER, WorkPositionGroup.Columns.ID.name, EmployeeGroup.Columns.WORK_POSITION_ID.name).
getDef();
}
@Override
protected Class<? extends AbstractEntityService> getMainBusinessServiceClass() {
return EmployeeService.class;
}
@Override
protected ViewProviderDef getMainDetailViewProviderDef() {
return new ViewProviderDef(ViewProviderKind.DetailViewProvider,EmployeeDetailImpl.class);
}
}