Add list View Provider

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 EmployeesDBListViewProviderImpl extends AbstractRDBListViewProviderImpl {
        
        /**
         * Creates AllEmployeesDBListViewProviderImpl
         * @param viewProviderParams
         * @param listViewProviderParameter
         */
        public EmployeesDBListViewProviderImpl(
                        ViewProviderParams viewProviderParams,
                        ViewProviderDBParams listViewProviderParameter) {
                super(viewProviderParams, listViewProviderParameter);
        }

        @Override
        protected String getLocPath() {
                return EmployeesGroup.locPath;
        }
        
        private static class DepartmentsJoinGroup extends DepartmentsGroup{
                static SJoinable mapping = new STable(
                                EMPDBSchema.NAME,DBTableDepartment.NAME,
                                SJoinType.INNER,EmployeesGroup.mapping.getAlias(),Columns.ID.name,EmployeesGroup.Columns.DEPARTMENT_ID.name);
                
                @Override
                protected void setupColumn(String groupId,LocPair<StringLocValue> locPair,ColumnInfo column) {
                        PrefixLocPairDelegate locPairDelegate = new PrefixLocPairDelegate(locPair," - ",column.getLocPair());
                        column.setLocPair(locPairDelegate);
                }
                
        }

        @Override
        protected GroupsListViewDef setupGroupsListViewDef() {
                return new GroupsListViewDefContainerImpl(Arrays.asList(new EmployeesGroup(),new DepartmentsJoinGroup()));
        }
        
        @Override
        protected Class<? extends AbstractEntityService> getMainBusinessServiceClass() {
                return EmployeeService.class;
        }
        
        @Override
        protected ViewProviderDef getMainDetailViewProviderDef() {
                return new ViewProviderDef(ViewProviderKind.DetailViewProvider,EmployeeDetailImpl.class);
        }
        
}