You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2011/01/19 19:03:46 UTC
svn commit: r1060888 - in
/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2:
actions/ editor/ jobs/
Author: pamarcelot
Date: Wed Jan 19 18:03:45 2011
New Revision: 1060888
URL: http://svn.apache.org/viewvc?rev=1060888&view=rev
Log:
Added a Runnable to save the configuration.
Fixed problems when the connection is no longer available when saving the modifications of the configuration;
Added:
directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/SaveConfigurationRunnable.java
Modified:
directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorImportConfigurationAction.java
directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java
directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java
directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/LoadConfigurationRunnable.java
Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorImportConfigurationAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorImportConfigurationAction.java?rev=1060888&r1=1060887&r2=1060888&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorImportConfigurationAction.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorImportConfigurationAction.java Wed Jan 19 18:03:45 2011
@@ -55,6 +55,7 @@ import org.eclipse.ui.model.WorkbenchLab
public class EditorImportConfigurationAction extends Action
{
private static final String DIALOG_TITLE = "Select Configuration File";
+
/** The associated editor */
private ServerConfigurationEditor editor;
@@ -184,7 +185,6 @@ public class EditorImportConfigurationAc
// TODO Auto-generated catch block
e.printStackTrace();
}
-
}
Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java?rev=1060888&r1=1060887&r2=1060888&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java Wed Jan 19 18:03:45 2011
@@ -26,18 +26,18 @@ import org.apache.directory.server.confi
import org.apache.directory.server.config.beans.ConfigBean;
import org.apache.directory.studio.apacheds.configuration.v2.ApacheDS2ConfigurationPlugin;
import org.apache.directory.studio.apacheds.configuration.v2.jobs.LoadConfigurationRunnable;
+import org.apache.directory.studio.apacheds.configuration.v2.jobs.SaveConfigurationRunnable;
import org.apache.directory.studio.common.core.jobs.StudioJob;
import org.apache.directory.studio.common.core.jobs.StudioRunnableWithProgress;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPathEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.part.FileEditorInput;
/**
@@ -145,69 +145,9 @@ public class ServerConfigurationEditor e
*/
public void doSave( IProgressMonitor monitor )
{
- if ( dirty )
- {
- monitor.beginTask( "Saving the server configuration", IProgressMonitor.UNKNOWN );
-
- try
- {
- IEditorInput input = getEditorInput();
- String inputClassName = input.getClass().getName();
- boolean success = false;
- if ( input instanceof FileEditorInput )
- // FileEditorInput class is used when the file is opened
- // from a project in the workspace.
- {
- // Saving the ServerConfiguration to disk
- ServerConfigurationEditorUtils.saveConfiguration( ( FileEditorInput ) input, getConfigWriter(),
- monitor );
- success = true;
- }
- // If the input is a ConnectionServerConfigurationInput, then we
- // read the server configuration from the selected connection
- if ( input instanceof ConnectionServerConfigurationInput )
- {
- // Saving the ServerConfiguration to the connection
- ServerConfigurationEditorUtils.saveConfiguration( ( ConnectionServerConfigurationInput ) input,
- getConfigWriter(), monitor );
- success = true;
- }
- else if ( input instanceof IPathEditorInput )
- {
- // Saving the ServerConfiguration to disk
- ServerConfigurationEditorUtils
- .saveConfiguration( ( ( IPathEditorInput ) input ).getPath().toFile(), getConfigWriter() );
- success = true;
- }
- else if ( inputClassName.equals( "org.eclipse.ui.internal.editors.text.JavaFileEditorInput" ) //$NON-NLS-1$
- || inputClassName.equals( "org.eclipse.ui.ide.FileStoreEditorInput" ) ) //$NON-NLS-1$
- // The class 'org.eclipse.ui.internal.editors.text.JavaFileEditorInput'
- // is used when opening a file from the menu File > Open... in Eclipse 3.2.x
- // The class 'org.eclipse.ui.ide.FileStoreEditorInput' is used when
- // opening a file from the menu File > Open... in Eclipse 3.3.x
- {
- // Saving the ServerConfiguration to disk
- ServerConfigurationEditorUtils.saveConfiguration( input.getToolTipText(), getConfigWriter() );
- success = true;
- }
- else if ( input instanceof NewServerConfigurationInput )
- {
- // The 'ServerConfigurationEditorInput' class is used when a
- // new Server Configuration File is created.
-
- // We are saving this as if it is a "Save as..." action.
- success = doSaveAs( monitor );
- }
-
- setDirty( !success );
- monitor.done();
- }
- catch ( Exception e )
- {
- // TODO
- e.printStackTrace();
- }
- }
+ StudioJob<StudioRunnableWithProgress> job = new StudioJob<StudioRunnableWithProgress>(
+ new SaveConfigurationRunnable( this ) );
+ job.schedule();
}
@@ -250,7 +190,7 @@ public class ServerConfigurationEditor e
* the monitor to use
* @throws Exception
*/
- private boolean doSaveAs( IProgressMonitor monitor ) throws Exception
+ public boolean doSaveAs( IProgressMonitor monitor ) throws Exception
{
// Saving the configuration as a new file and getting the associated new editor input
IEditorInput newInput = ServerConfigurationEditorUtils.doSaveAs( monitor, getSite().getShell(),
@@ -301,7 +241,14 @@ public class ServerConfigurationEditor e
public void setDirty( boolean dirty )
{
this.dirty = dirty;
- firePropertyChange( PROP_DIRTY );
+
+ Display.getDefault().asyncExec( new Runnable()
+ {
+ public void run()
+ {
+ firePropertyChange( PROP_DIRTY );
+ }
+ } );
}
Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java?rev=1060888&r1=1060887&r2=1060888&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java Wed Jan 19 18:03:45 2011
@@ -266,7 +266,7 @@ public class ServerConfigurationEditorUt
.getBrowserConnection( input.getConnection() );
// Creating a StudioProgressMonitor to run the LDIF with
- StudioProgressMonitor studioProgressMonitor = new StudioProgressMonitor( monitor );
+ StudioProgressMonitor studioProgressMonitor = new StudioProgressMonitor( new NullProgressMonitor() );
// Updating the configuration with the resulting LDIF
ExecuteLdifRunnable.executeLdif( browserConnection, modificationsLdif.toString(), true, true,
@@ -275,7 +275,7 @@ public class ServerConfigurationEditorUt
// Checking if there were errors during the execution of the LDIF
if ( studioProgressMonitor.errorsReported() )
{
- // TODO handle error
+ throw new Exception( "Changes could not be saved to the connection." );
}
else
{
Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/LoadConfigurationRunnable.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/LoadConfigurationRunnable.java?rev=1060888&r1=1060887&r2=1060888&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/LoadConfigurationRunnable.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/LoadConfigurationRunnable.java Wed Jan 19 18:03:45 2011
@@ -37,6 +37,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.entry.DefaultEntry;
import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.exception.LdapException;
+import org.apache.directory.shared.ldap.exception.LdapNoSuchObjectException;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.schema.SchemaManager;
import org.apache.directory.shared.ldap.util.AttributeUtils;
@@ -60,7 +61,7 @@ import org.eclipse.ui.part.FileEditorInp
/**
- * This class implements a {@link Job} that is used to delete an LDAP Server.
+ * This class implements a {@link Job} that is used to load a server configuration.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
@@ -71,10 +72,10 @@ public class LoadConfigurationRunnable i
/**
- * Creates a new instance of StartLdapServerRunnable.
+ * Creates a new instance of LoadConfigurationRunnable.
*
- * @param server
- * the LDAP Server
+ * @param editor
+ * the editor
*/
public LoadConfigurationRunnable( ServerConfigurationEditor editor )
{
@@ -106,7 +107,7 @@ public class LoadConfigurationRunnable i
*/
public String getName()
{
- return "Load configuration";
+ return "Load Configuration";
}
@@ -135,7 +136,7 @@ public class LoadConfigurationRunnable i
{
// Reporting the error to the monitor
monitor.reportError( e );
-
+
// Reporting the error to the editor
final Exception exception = e;
Display.getDefault().asyncExec( new Runnable()
@@ -310,7 +311,7 @@ public class LoadConfigurationRunnable i
// Verifying we found the 'ou=config' base entry
if ( configEntry == null )
{
- // TODO throw a new error
+ throw new LdapNoSuchObjectException( "Unable to find the 'ou=config' base entry." );
}
// Creating a list to hold the entries that needs to be checked
Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/SaveConfigurationRunnable.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/SaveConfigurationRunnable.java?rev=1060888&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/SaveConfigurationRunnable.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/jobs/SaveConfigurationRunnable.java Wed Jan 19 18:03:45 2011
@@ -0,0 +1,157 @@
+/*
+ * 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.v2.jobs;
+
+
+import org.apache.directory.studio.apacheds.configuration.v2.editor.ConnectionServerConfigurationInput;
+import org.apache.directory.studio.apacheds.configuration.v2.editor.NewServerConfigurationInput;
+import org.apache.directory.studio.apacheds.configuration.v2.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.v2.editor.ServerConfigurationEditorUtils;
+import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
+import org.apache.directory.studio.common.core.jobs.StudioRunnableWithProgress;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPathEditorInput;
+import org.eclipse.ui.part.FileEditorInput;
+
+
+/**
+ * This class implements a {@link Job} that is used to save a server configuration.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SaveConfigurationRunnable implements StudioRunnableWithProgress
+{
+ /** The associated editor */
+ private ServerConfigurationEditor editor;
+
+
+ /**
+ * Creates a new instance of SaveConfigurationRunnable.
+ *
+ * @param editor
+ * the editor
+ */
+ public SaveConfigurationRunnable( ServerConfigurationEditor editor )
+ {
+ super();
+ this.editor = editor;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getErrorMessage()
+ {
+ return "Unable to save the configuration.";
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object[] getLockedObjects()
+ {
+ return new Object[0];
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getName()
+ {
+ return "Save Configuration";
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void run( StudioProgressMonitor monitor )
+ {
+ try
+ {
+ if ( editor.isDirty() )
+ {
+ monitor.beginTask( "Saving the server configuration", IProgressMonitor.UNKNOWN );
+
+ IEditorInput input = editor.getEditorInput();
+ String inputClassName = input.getClass().getName();
+ boolean success = false;
+ if ( input instanceof FileEditorInput )
+ // FileEditorInput class is used when the file is opened
+ // from a project in the workspace.
+ {
+ // Saving the ServerConfiguration to disk
+ ServerConfigurationEditorUtils.saveConfiguration( ( FileEditorInput ) input,
+ editor.getConfigWriter(),
+ monitor );
+ success = true;
+ }
+ // If the input is a ConnectionServerConfigurationInput, then we
+ // read the server configuration from the selected connection
+ if ( input instanceof ConnectionServerConfigurationInput )
+ {
+ // Saving the ServerConfiguration to the connection
+ ServerConfigurationEditorUtils.saveConfiguration( ( ConnectionServerConfigurationInput ) input,
+ editor.getConfigWriter(), monitor );
+ success = true;
+ }
+ else if ( input instanceof IPathEditorInput )
+ {
+ // Saving the ServerConfiguration to disk
+ ServerConfigurationEditorUtils
+ .saveConfiguration( ( ( IPathEditorInput ) input ).getPath().toFile(), editor.getConfigWriter() );
+ success = true;
+ }
+ else if ( inputClassName.equals( "org.eclipse.ui.internal.editors.text.JavaFileEditorInput" ) //$NON-NLS-1$
+ || inputClassName.equals( "org.eclipse.ui.ide.FileStoreEditorInput" ) ) //$NON-NLS-1$
+ // The class 'org.eclipse.ui.internal.editors.text.JavaFileEditorInput'
+ // is used when opening a file from the menu File > Open... in Eclipse 3.2.x
+ // The class 'org.eclipse.ui.ide.FileStoreEditorInput' is used when
+ // opening a file from the menu File > Open... in Eclipse 3.3.x
+ {
+ // Saving the ServerConfiguration to disk
+ ServerConfigurationEditorUtils.saveConfiguration( input.getToolTipText(), editor.getConfigWriter() );
+ success = true;
+ }
+ else if ( input instanceof NewServerConfigurationInput )
+ {
+ // The 'ServerConfigurationEditorInput' class is used when a
+ // new Server Configuration File is created.
+
+ // We are saving this as if it is a "Save as..." action.
+ success = editor.doSaveAs( monitor );
+ }
+
+ editor.setDirty( !success );
+ }
+ }
+ catch ( Exception e )
+ {
+ // Reporting the error to the monitor
+ monitor.reportError( e );
+ }
+ }
+}