use of org.jkiss.dbeaver.model.struct.DBSObjectFilter in project dbeaver by dbeaver.
the class DataSourceSerializerModern method readObjectFiler.
private static DBSObjectFilter readObjectFiler(Map<String, Object> map) {
DBSObjectFilter filter = new DBSObjectFilter();
filter.setName(JSONUtils.getString(map, RegistryConstants.ATTR_NAME));
filter.setDescription(JSONUtils.getString(map, RegistryConstants.ATTR_DESCRIPTION));
filter.setEnabled(JSONUtils.getBoolean(map, RegistryConstants.ATTR_ENABLED));
filter.setInclude(JSONUtils.deserializeStringList(map, RegistryConstants.TAG_INCLUDE));
filter.setExclude(JSONUtils.deserializeStringList(map, RegistryConstants.TAG_EXCLUDE));
return filter;
}
use of org.jkiss.dbeaver.model.struct.DBSObjectFilter in project dbeaver by dbeaver.
the class DataSourceSerializerModern method saveDataSources.
@Override
public void saveDataSources(DBRProgressMonitor monitor, DBPDataSourceConfigurationStorage configurationStorage, List<DataSourceDescriptor> localDataSources, File configFile) throws DBException {
ByteArrayOutputStream dsConfigBuffer = new ByteArrayOutputStream(10000);
try (OutputStreamWriter osw = new OutputStreamWriter(dsConfigBuffer, StandardCharsets.UTF_8)) {
try (JsonWriter jsonWriter = CONFIG_GSON.newJsonWriter(osw)) {
jsonWriter.setIndent("\t");
jsonWriter.beginObject();
// Save folders
if (configurationStorage.isDefault()) {
jsonWriter.name("folders");
jsonWriter.beginObject();
// Folders (only for default storage)
for (DataSourceFolder folder : registry.getAllFolders()) {
saveFolder(jsonWriter, folder);
}
jsonWriter.endObject();
}
Map<String, DBVModel> virtualModels = new LinkedHashMap<>();
Map<String, DBPConnectionType> connectionTypes = new LinkedHashMap<>();
Map<String, Map<String, DBPDriver>> drivers = new LinkedHashMap<>();
{
// Save connections
jsonWriter.name("connections");
jsonWriter.beginObject();
for (DataSourceDescriptor dataSource : localDataSources) {
// Skip temporary
if (!dataSource.isDetached()) {
saveDataSource(jsonWriter, dataSource);
if (dataSource.getVirtualModel().hasValuableData()) {
virtualModels.put(dataSource.getVirtualModel().getId(), dataSource.getVirtualModel());
}
DBPConnectionType connectionType = dataSource.getConnectionConfiguration().getConnectionType();
/*if (!connectionType.isPredefined()) */
{
connectionTypes.put(connectionType.getId(), connectionType);
}
DBPDriver driver = dataSource.getDriver();
if (driver.isCustom() && !driver.getProviderDescriptor().isTemporary()) {
Map<String, DBPDriver> driverMap = drivers.computeIfAbsent(driver.getProviderId(), s -> new LinkedHashMap<>());
driverMap.put(driver.getId(), driver);
}
}
}
jsonWriter.endObject();
}
if (configurationStorage.isDefault()) {
if (!virtualModels.isEmpty()) {
// Save virtual models
jsonWriter.name("virtual-models");
jsonWriter.beginObject();
for (DBVModel model : virtualModels.values()) {
model.serialize(monitor, jsonWriter);
}
jsonWriter.endObject();
}
// Network profiles
List<DBWNetworkProfile> profiles = registry.getNetworkProfiles();
if (!CommonUtils.isEmpty(profiles)) {
jsonWriter.name("network-profiles");
jsonWriter.beginObject();
for (DBWNetworkProfile np : profiles) {
jsonWriter.name(np.getProfileId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, np.getProfileName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, np.getProfileDescription());
jsonWriter.name("handlers");
jsonWriter.beginObject();
for (DBWHandlerConfiguration configuration : np.getConfigurations()) {
if (configuration.hasValuableInfo()) {
saveNetworkHandlerConfiguration(jsonWriter, null, np, configuration);
}
}
jsonWriter.endObject();
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Auth profiles
List<DBAAuthProfile> authProfiles = registry.getAllAuthProfiles();
if (!CommonUtils.isEmpty(authProfiles)) {
jsonWriter.name("auth-profiles");
jsonWriter.beginObject();
for (DBAAuthProfile authProfile : authProfiles) {
jsonWriter.name(authProfile.getProfileId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, authProfile.getProfileName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, authProfile.getProfileDescription());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_AUTH_MODEL, authProfile.getAuthModelId());
if (authProfile.isSavePassword()) {
JSONUtils.field(jsonWriter, RegistryConstants.ATTR_SAVE_PASSWORD, authProfile.isSavePassword());
}
// Save all auth properties in secure storage
saveSecuredCredentials(null, authProfile, null, new SecureCredentials(authProfile));
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Filters
List<DBSObjectFilter> savedFilters = registry.getSavedFilters();
if (!CommonUtils.isEmpty(savedFilters)) {
jsonWriter.name("saved-filters");
jsonWriter.beginArray();
for (DBSObjectFilter cf : savedFilters) {
if (!cf.isEmpty()) {
saveObjectFiler(jsonWriter, null, null, cf);
}
}
jsonWriter.endArray();
}
// Connection types
if (!CommonUtils.isEmpty(connectionTypes)) {
jsonWriter.name("connection-types");
jsonWriter.beginObject();
for (DBPConnectionType ct : connectionTypes.values()) {
jsonWriter.name(ct.getId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, ct.getName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_COLOR, ct.getColor());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, ct.getDescription());
JSONUtils.field(jsonWriter, "auto-commit", ct.isAutocommit());
JSONUtils.field(jsonWriter, "confirm-execute", ct.isConfirmExecute());
JSONUtils.field(jsonWriter, "confirm-data-change", ct.isConfirmDataChange());
serializeModifyPermissions(jsonWriter, ct);
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Drivers
if (!CommonUtils.isEmpty(drivers)) {
jsonWriter.name("drivers");
jsonWriter.beginObject();
for (Map.Entry<String, Map<String, DBPDriver>> dmap : drivers.entrySet()) {
jsonWriter.name(dmap.getKey());
jsonWriter.beginObject();
for (DBPDriver driver : dmap.getValue().values()) {
((DriverDescriptor) driver).serialize(jsonWriter, true);
}
jsonWriter.endObject();
}
jsonWriter.endObject();
}
}
jsonWriter.endObject();
jsonWriter.flush();
}
} catch (IOException e) {
log.error("IO error while saving datasources json", e);
}
String jsonString = new String(dsConfigBuffer.toByteArray(), StandardCharsets.UTF_8);
boolean encryptProject = CommonUtils.toBoolean(registry.getProject().getProjectProperty(DBPProject.PROP_SECURE_PROJECT));
saveConfigFile(configFile, jsonString, false, encryptProject);
{
saveSecureCredentialsFile(monitor.getNestedMonitor(), configFile.getParentFile(), configurationStorage);
}
}
use of org.jkiss.dbeaver.model.struct.DBSObjectFilter in project dbeaver by dbeaver.
the class EditObjectFilterDialog method createDialogArea.
@Override
protected Control createDialogArea(Composite parent) {
getShell().setText(NLS.bind(UINavigatorMessages.dialog_filter_title, objectTitle));
// getShell().setImage(DBIcon.EVENT.getImage());
Composite composite = (Composite) super.createDialogArea(parent);
Composite topPanel = UIUtils.createPlaceholder(composite, globalFilter ? 1 : 2);
topPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
enableButton = UIUtils.createCheckbox(topPanel, UIMessages.button_enable, false);
enableButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
filter.setEnabled(enableButton.getSelection());
enableFiltersContent();
}
});
enableButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
enableButton.setSelection(filter.isEnabled());
if (!globalFilter) {
Link globalLink = UIUtils.createLink(topPanel, UINavigatorMessages.dialog_filter_global_link, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
setReturnCode(SHOW_GLOBAL_FILTERS_ID);
close();
}
});
globalLink.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
}
blockControl = UIUtils.createPlaceholder(composite, 1);
blockControl.setLayoutData(new GridData(GridData.FILL_BOTH));
includeTable = StringEditorTable.createEditableList(blockControl, UINavigatorMessages.dialog_filter_list_include, filter.getInclude(), null, null);
excludeTable = StringEditorTable.createEditableList(blockControl, UINavigatorMessages.dialog_filter_list_exclude, filter.getExclude(), null, null);
UIUtils.createInfoLabel(blockControl, UINavigatorMessages.dialog_filter_hint_text);
{
Group sfGroup = UIUtils.createControlGroup(composite, UINavigatorMessages.dialog_filter_save_label, 4, GridData.FILL_HORIZONTAL, 0);
namesCombo = UIUtils.createLabelCombo(sfGroup, UINavigatorMessages.dialog_filter_name_label, SWT.DROP_DOWN);
namesCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
namesCombo.add(NULL_FILTER_NAME);
List<String> sfNames = new ArrayList<>();
for (DBSObjectFilter sf : dsRegistry.getSavedFilters()) {
sfNames.add(sf.getName());
}
Collections.sort(sfNames);
for (String sfName : sfNames) {
namesCombo.add(sfName);
}
namesCombo.setText(CommonUtils.notEmpty(filter.getName()));
namesCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
changeSavedFilter();
}
});
Button saveButton = UIUtils.createPushButton(sfGroup, UINavigatorMessages.dialog_filter_save_button, null);
saveButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
namesCombo.add(namesCombo.getText());
saveConfigurations();
}
});
Button removeButton = UIUtils.createPushButton(sfGroup, UINavigatorMessages.dialog_filter_remove_button, null);
removeButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
dsRegistry.removeSavedFilter(namesCombo.getText());
namesCombo.remove(namesCombo.getText());
namesCombo.setText(NULL_FILTER_NAME);
}
});
}
enableFiltersContent();
return composite;
}
use of org.jkiss.dbeaver.model.struct.DBSObjectFilter in project dbeaver by dbeaver.
the class EditObjectFilterDialog method changeSavedFilter.
private void changeSavedFilter() {
String filterName = namesCombo.getText();
if (CommonUtils.equalObjects(filterName, filter.getName())) {
return;
}
if (CommonUtils.isEmpty(filterName)) {
// Reset filter
StringEditorTable.fillFilterValues(includeTable, null, null);
StringEditorTable.fillFilterValues(excludeTable, null, null);
} else {
// Find saved filter
DBSObjectFilter savedFilter = dsRegistry.getSavedFilter(filterName);
if (savedFilter != null) {
StringEditorTable.fillFilterValues(includeTable, savedFilter.getInclude(), null);
StringEditorTable.fillFilterValues(excludeTable, savedFilter.getExclude(), null);
}
}
filter.setName(filterName);
}
use of org.jkiss.dbeaver.model.struct.DBSObjectFilter in project dbeaver by dbeaver.
the class ObjectPropertyTester method test.
@SuppressWarnings("unchecked")
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
if (!(receiver instanceof DBNNode)) {
return false;
}
Display display = Display.getCurrent();
if (display == null) {
return false;
}
DBNNode node = (DBNNode) receiver;
switch(property) {
case PROP_CAN_OPEN:
return node.isPersisted();
case PROP_CAN_CREATE_SINGLE:
{
return canCreateObject(node, true);
}
case PROP_CAN_CREATE_MULTI:
{
return canCreateObject(node, false);
}
case PROP_CAN_PASTE:
{
/*
Clipboard clipboard = new Clipboard(display);
try {
if (clipboard.getContents(TreeNodeTransfer.getInstance()) == null) {
return false;
}
} finally {
clipboard.dispose();
}
*/
if (node instanceof DBNResource) {
return property.equals(PROP_CAN_PASTE);
}
return canCreateObject(node, null);
// Do not check PASTE command state. It requires clipboard contents check
// which means UI interaction which can break menu popup [RedHat]
// and also is a slow operation. So let paste be always enabled.
/*
// Check objects in clipboard
Collection<DBNNode> cbNodes = TreeNodeTransfer.getFromClipboard();
if (cbNodes == null) {
return false;
}
for (DBNNode nodeObject : cbNodes) {
if (nodeObject.isManagable() && nodeObject instanceof DBSWrapper) {
DBSObject pasteObject = ((DBSWrapper)nodeObject).getObject();
if (pasteObject == null || objectType != pasteObject.getClass()) {
return false;
}
} else {
return false;
}
}
*/
}
case PROP_CAN_DELETE:
{
if (node instanceof DBNDataSource || node instanceof DBNLocalFolder) {
return true;
}
if (DBNUtils.isReadOnly(node)) {
return false;
}
if (node instanceof DBSWrapper) {
DBSObject object = ((DBSWrapper) node).getObject();
if (object == null || DBUtils.isReadOnly(object) || !(node.getParentNode() instanceof DBNContainer)) {
return false;
}
DBEObjectMaker objectMaker = getObjectManager(object.getClass(), DBEObjectMaker.class);
return objectMaker != null && objectMaker.canDeleteObject(object);
} else if (node instanceof DBNResource) {
if ((((DBNResource) node).getFeatures() & DBPResourceHandler.FEATURE_DELETE) != 0) {
return true;
}
}
break;
}
case PROP_CAN_RENAME:
{
if (node.supportsRename()) {
return true;
}
if (node instanceof DBNDatabaseNode) {
if (DBNUtils.isReadOnly(node)) {
return false;
}
DBSObject object = ((DBNDatabaseNode) node).getObject();
return object != null && !DBUtils.isReadOnly(object) && object.isPersisted() && node.getParentNode() instanceof DBNContainer && getObjectManager(object.getClass(), DBEObjectRenamer.class) != null;
}
break;
}
case PROP_CAN_MOVE_UP:
case PROP_CAN_MOVE_DOWN:
{
if (node instanceof DBNDatabaseNode) {
if (DBNUtils.isReadOnly(node)) {
return false;
}
DBSObject object = ((DBNDatabaseNode) node).getObject();
if (object instanceof DBPOrderedObject) {
DBEObjectReorderer objectReorderer = getObjectManager(object.getClass(), DBEObjectReorderer.class);
if (objectReorderer != null) {
final int position = ((DBPOrderedObject) object).getOrdinalPosition();
if (property.equals(PROP_CAN_MOVE_UP)) {
return position > objectReorderer.getMinimumOrdinalPosition(object);
}
return position < objectReorderer.getMaximumOrdinalPosition(object);
}
}
}
break;
}
case PROP_CAN_FILTER:
{
if (node instanceof DBNDatabaseItem) {
node = node.getParentNode();
}
if (node instanceof DBNDatabaseFolder && ((DBNDatabaseFolder) node).getItemsMeta() != null) {
return true;
}
break;
}
case PROP_CAN_FILTER_OBJECT:
{
if (node.getParentNode() instanceof DBNDatabaseFolder && ((DBNDatabaseFolder) node.getParentNode()).getItemsMeta() != null) {
return true;
}
break;
}
case PROP_HAS_FILTER:
{
if (node instanceof DBNDatabaseItem) {
node = node.getParentNode();
}
if (node instanceof DBNDatabaseFolder && ((DBNDatabaseFolder) node).getItemsMeta() != null) {
DBSObjectFilter filter = ((DBNDatabaseFolder) node).getNodeFilter(((DBNDatabaseFolder) node).getItemsMeta(), true);
if ("defined".equals(expectedValue)) {
return filter != null && !filter.isEmpty();
} else {
return filter != null && !filter.isNotApplicable();
}
}
break;
}
}
return false;
}
Aggregations