You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2007/10/14 22:11:40 UTC
svn commit: r584597 - in
/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core:
internal/model/ jobs/ model/
Author: seelmann
Date: Sun Oct 14 13:11:40 2007
New Revision: 584597
URL: http://svn.apache.org/viewvc?rev=584597&view=rev
Log:
DIRSTUDIO-123: Moved modrdn code from BrowserConnection to MoveEntriesJob and RenameEntryJob.
Modified:
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ConnectionModifyHandler.java
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/DummyConnection.java
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java Sun Oct 14 13:11:40 2007
@@ -547,18 +547,6 @@
}
- public void rename( IEntry entryToRename, DN newDn, boolean deleteOldRdn, StudioProgressMonitor monitor )
- {
- modifyHandler.rename( entryToRename, newDn, deleteOldRdn, monitor );
- }
-
-
- public void move( IEntry entryToMove, DN newSuperior, StudioProgressMonitor monitor )
- {
- modifyHandler.move( entryToMove, newSuperior, monitor );
- }
-
-
public LdifEnumeration exportLdif( SearchParameter searchParameter, StudioProgressMonitor monitor )
throws ConnectionException
{
@@ -786,6 +774,20 @@
protected void uncacheEntry( IEntry entry )
{
this.dnToEntryCache.remove( entry.getDn().toOidString( this.schema ) );
+ }
+
+
+ public void uncacheEntryRecursive( IEntry entry )
+ {
+ IEntry[] children = entry.getChildren();
+ if ( entry.getChildren() != null )
+ {
+ for ( int i = 0; i < children.length; i++ )
+ {
+ uncacheEntryRecursive( children[i] );
+ }
+ }
+ uncacheEntry( entry );
}
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ConnectionModifyHandler.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ConnectionModifyHandler.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ConnectionModifyHandler.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ConnectionModifyHandler.java Sun Oct 14 13:11:40 2007
@@ -210,70 +210,6 @@
}
- void rename( IEntry entryToRename, DN newDn, boolean deleteOldRdn, StudioProgressMonitor monitor )
- {
- try
- {
- LdifChangeModDnRecord cmdr = new LdifChangeModDnRecord( LdifDnLine
- .create( entryToRename.getDn().toString() ) );
- ModelConverter.addControls( cmdr, entryToRename );
- cmdr.setChangeType( LdifChangeTypeLine.createModDn() );
-
- cmdr.setNewrdn( LdifNewrdnLine.create( newDn.getRdn().toString() ) );
- cmdr.setDeloldrdn( deleteOldRdn ? LdifDeloldrdnLine.create1() : LdifDeloldrdnLine.create0() );
- cmdr.finish( LdifSepLine.create() );
-
- this.applyModificationAndLog( cmdr, monitor );
-
- uncacheChildren( entryToRename );
-
- }
- catch ( ConnectionException e )
- {
- monitor.reportError( e );
- }
- }
-
-
- void move( IEntry entryToMove, DN newSuperior, StudioProgressMonitor monitor )
- {
- try
- {
- LdifChangeModDnRecord cmdr = new LdifChangeModDnRecord( LdifDnLine.create( entryToMove.getDn().toString() ) );
- ModelConverter.addControls( cmdr, entryToMove );
- cmdr.setChangeType( LdifChangeTypeLine.createModDn() );
-
- cmdr.setNewrdn( LdifNewrdnLine.create( entryToMove.getRdn().toString() ) );
- cmdr.setDeloldrdn( LdifDeloldrdnLine.create0() );
- cmdr.setNewsuperior( LdifNewsuperiorLine.create( newSuperior.toString() ) );
- cmdr.finish( LdifSepLine.create() );
-
- this.applyModificationAndLog( cmdr, monitor );
-
- uncacheChildren( entryToMove );
-
- }
- catch ( ConnectionException e )
- {
- monitor.reportError( e );
- }
- }
-
-
- private void uncacheChildren( IEntry entry )
- {
- IEntry[] children = entry.getChildren();
- if ( entry.getChildren() != null )
- {
- for ( int i = 0; i < children.length; i++ )
- {
- uncacheChildren( children[i] );
- }
- }
- browserConnection.uncacheEntry( entry );
- }
-
-
void delete( IEntry entry, StudioProgressMonitor monitor )
{
try
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/DummyConnection.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/DummyConnection.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/DummyConnection.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/DummyConnection.java Sun Oct 14 13:11:40 2007
@@ -172,16 +172,6 @@
}
- public void move( IEntry entryToMove, DN newSuperior, StudioProgressMonitor monitor )
- {
- }
-
-
- public void rename( IEntry entryToRename, DN newDn, boolean deleteOldRdn, StudioProgressMonitor monitor )
- {
- }
-
-
public void search( ISearch searchRequest, StudioProgressMonitor monitor )
{
}
@@ -259,4 +249,7 @@
return null;
}
+ public void uncacheEntryRecursive( IEntry entry )
+ {
+ }
}
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java Sun Oct 14 13:11:40 2007
@@ -24,10 +24,12 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import javax.naming.ldap.Control;
+import javax.naming.ldap.ManageReferralControl;
+
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.StudioProgressMonitor;
import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
@@ -41,23 +43,39 @@
import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
+/**
+ * Job to move entries.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
public class MoveEntriesJob extends AbstractNotificationJob
{
- private IBrowserConnection connection;
+ /** The browser connection. */
+ private IBrowserConnection browserConnection;
+ /** The entries to move. */
private IEntry[] oldEntries;
+ /** The new parent. */
private IEntry newParent;
+ /** The moved entries. */
private IEntry[] newEntries;
- private Set searchesToUpdateSet = new HashSet();
+ private Set<ISearch> updatedSearches = new HashSet<ISearch>();
+ /**
+ * Creates a new instance of MoveEntriesJob.
+ *
+ * @param entries the entries to move
+ * @param newParent the new parent
+ */
public MoveEntriesJob( IEntry[] entries, IEntry newParent )
{
- this.connection = newParent.getBrowserConnection();
+ this.browserConnection = newParent.getBrowserConnection();
this.oldEntries = entries;
this.newParent = newParent;
@@ -66,25 +84,33 @@
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getConnections()
+ */
protected Connection[] getConnections()
{
return new Connection[]
- { connection.getConnection() };
+ { browserConnection.getConnection() };
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getLockedObjects()
+ */
protected Object[] getLockedObjects()
{
- List l = new ArrayList();
+ List<IEntry> l = new ArrayList<IEntry>();
l.add( newParent );
l.addAll( Arrays.asList( oldEntries ) );
return l.toArray();
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractNotificationJob#executeNotificationJob(org.apache.directory.studio.connection.core.StudioProgressMonitor)
+ */
protected void executeNotificationJob( StudioProgressMonitor monitor )
{
-
monitor.beginTask( BrowserCoreMessages.bind(
oldEntries.length == 1 ? BrowserCoreMessages.jobs__move_entry_task_1
: BrowserCoreMessages.jobs__move_entry_task_n, new String[]
@@ -92,15 +118,14 @@
monitor.reportProgress( " " ); //$NON-NLS-1$
monitor.worked( 1 );
- this.newEntries = new IEntry[oldEntries.length];
+ newEntries = new IEntry[oldEntries.length];
for ( int i = 0; i < oldEntries.length; i++ )
{
- this.newEntries[i] = oldEntries[i];
+ newEntries[i] = oldEntries[i];
}
for ( int i = 0; i < oldEntries.length; i++ )
{
-
IEntry oldEntry = oldEntries[i];
IEntry oldParent = oldEntry.getParententry();
DN newDn = new DN( oldEntry.getRdn(), newParent.getDn() );
@@ -109,15 +134,16 @@
// TODO: use manual/simulated move, if move of subtree is not
// supported
int errorStatusSize1 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$
- connection.move( oldEntry, newParent.getDn(), monitor );
+ moveEntry( browserConnection, oldEntry, newDn.toString(), monitor );
+ //connection.move( oldEntry, newParent.getDn(), monitor );
int errorStatusSize2 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$
if ( errorStatusSize1 == errorStatusSize2 )
{
// move in parent
oldParent.deleteChild( oldEntry );
- IEntry newEntry = connection.getEntry( newDn, monitor );
- this.newEntries[i] = newEntry;
+ IEntry newEntry = browserConnection.getEntry( newDn, monitor );
+ newEntries[i] = newEntry;
newParent.addChild( newEntry );
newParent.setHasMoreChildren( false );
@@ -128,7 +154,7 @@
}
// move in searches
- ISearch[] searches = connection.getSearchManager().getSearches();
+ ISearch[] searches = browserConnection.getSearchManager().getSearches();
for ( int j = 0; j < searches.length; j++ )
{
ISearch search = searches[j];
@@ -146,7 +172,7 @@
search.setSearchResults( newsrs );
searchResults = newsrs;
k--;
- searchesToUpdateSet.add( search );
+ updatedSearches.add( search );
}
}
}
@@ -156,6 +182,9 @@
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractNotificationJob#runNotification()
+ */
protected void runNotification()
{
for ( int i = 0; i < newEntries.length; i++ )
@@ -165,18 +194,47 @@
EventRegistry.fireEntryUpdated( new EntryMovedEvent( oldEntries[i], newEntries[i] ), this );
}
}
- for ( Iterator it = searchesToUpdateSet.iterator(); it.hasNext(); )
+ for ( ISearch search : updatedSearches )
{
- ISearch search = ( ISearch ) it.next();
- EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.EventDetail.SEARCH_PERFORMED ), this );
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search,
+ SearchUpdateEvent.EventDetail.SEARCH_PERFORMED ), this );
}
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getErrorMessage()
+ */
protected String getErrorMessage()
{
return oldEntries.length == 1 ? BrowserCoreMessages.jobs__move_entry_error_1
: BrowserCoreMessages.jobs__move_entry_error_n;
+ }
+
+
+ /**
+ * Moves an entry.
+ *
+ * @param browserConnection the browser connection
+ * @param oldEntry the old entry
+ * @param newDn the new dn
+ * @param monitor the progress monitor
+ */
+ private void moveEntry( IBrowserConnection browserConnection, IEntry oldEntry, String newDn,
+ StudioProgressMonitor monitor )
+ {
+ // dn
+ String oldDn = oldEntry.getDn().toString();
+
+ // controls
+ Control[] controls = null;
+ if ( oldEntry.isReferral() )
+ {
+ controls = new Control[]
+ { new ManageReferralControl() };
+ }
+
+ browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDn, newDn, false, controls, monitor );
}
}
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Sun Oct 14 13:11:40 2007
@@ -23,10 +23,12 @@
import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import javax.naming.ldap.Control;
+import javax.naming.ldap.ManageReferralControl;
+
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.StudioProgressMonitor;
import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
@@ -41,22 +43,41 @@
import org.apache.directory.studio.ldapbrowser.core.model.RDN;
+/**
+ * Job to rename an entry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
public class RenameEntryJob extends AbstractNotificationJob
{
+ /** The browser connection. */
private IBrowserConnection browserConnection;
+ /** The old entry. */
private IEntry oldEntry;
+ /** The new rdn. */
private RDN newRdn;
+ /** The delete old rdn flag. */
private boolean deleteOldRdn;
+ /** The new entry. */
private IEntry newEntry;
- private Set searchesToUpdateSet = new HashSet();
+ /** The updated searches. */
+ private Set<ISearch> updatedSearchesSet = new HashSet<ISearch>();
+ /**
+ * Creates a new instance of RenameEntryJob.
+ *
+ * @param entry the entry to rename
+ * @param newRdn the new rdn
+ * @param deleteOldRdn the delete old rdn flag
+ */
public RenameEntryJob( IEntry entry, RDN newRdn, boolean deleteOldRdn )
{
this.browserConnection = entry.getBrowserConnection();
@@ -69,6 +90,9 @@
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getConnections()
+ */
protected Connection[] getConnections()
{
return new Connection[]
@@ -76,19 +100,24 @@
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getLockedObjects()
+ */
protected Object[] getLockedObjects()
{
- List l = new ArrayList();
+ List<Object> l = new ArrayList<Object>();
l.add( oldEntry.getParententry() );
return l.toArray();
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractNotificationJob#executeNotificationJob(org.apache.directory.studio.connection.core.StudioProgressMonitor)
+ */
protected void executeNotificationJob( StudioProgressMonitor monitor )
{
-
monitor.beginTask( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__rename_entry_task, new String[]
- { this.oldEntry.getDn().toString() } ), 3 );
+ { oldEntry.getDn().toString() } ), 3 );
monitor.reportProgress( " " ); //$NON-NLS-1$
monitor.worked( 1 );
@@ -98,13 +127,16 @@
// rename in directory
// TODO: use manual/simulated rename, if rename of subtree is not
// supported
- browserConnection.rename( oldEntry, newDn, deleteOldRdn, monitor );
+ renameEntry( browserConnection, oldEntry, newDn.toString(), deleteOldRdn, monitor );
if ( !monitor.errorsReported() )
{
+ // uncache old entry
+ browserConnection.uncacheEntryRecursive( oldEntry );
+
// rename in parent
parent.deleteChild( oldEntry );
- this.newEntry = browserConnection.getEntry( newDn, monitor );
+ newEntry = browserConnection.getEntry( newDn, monitor );
parent.addChild( newEntry );
parent.setHasMoreChildren( false );
@@ -133,7 +165,7 @@
search.setSearchResults( newsrs );
searchResults = newsrs;
k--;
- searchesToUpdateSet.add( search );
+ updatedSearchesSet.add( search );
}
}
}
@@ -142,23 +174,57 @@
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractNotificationJob#runNotification()
+ */
protected void runNotification()
{
if ( oldEntry != null && newEntry != null )
{
EventRegistry.fireEntryUpdated( new EntryRenamedEvent( oldEntry, newEntry ), this );
}
- for ( Iterator it = searchesToUpdateSet.iterator(); it.hasNext(); )
+ for ( ISearch search : updatedSearchesSet )
{
- ISearch search = ( ISearch ) it.next();
- EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.EventDetail.SEARCH_PERFORMED ), this );
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search,
+ SearchUpdateEvent.EventDetail.SEARCH_PERFORMED ), this );
}
}
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getErrorMessage()
+ */
protected String getErrorMessage()
{
return BrowserCoreMessages.jobs__rename_entry_error;
+ }
+
+
+ /**
+ * Renames the entry.
+ *
+ * @param browserConnection the browser connection
+ * @param oldEntry the old entry
+ * @param newDn the new dn
+ * @param deleteOldRdn the delete old rdn flag
+ * @param monitor the progress monitor
+ */
+ static void renameEntry( IBrowserConnection browserConnection, IEntry oldEntry, String newDn, boolean deleteOldRdn,
+ StudioProgressMonitor monitor )
+ {
+ // dn
+ String oldDn = oldEntry.getDn().toString();
+
+ // controls
+ Control[] controls = null;
+ if ( oldEntry.isReferral() )
+ {
+ controls = new Control[]
+ { new ManageReferralControl() };
+ }
+
+ browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDn, newDn, deleteOldRdn, controls,
+ monitor );
}
}
Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java?rev=584597&r1=584596&r2=584597&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java Sun Oct 14 13:11:40 2007
@@ -166,12 +166,6 @@
public abstract void modify( IValue oldValue, IValue newVaue, StudioProgressMonitor monitor );
- public abstract void rename( IEntry entryToRename, DN newDn, boolean deleteOldRdn, StudioProgressMonitor monitor );
-
-
- public abstract void move( IEntry entryToMove, DN newSuperior, StudioProgressMonitor monitor );
-
-
public abstract void importLdif( LdifEnumeration enumeration, Writer logWriter, boolean continueOnError,
StudioProgressMonitor monitor );
@@ -184,6 +178,7 @@
public abstract int hashCode();
-
public abstract boolean equals( Object obj );
+
+ public abstract void uncacheEntryRecursive( IEntry entry );
}