Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ package org.apache.directory.studio.apacheds.configuration.editor; import java.util.ArrayList; import java.util.List; import org.apache.directory.api.ldap.model.constants.SchemaConstants; import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException; import org.apache.directory.api.ldap.model.message.AliasDerefMode; import org.apache.directory.api.ldap.model.message.SearchScope; import org.apache.directory.api.ldap.model.name.Dn; import org.apache.directory.server.config.beans.ReplConsumerBean; import org.apache.directory.studio.common.ui.dialogs.AttributeDialog; import org.apache.directory.studio.common.ui.widgets.WidgetModifyEvent; import org.apache.directory.studio.common.ui.widgets.WidgetModifyListener; import org.apache.directory.studio.ldapbrowser.common.widgets.search.EntryWidget; import org.apache.directory.studio.ldapbrowser.common.widgets.search.FilterWidget; import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin; import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection; import org.apache.directory.studio.ldapbrowser.core.utils.SchemaObjectLoader; import org.apache.directory.studio.common.ui.wrappers.StringValueWrapper; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.IDetailsPage; import org.eclipse.ui.forms.IFormPart; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; /** * This class represents the Details Page of the Server Configuration Editor for the Replication type * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public class ReplicationDetailsPage implements IDetailsPage { /** The associated Master Details Block */ private ReplicationMasterDetailsBlock masterDetailsBlock; /** The Managed Form */ private IManagedForm mform; /** The input consumer */ private ReplConsumerBean input; /** The browser connection */ private IBrowserConnection browserConnection; /** The Attribute list loader */ private SchemaObjectLoader attributeLoader; /** The list of attributes */ private List<String> attributesList = new ArrayList<String>(); // UI Widgets private Button enabledCheckbox; private Text idText; private Text descriptionText; private Button refreshAndPersistModeButton; private Button refreshOnlyModeButton; private Text refreshIntervalText; private Text remoteHostText; private Text remotePortText; private Text bindDnText; private Text bindPasswordText; private Button showPasswordCheckbox; private Button useStartTlsCheckbox; private Text sizeLimitText; private Text timeLimitText; private EntryWidget entryWidget; private FilterWidget filterWidget; private Button subtreeScopeButton; private Button oneLevelScopeButton; private Button objectScopeButton; private Button allAttributesCheckbox; private TableViewer attributesTableViewer; private Button addAttributeButton; private Button editAttributeButton; private Button deleteAttributeButton; private Button findingBaseDnAliasesDereferencingButton; private Button searchAliasesDereferencingButton; // Listeners /** The Text Modify Listener */ private ModifyListener textModifyListener = new ModifyListener() { public void modifyText(ModifyEvent e) { commit(true); masterDetailsBlock.setEditorDirty(); } }; /** The button Selection Listener */ private SelectionListener buttonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { commit(true); masterDetailsBlock.setEditorDirty(); } }; /** The widget Modify Listener */ private WidgetModifyListener widgetModifyListener = new WidgetModifyListener() { public void widgetModified(WidgetModifyEvent event) { commit(true); masterDetailsBlock.setEditorDirty(); } }; private VerifyListener integerVerifyListener = new VerifyListener() { public void verifyText(VerifyEvent e) { if (!e.text.matches("[0-9]*")) //$NON-NLS-1$ { e.doit = false; } } }; private SelectionListener showPasswordCheckboxSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { if (showPasswordCheckbox.getSelection()) { bindPasswordText.setEchoChar('\0'); } else { bindPasswordText.setEchoChar('\u2022'); } } }; private ISelectionChangedListener attributesTableViewerSelectionListener = new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { updateAttributesButtonsEnableState(); } }; /** The Double Click Listener for the Indexed Attributes Table Viewer */ private IDoubleClickListener attributesTableViewerDoubleClickListener = new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { editSelectedAttribute(); } }; private SelectionListener addAttributeButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addNewAttribute(); } }; private SelectionListener editAttributeButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { editSelectedAttribute(); } }; private SelectionListener deleteAttributeButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { deleteSelectedAttribute(); } }; /** * Creates a new instance of ReplicationDetailsPage. * * @param pmdb * the associated Master Details Block */ public ReplicationDetailsPage(ReplicationMasterDetailsBlock pmdb) { masterDetailsBlock = pmdb; attributeLoader = new SchemaObjectLoader(); // Getting the browser connection associated with the connection in the configuration browserConnection = BrowserCorePlugin.getDefault().getConnectionManager() .getBrowserConnection(masterDetailsBlock.getPage().getConnection()); } /** * {@inheritDoc} */ public void createContents(Composite parent) { FormToolkit toolkit = mform.getToolkit(); TableWrapLayout layout = new TableWrapLayout(); layout.topMargin = 5; layout.leftMargin = 5; layout.rightMargin = 2; layout.bottomMargin = 2; parent.setLayout(layout); createDetailsSection(parent, toolkit); createConnectionSection(parent, toolkit); createConfigurationSection(parent, toolkit); } /** * Creates the Details Section * * @param parent * the parent composite * @param toolkit * the toolkit to use */ private void createDetailsSection(Composite parent, FormToolkit toolkit) { Section section = toolkit.createSection(parent, Section.DESCRIPTION | Section.TITLE_BAR); section.marginWidth = 10; section.setText("Replication Consumer Details"); section.setDescription("Set the properties of the replication consumer."); TableWrapData td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP); td.grabHorizontal = true; section.setLayoutData(td); Composite client = toolkit.createComposite(section); toolkit.paintBordersFor(client); GridLayout glayout = new GridLayout(2, false); client.setLayout(glayout); section.setClient(client); // Enabled Checkbox enabledCheckbox = toolkit.createButton(client, "Enabled", SWT.CHECK); enabledCheckbox.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false, 2, 1)); // ID Text toolkit.createLabel(client, "ID:"); idText = toolkit.createText(client, ""); idText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Description Text toolkit.createLabel(client, "Description:"); descriptionText = toolkit.createText(client, ""); descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); } /** * Creates the Details Section * * @param parent * the parent composite * @param toolkit * the toolkit to use */ private void createConnectionSection(Composite parent, FormToolkit toolkit) { Section section = toolkit.createSection(parent, Section.DESCRIPTION | Section.TITLE_BAR); section.marginWidth = 10; section.setText("Connection"); section.setDescription("Set the properties of the connection."); TableWrapData td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP); td.grabHorizontal = true; section.setLayoutData(td); Composite composite = toolkit.createComposite(section); toolkit.paintBordersFor(composite); composite.setLayout(new GridLayout(2, false)); section.setClient(composite); // Replication Mode toolkit.createLabel(composite, "Replication Mode:"); // Refresh And Persist Mode Button refreshAndPersistModeButton = toolkit.createButton(composite, "Refresh And Persist", SWT.RADIO); refreshAndPersistModeButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); // Refresh Only Mode Button toolkit.createLabel(composite, ""); refreshOnlyModeButton = toolkit.createButton(composite, "Refresh Only", SWT.RADIO); refreshOnlyModeButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); // Refresh Interval toolkit.createLabel(composite, ""); Composite refreshIntervalComposite = toolkit.createComposite(composite); refreshIntervalComposite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); refreshIntervalComposite.setLayout(new GridLayout(3, false)); toolkit.createLabel(refreshIntervalComposite, " "); toolkit.createLabel(refreshIntervalComposite, "Refresh Interval (ms):"); refreshIntervalText = toolkit.createText(refreshIntervalComposite, ""); refreshIntervalText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Remote Host Text toolkit.createLabel(composite, "Remote Host:"); remoteHostText = toolkit.createText(composite, ""); remoteHostText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Remote Port Text toolkit.createLabel(composite, "Remote Port:"); remotePortText = toolkit.createText(composite, ""); remotePortText.addVerifyListener(integerVerifyListener); remotePortText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Bind DN Text toolkit.createLabel(composite, "Bind DN:"); bindDnText = toolkit.createText(composite, ""); bindDnText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Bind Password Text toolkit.createLabel(composite, "Bind Password:"); bindPasswordText = toolkit.createText(composite, ""); bindPasswordText.setEchoChar('\u2022'); bindPasswordText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Show Password Checkbox toolkit.createLabel(composite, ""); //$NON-NLS-1$ showPasswordCheckbox = toolkit.createButton(composite, "Show password", SWT.CHECK); showPasswordCheckbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); showPasswordCheckbox.setSelection(false); // Size Limit Text toolkit.createLabel(composite, "Size Limit:"); sizeLimitText = toolkit.createText(composite, ""); sizeLimitText.addVerifyListener(integerVerifyListener); sizeLimitText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Time Limit Text toolkit.createLabel(composite, "Time Limit:"); timeLimitText = toolkit.createText(composite, ""); timeLimitText.addVerifyListener(integerVerifyListener); timeLimitText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); // Use Start TLS toolkit.createLabel(composite, ""); //$NON-NLS-1$ useStartTlsCheckbox = toolkit.createButton(composite, "Use Start TLS", SWT.CHECK); useStartTlsCheckbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); useStartTlsCheckbox.setSelection(false); } /** * Creates the Details Section * * @param parent * the parent composite * @param toolkit * the toolkit to use */ private void createConfigurationSection(Composite parent, FormToolkit toolkit) { Section section = toolkit.createSection(parent, Section.DESCRIPTION | Section.TITLE_BAR); section.marginWidth = 10; section.setText("Replication Consumer Details"); section.setDescription("Set the properties of the configuration."); TableWrapData td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP); td.grabHorizontal = true; section.setLayoutData(td); Composite composite = toolkit.createComposite(section); toolkit.paintBordersFor(composite); GridLayout glayout = new GridLayout(3, false); composite.setLayout(glayout); section.setClient(composite); // Base DN Text toolkit.createLabel(composite, "Base DN:"); entryWidget = new EntryWidget(browserConnection, Dn.EMPTY_DN); entryWidget.createWidget(composite); // Filter Text toolkit.createLabel(composite, "Filter:"); filterWidget = new FilterWidget(); filterWidget.setBrowserConnection(browserConnection); filterWidget.createWidget(composite); // Scope Label scopeLabel = toolkit.createLabel(composite, "Scope:"); scopeLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, false, false, 1, 3)); // Subtree Scope Button subtreeScopeButton = toolkit.createButton(composite, "Subtree", SWT.RADIO); subtreeScopeButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); // One Level Scope Button oneLevelScopeButton = toolkit.createButton(composite, "One Level", SWT.RADIO); oneLevelScopeButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); // Object Scope Button objectScopeButton = toolkit.createButton(composite, "Object", SWT.RADIO); objectScopeButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); // Attributes Label Label attributesLabel = toolkit.createLabel(composite, "Attributes:"); attributesLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); // All Attributes Checkbox allAttributesCheckbox = toolkit.createButton(composite, "All Attributes", SWT.CHECK); allAttributesCheckbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); // Attributes Table Viewer toolkit.createLabel(composite, ""); //$NON-NLS-1$ Composite attributesTableComposite = toolkit.createComposite(composite); GridLayout gl = new GridLayout(2, false); gl.marginWidth = gl.marginHeight = 0; attributesTableComposite.setLayout(gl); attributesTableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); Table attributesTable = toolkit.createTable(attributesTableComposite, SWT.BORDER); attributesTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 3)); attributesTableViewer = new TableViewer(attributesTable); attributesTableViewer.setContentProvider(new ArrayContentProvider()); attributesTableViewer.setInput(attributesList); addAttributeButton = toolkit.createButton(attributesTableComposite, "Add...", SWT.PUSH); addAttributeButton.setLayoutData(createNewButtonGridData()); editAttributeButton = toolkit.createButton(attributesTableComposite, "Edit...", SWT.PUSH); editAttributeButton.setEnabled(false); editAttributeButton.setLayoutData(createNewButtonGridData()); deleteAttributeButton = toolkit.createButton(attributesTableComposite, "Delete", SWT.PUSH); deleteAttributeButton.setEnabled(false); deleteAttributeButton.setLayoutData(createNewButtonGridData()); // Aliases Dereferencing Text Label aliasesDereferencingLable = toolkit.createLabel(composite, "Aliases\nDereferencing:"); aliasesDereferencingLable.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, false, false, 1, 2)); // Finding Base DN Aliases Dereferencing Button findingBaseDnAliasesDereferencingButton = toolkit.createButton(composite, "Finding Base DN", SWT.CHECK); findingBaseDnAliasesDereferencingButton .setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); // Search Aliases Dereferencing Button searchAliasesDereferencingButton = toolkit.createButton(composite, "Search", SWT.CHECK); searchAliasesDereferencingButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); } /** * Updates the attributes buttons enable state. */ private void updateAttributesButtonsEnableState() { ISelection selection = attributesTableViewer.getSelection(); editAttributeButton.setEnabled(!selection.isEmpty()); deleteAttributeButton.setEnabled(!selection.isEmpty()); } /** * Adds a new attribute and opens the attribute dialog. */ private void addNewAttribute() { AttributeDialog dialog = new AttributeDialog(addAttributeButton.getShell()); dialog.addNewElement(); dialog.setAttributeNamesAndOids(attributeLoader.getAttributeNamesAndOids()); if (AttributeDialog.OK == dialog.open()) { String newAttribute = dialog.getEditedElement().getValue(); if (!attributesList.contains(newAttribute)) { attributesList.add(newAttribute); } attributesTableViewer.refresh(); attributesTableViewer.setSelection(new StructuredSelection(newAttribute)); masterDetailsBlock.setEditorDirty(); } } /** * Opens an attribute dialog with the selected attribute in the attributes table viewer. */ private void editSelectedAttribute() { StructuredSelection selection = (StructuredSelection) attributesTableViewer.getSelection(); if (!selection.isEmpty()) { String attribute = (String) selection.getFirstElement(); AttributeDialog dialog = new AttributeDialog(addAttributeButton.getShell()); dialog.setEditedElement(new StringValueWrapper(attribute, false)); dialog.setAttributeNamesAndOids(attributeLoader.getAttributeNamesAndOids()); if (AttributeDialog.OK == dialog.open()) { attributesList.remove(attribute); String newAttribute = dialog.getEditedElement().getValue(); if (!attributesList.contains(newAttribute)) { attributesList.add(newAttribute); } attributesTableViewer.refresh(); attributesTableViewer.setSelection(new StructuredSelection(newAttribute)); masterDetailsBlock.setEditorDirty(); } } } /** * Deletes the selected index in the indexes table viewer. */ private void deleteSelectedAttribute() { StructuredSelection selection = (StructuredSelection) attributesTableViewer.getSelection(); if (!selection.isEmpty()) { String attribute = (String) selection.getFirstElement(); attributesList.remove(attribute); attributesTableViewer.refresh(); masterDetailsBlock.setEditorDirty(); } } /** * Create a new button grid data. * * @return the new button grid data */ private GridData createNewButtonGridData() { GridData gd = new GridData(SWT.FILL, SWT.BEGINNING, false, false); gd.widthHint = IDialogConstants.BUTTON_WIDTH; return gd; } /** * Adds listeners to UI fields. */ private void addListeners() { enabledCheckbox.addSelectionListener(buttonSelectionListener); idText.addModifyListener(textModifyListener); descriptionText.addModifyListener(textModifyListener); refreshAndPersistModeButton.addSelectionListener(buttonSelectionListener); refreshOnlyModeButton.addSelectionListener(buttonSelectionListener); refreshIntervalText.addModifyListener(textModifyListener); remoteHostText.addModifyListener(textModifyListener); remotePortText.addModifyListener(textModifyListener); bindDnText.addModifyListener(textModifyListener); bindPasswordText.addModifyListener(textModifyListener); showPasswordCheckbox.addSelectionListener(showPasswordCheckboxSelectionListener); sizeLimitText.addModifyListener(textModifyListener); timeLimitText.addModifyListener(textModifyListener); useStartTlsCheckbox.addSelectionListener(buttonSelectionListener); entryWidget.addWidgetModifyListener(widgetModifyListener); filterWidget.addWidgetModifyListener(widgetModifyListener); subtreeScopeButton.addSelectionListener(buttonSelectionListener); oneLevelScopeButton.addSelectionListener(buttonSelectionListener); objectScopeButton.addSelectionListener(buttonSelectionListener); allAttributesCheckbox.addSelectionListener(buttonSelectionListener); attributesTableViewer.addDoubleClickListener(attributesTableViewerDoubleClickListener); attributesTableViewer.addSelectionChangedListener(attributesTableViewerSelectionListener); addAttributeButton.addSelectionListener(addAttributeButtonSelectionListener); editAttributeButton.addSelectionListener(editAttributeButtonSelectionListener); deleteAttributeButton.addSelectionListener(deleteAttributeButtonSelectionListener); findingBaseDnAliasesDereferencingButton.addSelectionListener(buttonSelectionListener); searchAliasesDereferencingButton.addSelectionListener(buttonSelectionListener); } /** * Removes listeners to UI fields. */ private void removeListeners() { enabledCheckbox.removeSelectionListener(buttonSelectionListener); idText.removeModifyListener(textModifyListener); descriptionText.removeModifyListener(textModifyListener); refreshAndPersistModeButton.removeSelectionListener(buttonSelectionListener); refreshOnlyModeButton.removeSelectionListener(buttonSelectionListener); refreshIntervalText.removeModifyListener(textModifyListener); remoteHostText.removeModifyListener(textModifyListener); remotePortText.removeModifyListener(textModifyListener); bindDnText.removeModifyListener(textModifyListener); bindPasswordText.removeModifyListener(textModifyListener); showPasswordCheckbox.removeSelectionListener(showPasswordCheckboxSelectionListener); sizeLimitText.removeModifyListener(textModifyListener); timeLimitText.removeModifyListener(textModifyListener); useStartTlsCheckbox.removeSelectionListener(buttonSelectionListener); entryWidget.removeWidgetModifyListener(widgetModifyListener); filterWidget.removeWidgetModifyListener(widgetModifyListener); subtreeScopeButton.removeSelectionListener(buttonSelectionListener); oneLevelScopeButton.removeSelectionListener(buttonSelectionListener); objectScopeButton.removeSelectionListener(buttonSelectionListener); allAttributesCheckbox.removeSelectionListener(buttonSelectionListener); attributesTableViewer.removeDoubleClickListener(attributesTableViewerDoubleClickListener); attributesTableViewer.removeSelectionChangedListener(attributesTableViewerSelectionListener); addAttributeButton.removeSelectionListener(addAttributeButtonSelectionListener); editAttributeButton.removeSelectionListener(editAttributeButtonSelectionListener); deleteAttributeButton.removeSelectionListener(deleteAttributeButtonSelectionListener); findingBaseDnAliasesDereferencingButton.removeSelectionListener(buttonSelectionListener); searchAliasesDereferencingButton.removeSelectionListener(buttonSelectionListener); } /** * {@inheritDoc} */ public void selectionChanged(IFormPart part, ISelection selection) { IStructuredSelection ssel = (IStructuredSelection) selection; if (ssel.size() == 1) { input = (ReplConsumerBean) ssel.getFirstElement(); } else { input = null; } refresh(); } /** * {@inheritDoc} */ public void commit(boolean onSave) { if (input != null) { // Enabled input.setEnabled(enabledCheckbox.getSelection()); // ID input.setReplConsumerId(ServerConfigurationEditorUtils.checkEmptyString(idText.getText())); // Description input.setDescription(ServerConfigurationEditorUtils.checkEmptyString(descriptionText.getText())); // Refresh Mode input.setReplRefreshNPersist(refreshAndPersistModeButton.getSelection()); // Refresh Interval try { input.setReplRefreshInterval(Long.parseLong(refreshIntervalText.getText())); } catch (NumberFormatException e) { input.setReplRefreshInterval(60000); } // Remote Host input.setReplProvHostName(ServerConfigurationEditorUtils.checkEmptyString(remoteHostText.getText())); // Remote Port try { input.setReplProvPort(Integer.parseInt(remotePortText.getText())); } catch (NumberFormatException e) { input.setReplProvPort(0); } // Bind DN input.setReplUserDn(ServerConfigurationEditorUtils.checkEmptyString(bindDnText.getText())); // Bind Password String password = ServerConfigurationEditorUtils.checkEmptyString(bindPasswordText.getText()); if (password != null) { input.setReplUserPassword(password.getBytes()); } else { input.setReplUserPassword(null); } // Size Limit try { input.setReplSearchSizeLimit(Integer.parseInt(sizeLimitText.getText())); } catch (NumberFormatException e) { input.setReplSearchSizeLimit(0); } // Time Limit try { input.setReplSearchTimeout(Integer.parseInt(timeLimitText.getText())); } catch (NumberFormatException e) { input.setReplSearchTimeout(0); } // Use Start TLS input.setReplUseTls(useStartTlsCheckbox.getSelection()); // Search Base DN Dn baseDn = entryWidget.getDn(); if (baseDn != null) { input.setSearchBaseDn(ServerConfigurationEditorUtils.checkEmptyString(baseDn.toString())); } else { input.setSearchBaseDn(null); } // Search Filter input.setReplSearchFilter(ServerConfigurationEditorUtils.checkEmptyString(filterWidget.getFilter())); // Search Scope SearchScope scope = getSearchScope(); if (scope != null) { input.setReplSearchScope(scope.getLdapUrlValue()); } else { input.setReplSearchScope(null); } // Aliases Dereferencing input.setReplAliasDerefMode(getAliasDerefMode().getJndiValue()); // Attributes List<String> replAttributes = new ArrayList<String>(); replAttributes.addAll(attributesList); // All (User) Attribute if (allAttributesCheckbox.getSelection()) { replAttributes.add(SchemaConstants.ALL_USER_ATTRIBUTES); } input.setReplAttributes(replAttributes); } } /** * Gets the search scope. * * @return the search scope */ private SearchScope getSearchScope() { if (subtreeScopeButton.getSelection()) { return SearchScope.SUBTREE; } else if (oneLevelScopeButton.getSelection()) { return SearchScope.ONELEVEL; } else if (objectScopeButton.getSelection()) { return SearchScope.OBJECT; } return null; } /** * Gets the aliases dereferencing mode. * * @return the aliases dereferencing mode */ private AliasDerefMode getAliasDerefMode() { if (findingBaseDnAliasesDereferencingButton.getSelection() && searchAliasesDereferencingButton.getSelection()) { return AliasDerefMode.DEREF_ALWAYS; } else if (!findingBaseDnAliasesDereferencingButton.getSelection() && searchAliasesDereferencingButton.getSelection()) { return AliasDerefMode.DEREF_IN_SEARCHING; } else if (findingBaseDnAliasesDereferencingButton.getSelection() && !searchAliasesDereferencingButton.getSelection()) { return AliasDerefMode.DEREF_FINDING_BASE_OBJ; } else if (!findingBaseDnAliasesDereferencingButton.getSelection() && !searchAliasesDereferencingButton.getSelection()) { return AliasDerefMode.NEVER_DEREF_ALIASES; } return AliasDerefMode.NEVER_DEREF_ALIASES; } /** * {@inheritDoc} */ public void dispose() { } /** * {@inheritDoc} */ public void initialize(IManagedForm form) { this.mform = form; } /** * {@inheritDoc} */ public boolean isDirty() { return false; } /** * {@inheritDoc} */ public boolean isStale() { return false; } /** * {@inheritDoc} */ public void refresh() { removeListeners(); if (input != null) { // Enabled enabledCheckbox.setSelection(input.isEnabled()); // ID idText.setText(ServerConfigurationEditorUtils.checkNull(input.getReplConsumerId())); // Description descriptionText.setText(ServerConfigurationEditorUtils.checkNull(input.getDescription())); // Refresh And Persist refreshAndPersistModeButton.setSelection(input.isReplRefreshNPersist()); // Refresh Only refreshOnlyModeButton.setSelection(!input.isReplRefreshNPersist()); // Refresh Interval refreshIntervalText.setText( ServerConfigurationEditorUtils.checkNull(String.valueOf(input.getReplRefreshInterval()))); // Remote Host remoteHostText.setText(ServerConfigurationEditorUtils.checkNull(input.getReplProvHostName())); // Remote Port remotePortText .setText(ServerConfigurationEditorUtils.checkNull(String.valueOf(input.getReplProvPort()))); // Bind DN bindDnText.setText(ServerConfigurationEditorUtils.checkNull(input.getReplUserDn())); // Bind Password byte[] bindPassword = input.getReplUserPassword(); if ((bindPassword != null) && (bindPassword.length > 0)) { bindPasswordText .setText(ServerConfigurationEditorUtils.checkNull(new String(input.getReplUserPassword()))); } else { bindPasswordText.setText(""); } // Size Limit sizeLimitText.setText( ServerConfigurationEditorUtils.checkNull(String.valueOf(input.getReplSearchSizeLimit()))); // Time Limit timeLimitText.setText( ServerConfigurationEditorUtils.checkNull(String.valueOf(input.getReplSearchTimeout()))); // Use Start TLS useStartTlsCheckbox.setSelection(input.isReplUseTls()); // Search Base DN try { entryWidget.setInput(browserConnection, new Dn(input.getSearchBaseDn())); } catch (LdapInvalidDnException e) { entryWidget.setInput(browserConnection, Dn.EMPTY_DN); } // Search Filter filterWidget.setFilter(ServerConfigurationEditorUtils.checkNull(input.getReplSearchFilter())); // Search Scope SearchScope scope = null; try { scope = SearchScope.getSearchScope(SearchScope.getSearchScope(input.getReplSearchScope())); } catch (IllegalArgumentException e) { scope = null; } if (scope != null) { switch (scope) { case SUBTREE: subtreeScopeButton.setSelection(true); oneLevelScopeButton.setSelection(false); objectScopeButton.setSelection(false); break; case ONELEVEL: subtreeScopeButton.setSelection(false); oneLevelScopeButton.setSelection(true); objectScopeButton.setSelection(false); break; case OBJECT: subtreeScopeButton.setSelection(false); oneLevelScopeButton.setSelection(false); objectScopeButton.setSelection(true); break; } } else { subtreeScopeButton.setSelection(true); } // Aliases Dereferencing AliasDerefMode aliasDerefMode = null; try { aliasDerefMode = AliasDerefMode.getDerefMode(input.getReplAliasDerefMode()); } catch (IllegalArgumentException e) { aliasDerefMode = null; } if (aliasDerefMode != null) { switch (aliasDerefMode) { case DEREF_ALWAYS: findingBaseDnAliasesDereferencingButton.setSelection(true); searchAliasesDereferencingButton.setSelection(true); break; case DEREF_FINDING_BASE_OBJ: findingBaseDnAliasesDereferencingButton.setSelection(true); searchAliasesDereferencingButton.setSelection(false); break; case DEREF_IN_SEARCHING: findingBaseDnAliasesDereferencingButton.setSelection(false); searchAliasesDereferencingButton.setSelection(true); break; case NEVER_DEREF_ALIASES: findingBaseDnAliasesDereferencingButton.setSelection(false); searchAliasesDereferencingButton.setSelection(false); break; } } else { findingBaseDnAliasesDereferencingButton.setSelection(true); searchAliasesDereferencingButton.setSelection(true); } // Attributes attributesList.clear(); attributesList.addAll(input.getReplAttributes()); // All Attributes Checkbox if (attributesList.contains(SchemaConstants.ALL_USER_ATTRIBUTES)) { attributesList.remove(SchemaConstants.ALL_USER_ATTRIBUTES); allAttributesCheckbox.setSelection(true); } else { allAttributesCheckbox.setSelection(false); } // All Operational Attributes if (attributesList.contains(SchemaConstants.ALL_OPERATIONAL_ATTRIBUTES)) { attributesList.remove(SchemaConstants.ALL_OPERATIONAL_ATTRIBUTES); } attributesTableViewer.refresh(); } addListeners(); } /** * {@inheritDoc} */ public void setFocus() { idText.setFocus(); } /** * {@inheritDoc} */ public boolean setFormInput(Object input) { return false; } }