class DataManagementServiceImpl implements DataManagementService {

    @Override
    public DisplayerSettings getDisplayerSettings(String dataSourceUuid,
                                                  String schema,
                                                  String table) {
        checkNotNull("dataSourceUuid",
                     dataSourceUuid);
        checkNotNull("table",
                     table);
        try {
            DataSourceDeploymentInfo deploymentInfo = dataSourceRuntimeManager.getDataSourceDeploymentInfo(dataSourceUuid);
            DataSetDef dataSetDef = DataSetDefBuilder.newBuilder()
                    .dataSetUuid(buildDataSetUuid(dataSourceUuid,
                                                  schema,
                                                  table))
                    .dataSetName(buildDataSetName(schema,
                                                  table))
                    .dataSourceUuid(deploymentInfo.getUuid())
                    .schema(schema)
                    .table(buildDataSetTableName(dataSourceUuid,
                                                 table))
                    .isPublic(false)
                    .build();

            dataSetDefRegistry.registerDataSetDef(dataSetDef);
            DataSetLookup lookup = new DataSetLookup();
            lookup.setDataSetUUID(dataSetDef.getUUID());
            DataSet dataSet = dataSetManager.lookupDataSet(lookup);

            TableDisplayerSettingsBuilder settingsBuilder = DisplayerSettingsFactory.newTableSettings()
                    .dataset(dataSetDef.getUUID())
                    .title(table)
                    .titleVisible(true)
                    .tablePageSize(20)
                    .tableOrderEnabled(true);

            List<DataColumn> columns = dataSet.getColumns();
            for (DataColumn column : columns) {
                settingsBuilder.column(column.getId());
            }
            int tableWith = columns.size() * COLUMN_WIDTH;
            settingsBuilder.tableWidth(tableWith);
            settingsBuilder.renderer(DefaultRenderer.UUID);

            return settingsBuilder.buildSettings();
        } catch (Exception e) {
            throw new GenericPortableException(e.getMessage());
        }
    }

    @Inject public  DataManagementServiceImpl(DataSourceRuntimeManager dataSourceRuntimeManager,
                                     DatabaseMetadataService databaseMetadataService,
                                     DataSetDefRegistry dataSetDefRegistry,
                                     DataSetManager dataSetManager);

}