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 2006/12/18 18:15:08 UTC
svn commit: r488345 [9/12] - in /directory/sandbox/pamarcelot/ldapstudio:
ldapstudio-browser-core/ ldapstudio-browser-core/META-INF/
ldapstudio-browser-core/about_files/ ldapstudio-browser-core/lib/
ldapstudio-browser-core/src/ ldapstudio-browser-core/...
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ModifyValueJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ModifyValueJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ModifyValueJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ModifyValueJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,98 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ValueModifiedEvent;
+import org.apache.directory.ldapstudio.browser.core.internal.model.Value;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+
+
+public class ModifyValueJob extends AbstractModificationJob
+{
+
+ private IAttribute attribute;
+
+ private IValue oldValue;
+
+ private Object newRawValue;
+
+ private ValueModifiedEvent event;
+
+
+ public ModifyValueJob( IAttribute attribute, IValue oldValue, Object newRawValue )
+ {
+ this.attribute = attribute;
+ this.oldValue = oldValue;
+ this.newRawValue = newRawValue;
+ setName( BrowserCoreMessages.jobs__modify_value_name );
+ }
+
+
+ protected void executeAsyncModificationJob( ExtendedProgressMonitor monitor ) throws ModelModificationException
+ {
+
+ monitor.beginTask( BrowserCoreMessages.jobs__modify_value_task, 2 );
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+ monitor.worked( 1 );
+
+ IValue newValue = new Value( attribute, newRawValue );
+ attribute.modifyValue( oldValue, newValue, this );
+ attribute.getEntry().getConnection().modify( oldValue, newValue, monitor );
+
+ this.event = new ValueModifiedEvent( attribute.getEntry().getConnection(), attribute.getEntry(), attribute,
+ oldValue, newValue, this );
+ }
+
+
+ protected IEntry getModifiedEntry()
+ {
+ return attribute.getEntry();
+ }
+
+
+ protected String[] getAffectedAttributeNames()
+ {
+ return new String[]
+ { this.attribute.getDescription() };
+ }
+
+
+ protected void runNotification()
+ {
+ if ( this.event != null )
+ {
+ EventRegistry.fireEntryUpdated( this.event, this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return BrowserCoreMessages.jobs__modify_value_error;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/MoveEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/MoveEntriesJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/MoveEntriesJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/MoveEntriesJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,177 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+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 org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.EntryMovedEvent;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateEvent;
+import org.apache.directory.ldapstudio.browser.core.model.DN;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.ISearch;
+import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
+
+
+public class MoveEntriesJob extends AbstractAsyncBulkJob implements ModelModifier
+{
+
+ private IConnection connection;
+
+ private IEntry[] oldEntries;
+
+ private IEntry newParent;
+
+ private IEntry[] newEntries;
+
+ private Set searchesToUpdateSet = new HashSet();
+
+
+ public MoveEntriesJob( IEntry[] entries, IEntry newParent )
+ {
+ this.connection = newParent.getConnection();
+ this.oldEntries = entries;
+ this.newParent = newParent;
+
+ setName( entries.length == 1 ? BrowserCoreMessages.jobs__move_entry_name_1
+ : BrowserCoreMessages.jobs__move_entry_name_n );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ return new IConnection[]
+ { connection };
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.add( newParent );
+ l.addAll( Arrays.asList( oldEntries ) );
+ return l.toArray();
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor monitor )
+ {
+
+ monitor.beginTask( BrowserCoreMessages.bind(
+ oldEntries.length == 1 ? BrowserCoreMessages.jobs__move_entry_task_1
+ : BrowserCoreMessages.jobs__move_entry_task_n, new String[]
+ {} ), 3 );
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+ monitor.worked( 1 );
+
+ this.newEntries = new IEntry[oldEntries.length];
+
+ for ( int i = 0; i < oldEntries.length; i++ )
+ {
+
+ IEntry oldEntry = oldEntries[i];
+ IEntry oldParent = oldEntry.getParententry();
+ DN newDn = new DN( oldEntry.getRdn(), newParent.getDn() );
+
+ // move in directory
+ // 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 );
+ int errorStatusSize2 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$
+
+ if ( errorStatusSize1 == errorStatusSize2 )
+ {
+ // move in parent
+ oldParent.deleteChild( oldEntry, this );
+ IEntry newEntry = connection.getEntry( newDn, monitor );
+ this.newEntries[i] = newEntry;
+ newParent.addChild( newEntry, this );
+ newParent.setHasMoreChildren( false, this );
+
+ newEntry.setHasChildrenHint( oldEntry.hasChildren(), this );
+ if ( oldEntry.isChildrenInitialized() )
+ {
+ InitializeChildrenJob.initializeChildren( newEntry, monitor );
+ }
+
+ // move in searches
+ ISearch[] searches = connection.getSearchManager().getSearches();
+ for ( int j = 0; j < searches.length; j++ )
+ {
+ ISearch search = searches[j];
+ if ( search.getSearchResults() != null )
+ {
+ ISearchResult[] searchResults = search.getSearchResults();
+ for ( int k = 0; k < searchResults.length; k++ )
+ {
+ ISearchResult result = searchResults[k];
+ if ( oldEntry.equals( result.getEntry() ) )
+ {
+ ISearchResult[] newsrs = new ISearchResult[searchResults.length - 1];
+ System.arraycopy( searchResults, 0, newsrs, 0, k );
+ System.arraycopy( searchResults, k + 1, newsrs, k, searchResults.length - k - 1 );
+ search.setSearchResults( newsrs );
+ searchResults = newsrs;
+ k--;
+ searchesToUpdateSet.add( search );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ for ( int i = 0; i < newEntries.length; i++ )
+ {
+ if ( oldEntries[i] != null && newEntries[i] != null )
+ {
+ EventRegistry.fireEntryUpdated( new EntryMovedEvent( oldEntries[i], newEntries[i], this ), this );
+ }
+ }
+ for ( Iterator it = searchesToUpdateSet.iterator(); it.hasNext(); )
+ {
+ ISearch search = ( ISearch ) it.next();
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.SEARCH_PERFORMED ), this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return oldEntries.length == 1 ? BrowserCoreMessages.jobs__move_entry_error_1
+ : BrowserCoreMessages.jobs__move_entry_error_n;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/OpenConnectionsJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/OpenConnectionsJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/OpenConnectionsJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/OpenConnectionsJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,115 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateEvent;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+
+
+public class OpenConnectionsJob extends AbstractAsyncBulkJob
+{
+
+ private IConnection[] connections;
+
+
+ public OpenConnectionsJob( IConnection connection )
+ {
+ this( new IConnection[]
+ { connection } );
+ }
+
+
+ public OpenConnectionsJob( IConnection[] connections )
+ {
+ this.connections = connections;
+ setName( connections.length == 1 ? BrowserCoreMessages.jobs__open_connections_name_1
+ : BrowserCoreMessages.jobs__open_connections_name_n );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ return new IConnection[0];
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.addAll( Arrays.asList( connections ) );
+ return l.toArray();
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return connections.length == 1 ? BrowserCoreMessages.jobs__open_connections_error_1
+ : BrowserCoreMessages.jobs__open_connections_error_n;
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor monitor )
+ {
+
+ monitor.beginTask( " ", connections.length * 6 + 1 ); //$NON-NLS-1$
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+
+ for ( int i = 0; i < connections.length; i++ )
+ {
+ if ( connections[i].canOpen() )
+ {
+
+ monitor.setTaskName( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__open_connections_task,
+ new String[]
+ { this.connections[i].getName() } ) );
+ monitor.worked( 1 );
+
+ connections[i].open( monitor );
+ }
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ for ( int i = 0; i < connections.length; i++ )
+ {
+ if ( connections[i].isOpened() )
+ {
+ EventRegistry.fireConnectionUpdated( new ConnectionUpdateEvent( connections[i],
+ ConnectionUpdateEvent.CONNECTION_OPENED ), this );
+ }
+ else
+ {
+ EventRegistry.fireConnectionUpdated( new ConnectionUpdateEvent( connections[i],
+ ConnectionUpdateEvent.CONNECTION_CLOSED ), this );
+ }
+ }
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReadEntryJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReadEntryJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReadEntryJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReadEntryJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,101 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.model.DN;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+
+
+public class ReadEntryJob extends AbstractAsyncBulkJob
+{
+
+ private IConnection connection;
+
+ private DN dn;
+
+ private IEntry readEntry;
+
+
+ public ReadEntryJob( IConnection connection, DN dn )
+ {
+ this.connection = connection;
+ this.dn = dn;
+ this.readEntry = null;
+
+ setName( BrowserCoreMessages.jobs__read_entry_name );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ return new IConnection[]
+ { connection };
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.add( connection );
+ return l.toArray();
+ }
+
+
+ public IEntry getReadEntry()
+ {
+ return readEntry;
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return BrowserCoreMessages.jobs__read_entry_error;
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor pm ) throws ModelModificationException
+ {
+ readEntry = connection.getEntryFromCache( dn );
+ if ( readEntry == null )
+ {
+
+ pm.beginTask( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__read_entry_task, new String[]
+ { dn.toString() } ), 2 );
+ pm.reportProgress( " " ); //$NON-NLS-1$
+ pm.worked( 1 );
+
+ readEntry = connection.getEntry( dn, pm );
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReloadSchemasJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReloadSchemasJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReloadSchemasJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/ReloadSchemasJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,98 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateEvent;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+
+
+public class ReloadSchemasJob extends AbstractAsyncBulkJob
+{
+
+ private IConnection[] connections;
+
+
+ public ReloadSchemasJob( IConnection[] connections )
+ {
+ this.connections = connections;
+ setName( connections.length == 1 ? BrowserCoreMessages.jobs__reload_schemas_name_1
+ : BrowserCoreMessages.jobs__reload_schemas_name_n );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ return connections;
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.addAll( Arrays.asList( connections ) );
+ return l.toArray();
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor monitor )
+ {
+
+ monitor.beginTask( " ", connections.length + 1 ); //$NON-NLS-1$
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+
+ for ( int i = 0; i < connections.length; i++ )
+ {
+
+ monitor.setTaskName( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__reload_schemas_task, new String[]
+ { connections[i].getName() } ) );
+ monitor.worked( 1 );
+
+ if ( connections[i].isOpened() )
+ {
+ connections[i].reloadSchema( monitor );
+ }
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ for ( int i = 0; i < connections.length; i++ )
+ {
+ EventRegistry.fireConnectionUpdated( new ConnectionUpdateEvent( connections[i],
+ ConnectionUpdateEvent.CONNECTION_SCHEMA_LOADED ), this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return connections.length == 1 ? BrowserCoreMessages.jobs__reload_schemas_error_1
+ : BrowserCoreMessages.jobs__reload_schemas_error_n;
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameEntryJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameEntryJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameEntryJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameEntryJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,162 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.EntryRenamedEvent;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateEvent;
+import org.apache.directory.ldapstudio.browser.core.model.DN;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.ISearch;
+import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
+import org.apache.directory.ldapstudio.browser.core.model.RDN;
+
+
+public class RenameEntryJob extends AbstractAsyncBulkJob implements ModelModifier
+{
+
+ private IConnection connection;
+
+ private IEntry oldEntry;
+
+ private RDN newRdn;
+
+ private boolean deleteOldRdn;
+
+ private IEntry newEntry;
+
+ private Set searchesToUpdateSet = new HashSet();
+
+
+ public RenameEntryJob( IEntry entry, RDN newRdn, boolean deleteOldRdn )
+ {
+ this.connection = entry.getConnection();
+ this.oldEntry = entry;
+ this.newRdn = newRdn;
+ this.deleteOldRdn = deleteOldRdn;
+
+ setName( BrowserCoreMessages.jobs__rename_entry_name );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ return new IConnection[]
+ { connection };
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.add( oldEntry.getParententry() );
+ return l.toArray();
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor monitor )
+ {
+
+ monitor.beginTask( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__rename_entry_task, new String[]
+ { this.oldEntry.getDn().toString() } ), 3 );
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+ monitor.worked( 1 );
+
+ IEntry parent = oldEntry.getParententry();
+ DN newDn = new DN( newRdn, parent.getDn() );
+
+ // rename in directory
+ // TODO: use manual/simulated rename, if rename of subtree is not
+ // supported
+ connection.rename( oldEntry, newDn, deleteOldRdn, monitor );
+
+ if ( !monitor.errorsReported() )
+ {
+ // rename in parent
+ parent.deleteChild( oldEntry, this );
+ this.newEntry = connection.getEntry( newDn, monitor );
+ parent.addChild( newEntry, this );
+ parent.setHasMoreChildren( false, this );
+
+ newEntry.setHasChildrenHint( oldEntry.hasChildren(), this );
+ if ( oldEntry.isChildrenInitialized() )
+ {
+ InitializeChildrenJob.initializeChildren( newEntry, monitor );
+ }
+
+ // rename in searches
+ ISearch[] searches = connection.getSearchManager().getSearches();
+ for ( int j = 0; j < searches.length; j++ )
+ {
+ ISearch search = searches[j];
+ if ( search.getSearchResults() != null )
+ {
+ ISearchResult[] searchResults = search.getSearchResults();
+ for ( int k = 0; k < searchResults.length; k++ )
+ {
+ ISearchResult result = searchResults[k];
+ if ( oldEntry.equals( result.getEntry() ) )
+ {
+ ISearchResult[] newsrs = new ISearchResult[searchResults.length - 1];
+ System.arraycopy( searchResults, 0, newsrs, 0, k );
+ System.arraycopy( searchResults, k + 1, newsrs, k, searchResults.length - k - 1 );
+ search.setSearchResults( newsrs );
+ searchResults = newsrs;
+ k--;
+ searchesToUpdateSet.add( search );
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ if ( oldEntry != null && newEntry != null )
+ {
+ EventRegistry.fireEntryUpdated( new EntryRenamedEvent( oldEntry, newEntry, this ), this );
+ }
+ for ( Iterator it = searchesToUpdateSet.iterator(); it.hasNext(); )
+ {
+ ISearch search = ( ISearch ) it.next();
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.SEARCH_PERFORMED ), this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return BrowserCoreMessages.jobs__rename_entry_error;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameValuesJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameValuesJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameValuesJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/RenameValuesJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,143 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ValueRenamedEvent;
+import org.apache.directory.ldapstudio.browser.core.internal.model.Attribute;
+import org.apache.directory.ldapstudio.browser.core.internal.model.Value;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+
+
+public class RenameValuesJob extends AbstractModificationJob
+{
+
+ private IEntry entry;
+
+ private IValue[] oldValues;
+
+ private String newAttributeName;
+
+ private ValueRenamedEvent event;
+
+
+ public RenameValuesJob( IEntry entry, IValue[] oldValues, String newAttributeName )
+ {
+ this.entry = entry;
+ this.oldValues = oldValues;
+ this.newAttributeName = newAttributeName;
+
+ setName( oldValues.length == 1 ? BrowserCoreMessages.jobs__rename_value_name_1
+ : BrowserCoreMessages.jobs__rename_value_name_n );
+ }
+
+
+ protected void executeAsyncModificationJob( ExtendedProgressMonitor monitor ) throws ModelModificationException
+ {
+
+ monitor.beginTask( oldValues.length == 1 ? BrowserCoreMessages.jobs__rename_value_task_1
+ : BrowserCoreMessages.jobs__rename_value_task_n, 2 );
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+ monitor.worked( 1 );
+
+ for ( int i = 0; i < oldValues.length; i++ )
+ {
+ if ( oldValues[i].getAttribute().getEntry() != this.entry )
+ {
+ return;
+ }
+ }
+
+ IValue[] newValues = new IValue[oldValues.length];
+ for ( int i = 0; i < oldValues.length; i++ )
+ {
+
+ IAttribute newAttribute = entry.getAttribute( newAttributeName );
+ if ( newAttribute == null )
+ {
+ newAttribute = new Attribute( entry, newAttributeName );
+ entry.addAttribute( newAttribute, this );
+ }
+
+ newValues[i] = new Value( newAttribute, oldValues[i].getRawValue() );
+ newAttribute.addValue( newValues[i], this );
+
+ oldValues[i].getAttribute().deleteValue( oldValues[i], this );
+
+ if ( this.event == null )
+ {
+ this.event = new ValueRenamedEvent( entry.getConnection(), entry, oldValues[0], newValues[0], this );
+ }
+ }
+
+ if ( !monitor.errorsReported() )
+ {
+ entry.getConnection().create( newValues, monitor );
+ }
+ if ( !monitor.errorsReported() )
+ {
+ entry.getConnection().delete( oldValues, monitor );
+ }
+ }
+
+
+ protected IEntry getModifiedEntry()
+ {
+ return this.entry;
+ }
+
+
+ protected String[] getAffectedAttributeNames()
+ {
+ Set affectedAttributeNameSet = new HashSet();
+ affectedAttributeNameSet.add( newAttributeName );
+ for ( int i = 0; i < oldValues.length; i++ )
+ {
+ affectedAttributeNameSet.add( oldValues[i].getAttribute().getDescription() );
+ }
+ return ( String[] ) affectedAttributeNameSet.toArray( new String[affectedAttributeNameSet.size()] );
+ }
+
+
+ protected void runNotification()
+ {
+ if ( this.event != null )
+ {
+ EventRegistry.fireEntryUpdated( this.event, this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return oldValues.length == 1 ? BrowserCoreMessages.jobs__rename_value_error_1
+ : BrowserCoreMessages.jobs__rename_value_error_n;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/SearchJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/SearchJob.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/SearchJob.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/jobs/SearchJob.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,115 @@
+/*
+ * 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.ldapstudio.browser.core.jobs;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateEvent;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.ISearch;
+
+
+public class SearchJob extends AbstractAsyncBulkJob
+{
+
+ private ISearch[] searches;
+
+
+ public SearchJob( ISearch[] searches )
+ {
+ this.searches = searches;
+ setName( BrowserCoreMessages.jobs__search_name );
+ }
+
+
+ protected IConnection[] getConnections()
+ {
+ IConnection[] connections = new IConnection[searches.length];
+ for ( int i = 0; i < connections.length; i++ )
+ {
+ connections[i] = searches[i].getConnection();
+ }
+ return connections;
+ }
+
+
+ protected Object[] getLockedObjects()
+ {
+ List l = new ArrayList();
+ l.addAll( Arrays.asList( searches ) );
+ return l.toArray();
+ }
+
+
+ protected void executeBulkJob( ExtendedProgressMonitor monitor )
+ {
+
+ monitor.beginTask( " ", searches.length + 1 ); //$NON-NLS-1$
+ monitor.reportProgress( " " ); //$NON-NLS-1$
+
+ for ( int pi = 0; pi < searches.length; pi++ )
+ {
+ ISearch search = searches[pi];
+
+ monitor.setTaskName( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__search_task, new String[]
+ { search.getName() } ) );
+ monitor.worked( 1 );
+
+ if ( search.getConnection() != null && search.getConnection().isOpened() )
+ {
+
+ // // clear search result attributes
+ // if(search.getSearchResults() != null) {
+ // ISearchResult[] srs = search.getSearchResults();
+ // for (int s = 0; s < srs.length; s++) {
+ // IEntry entry = srs[s].getEntry();
+ // entry.setAttributesInitialized(false, entry.getConnection());
+ // }
+ // }
+
+ search.getConnection().search( search, monitor );
+ }
+ }
+ }
+
+
+ protected void runNotification()
+ {
+ for ( int pi = 0; pi < searches.length; pi++ )
+ {
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( searches[pi], SearchUpdateEvent.SEARCH_PERFORMED ),
+ this );
+ }
+ }
+
+
+ protected String getErrorMessage()
+ {
+ return searches.length == 1 ? BrowserCoreMessages.jobs__search_error_1
+ : BrowserCoreMessages.jobs__search_error_n;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/AttributeHierachie.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/AttributeHierachie.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/AttributeHierachie.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/AttributeHierachie.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,92 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+
+public class AttributeHierachie
+{
+
+ private IEntry entry;
+
+ private String attributeDescription;
+
+ private IAttribute[] attributes;
+
+
+ public AttributeHierachie( IEntry entry, String attributeDescription, IAttribute[] attributes )
+ {
+ if ( entry == null || attributeDescription == null || attributes == null || attributes.length < 1
+ || attributes[0] == null )
+ {
+ throw new IllegalArgumentException( "Empty AttributeHierachie" );
+ }
+ this.entry = entry;
+ this.attributeDescription = attributeDescription;
+ this.attributes = attributes;
+ }
+
+
+ public IAttribute[] getAttributes()
+ {
+ return attributes;
+ }
+
+
+ public boolean contains( IAttribute att )
+ {
+ return Arrays.asList( attributes ).contains( att );
+ }
+
+
+ public Iterator iterator()
+ {
+ return Arrays.asList( attributes ).iterator();
+ }
+
+
+ public IAttribute getAttribute()
+ {
+ return attributes[0];
+ }
+
+
+ public int size()
+ {
+ return attributes.length;
+ }
+
+
+ public String getAttributeDescription()
+ {
+ return attributeDescription;
+ }
+
+
+ public IEntry getEntry()
+ {
+ return entry;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/BookmarkParameter.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/BookmarkParameter.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/BookmarkParameter.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/BookmarkParameter.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,72 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+
+
+public class BookmarkParameter implements Serializable
+{
+
+ private static final long serialVersionUID = 105108281861642267L;
+
+ private DN dn;
+
+ private String name;
+
+
+ public BookmarkParameter()
+ {
+ }
+
+
+ public BookmarkParameter( DN dn, String name )
+ {
+ this.dn = dn;
+ this.name = name;
+ }
+
+
+ public DN getDn()
+ {
+ return dn;
+ }
+
+
+ public void setDn( DN dn )
+ {
+ this.dn = dn;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ConnectionParameter.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ConnectionParameter.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ConnectionParameter.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ConnectionParameter.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,239 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+
+
+public class ConnectionParameter implements Serializable
+{
+
+ private static final long serialVersionUID = 3679909600732887964L;
+
+ private String name;
+
+ private String host;
+
+ private int encryptionMethod;
+
+ private int port;
+
+ private boolean fetchBaseDNs;
+
+ private DN baseDN;
+
+ private int timeLimit;
+
+ private int countLimit;
+
+ private int aliasesDereferencingMethod;
+
+ private int referralsHandlingMethod;
+
+ private int authMethod;
+
+ private String bindPrincipal;
+
+ private String bindPassword;
+
+ private String connectionProviderClassName;
+
+
+ public ConnectionParameter()
+ {
+ }
+
+
+ public DN getBaseDN()
+ {
+ return baseDN;
+ }
+
+
+ public void setBaseDN( DN baseDN )
+ {
+ this.baseDN = baseDN;
+ }
+
+
+ public int getCountLimit()
+ {
+ return countLimit;
+ }
+
+
+ public void setCountLimit( int countLimit )
+ {
+ this.countLimit = countLimit;
+ }
+
+
+ public String getHost()
+ {
+ return host;
+ }
+
+
+ public void setHost( String host )
+ {
+ this.host = host;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+
+ public int getPort()
+ {
+ return port;
+ }
+
+
+ public void setPort( int port )
+ {
+ this.port = port;
+ }
+
+
+ public int getTimeLimit()
+ {
+ return timeLimit;
+ }
+
+
+ public void setTimeLimit( int timeLimit )
+ {
+ this.timeLimit = timeLimit;
+ }
+
+
+ public boolean isFetchBaseDNs()
+ {
+ return fetchBaseDNs;
+ }
+
+
+ public void setFetchBaseDNs( boolean fetchBaseDNs )
+ {
+ this.fetchBaseDNs = fetchBaseDNs;
+ }
+
+
+ public void setBindDN( DN bindDN )
+ {
+ this.setBindPrincipal( bindDN.toString() );
+ }
+
+
+ public String getBindPrincipal()
+ {
+ return bindPrincipal;
+ }
+
+
+ public void setBindPrincipal( String bindPrincipal )
+ {
+ this.bindPrincipal = bindPrincipal;
+ }
+
+
+ public String getBindPassword()
+ {
+ return bindPassword;
+ }
+
+
+ public void setBindPassword( String bindPassword )
+ {
+ this.bindPassword = bindPassword;
+ }
+
+
+ public int getAuthMethod()
+ {
+ return authMethod;
+ }
+
+
+ public void setAuthMethod( int authMethod )
+ {
+ this.authMethod = authMethod;
+ }
+
+
+ public String getConnectionProviderClassName()
+ {
+ return connectionProviderClassName;
+ }
+
+
+ public void setConnectionProviderClassName( String connectionProviderClassName )
+ {
+ this.connectionProviderClassName = connectionProviderClassName;
+ }
+
+
+ public int getEncryptionMethod()
+ {
+ return encryptionMethod;
+ }
+
+
+ public void setEncryptionMethod( int encryptionMethod )
+ {
+ this.encryptionMethod = encryptionMethod;
+ }
+
+
+ public int getAliasesDereferencingMethod()
+ {
+ return aliasesDereferencingMethod;
+ }
+
+
+ public void setAliasesDereferencingMethod( int aliasesDereferencingMethod )
+ {
+ this.aliasesDereferencingMethod = aliasesDereferencingMethod;
+ }
+
+
+ public int getReferralsHandlingMethod()
+ {
+ return referralsHandlingMethod;
+ }
+
+
+ public void setReferralsHandlingMethod( int referralsHandlingMethod )
+ {
+ this.referralsHandlingMethod = referralsHandlingMethod;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Control.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Control.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Control.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Control.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,176 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+
+import org.apache.directory.ldapstudio.browser.core.model.ldif.lines.LdifControlLine;
+
+
+public class Control implements Serializable
+{
+
+ private static final long serialVersionUID = -1289018814649849178L;
+
+ public static final Control SUBENTRIES_CONTROL = new Control( "Subentries Control", "1.3.6.1.4.1.4203.1.10.1",
+ false, new byte[]
+ { 0x01, 0x01, ( byte ) 0xFF } );
+
+ private String name;
+
+ private String oid;
+
+ private boolean critical;
+
+ private transient byte[] controlValue;
+
+
+ public Control()
+ {
+
+ }
+
+
+ public Control( String name, String oid, boolean critical, byte[] controlValue )
+ {
+ super();
+ this.name = name == null ? "" : name;
+ this.oid = oid;
+ this.critical = critical;
+ this.controlValue = controlValue;
+ }
+
+
+ // public static Control parseControl(String controlLdif) throws
+ // ParseException {
+ //
+ // if("".equals(controlLdif)) {
+ // return NONE_CONTOL;
+ // }
+ //
+ // try {
+ // String ldif =
+ // "dn: cn=dummy" +
+ // BrowserCoreConstants.LINE_SEPARATOR +
+ // "control: " +
+ // controlLdif +
+ // BrowserCoreConstants.LINE_SEPARATOR
+ // ;
+ //
+ // LdifParser parser = new LdifParser();
+ // LdifFile model = parser.parse(ldif);
+ // LdifPart part = model.getLastContainer().getLastPart();
+ // LdifControlLine ldifControlLine = (LdifControlLine)part;
+ // if(!ldifControlLine.isValid()) {
+ // throw new Exception(ldifControlLine.getInvalidString());
+ // }
+ //
+ // Control control = new Control("", ldifControlLine.getUnfoldedOid(),
+ // ldifControlLine.isCritical(),
+ // ldifControlLine.getControlValueAsBinary());
+ // return control;
+ // }
+ // catch (Exception e) {
+ // throw new ParseException(e.getMessage(), 0);
+ // }
+ // }
+
+ public byte[] getControlValue()
+ {
+ return controlValue;
+ }
+
+
+ public String getOid()
+ {
+ return oid;
+ }
+
+
+ public boolean isCritical()
+ {
+ return critical;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public String toString()
+ {
+
+ if ( oid == null )
+ {
+ return "";
+ }
+
+ LdifControlLine line = LdifControlLine.create( getOid(), isCritical() ? " true" : " false", getControlValue() );
+ String s = line.toRawString();
+ s = s.substring( line.getRawControlSpec().length(), s.length() );
+ s = s.substring( line.getRawControlType().length(), s.length() );
+ s = s.substring( 0, s.length() - line.getRawNewLine().length() );
+
+ // System.out.println(s);
+
+ return s;
+ }
+
+
+ public void setControlValue( byte[] controlValue )
+ {
+ this.controlValue = controlValue;
+ }
+
+
+ public void setCritical( boolean critical )
+ {
+ this.critical = critical;
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+
+ public void setOid( String oid )
+ {
+ this.oid = oid;
+ }
+
+
+ public boolean equals( Object obj )
+ {
+ if ( obj == null || !( obj instanceof Control ) )
+ {
+ return false;
+ }
+ Control other = ( Control ) obj;
+
+ return this.toString().equals( other.toString() );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/DN.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/DN.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/DN.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/DN.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,268 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.model.schema.Schema;
+
+
+public class DN implements Serializable
+{
+
+ private static final long serialVersionUID = 2343676941769163982L;
+
+ private RDN[] rdns;
+
+
+ public DN()
+ {
+ this.rdns = new RDN[0];
+ }
+
+
+ public DN( RDN rdn )
+ {
+
+ if ( rdn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_rdn );
+ }
+
+ this.rdns = new RDN[1];
+ this.rdns[0] = new RDN( rdn );
+ }
+
+
+ public DN( String dn ) throws NameException
+ {
+
+ if ( dn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_dn );
+ }
+
+ // this.parseDn(dn.trim());
+ this.parseDn( dn );
+ }
+
+
+ public DN( DN dn )
+ {
+
+ if ( dn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_dn );
+ }
+
+ this.rdns = new RDN[dn.getRdns().length];
+ for ( int i = 0; i < dn.getRdns().length; i++ )
+ {
+ this.rdns[i] = new RDN( dn.getRdns()[i] );
+ }
+ }
+
+
+ public DN( RDN rdn, DN parent )
+ {
+
+ if ( rdn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_rdn );
+ }
+ if ( parent == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_dn );
+ }
+
+ this.rdns = new RDN[parent.getRdns().length + 1];
+ this.rdns[0] = new RDN( rdn );
+ for ( int i = 0; i < parent.getRdns().length; i++ )
+ {
+ this.rdns[i + 1] = new RDN( parent.getRdns()[i] );
+ }
+ }
+
+
+ public DN( String rdn, String parent ) throws NameException
+ {
+
+ if ( rdn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_rdn );
+ }
+ if ( parent == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_dn );
+ }
+
+ // this.parseDn(parent.trim());
+ this.parseDn( parent );
+
+ RDN[] rdns = this.rdns;
+ this.rdns = new RDN[rdns.length + 1];
+ this.rdns[0] = new RDN( rdn );
+ System.arraycopy( rdns, 0, this.rdns, 1, rdns.length );
+ }
+
+
+ public RDN getRdn()
+ {
+ if ( this.rdns.length > 0 )
+ {
+ return this.rdns[0];
+ }
+ else
+ {
+ return new RDN();
+ }
+ }
+
+
+ public DN getParentDn()
+ {
+ if ( this.rdns.length < 2 )
+ {
+ return null;
+ }
+ else
+ {
+ RDN[] parentRdns = new RDN[this.rdns.length - 1];
+ for ( int i = 1; i < this.rdns.length; i++ )
+ {
+ parentRdns[i - 1] = new RDN( this.rdns[i] );
+ }
+ DN parent = new DN();
+ parent.rdns = parentRdns;
+ return parent;
+ }
+ }
+
+
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+
+ for ( int i = 0; i < this.rdns.length; i++ )
+ {
+ sb.append( this.rdns[i].toString() );
+ if ( i + 1 < rdns.length )
+ {
+ sb.append( "," ); //$NON-NLS-1$
+ }
+ }
+
+ return sb.toString();
+ }
+
+
+ public String toOidString( Schema schema )
+ {
+ StringBuffer sb = new StringBuffer();
+
+ for ( int i = 0; i < this.rdns.length; i++ )
+ {
+ sb.append( this.rdns[i].toOidString( schema ) );
+ if ( i + 1 < rdns.length )
+ {
+ sb.append( "," ); //$NON-NLS-1$
+ }
+ }
+
+ return sb.toString();
+ }
+
+
+ private void parseDn( String dn ) throws NameException
+ {
+
+ List rdnList = new ArrayList( 3 );
+
+ boolean backslash = false;
+ int start = 0;
+ for ( int i = 0; i < dn.length(); i++ )
+ {
+ if ( dn.charAt( i ) == '\\' && !backslash )
+ {
+ backslash = true;
+ }
+ else
+ {
+ String rdn = null;
+ if ( dn.charAt( i ) == ',' && !backslash )
+ {
+ rdn = dn.substring( start, i );
+ }
+ else if ( i == dn.length() - 1 )
+ {
+ rdn = dn.substring( start );
+ }
+ if ( rdn != null )
+ {
+ rdnList.add( new RDN( rdn ) );
+ start = i + 1;
+
+ // remove spaces between RDNs
+ for ( ; start < dn.length() && dn.charAt( start ) == ' '; i++ )
+ {
+ start++;
+ }
+ }
+ backslash = false;
+ }
+ }
+
+ this.rdns = ( RDN[] ) rdnList.toArray( new RDN[rdnList.size()] );
+ }
+
+
+ public RDN[] getRdns()
+ {
+ return rdns;
+ }
+
+
+ public void setRdns( RDN[] rdns )
+ {
+ this.rdns = rdns;
+ }
+
+
+ public boolean equals( Object o ) throws ClassCastException
+ {
+ if ( o instanceof DN )
+ {
+ return this.toString().equals( ( ( DN ) o ).toString() );
+ }
+ return false;
+ }
+
+
+ public int hashCode()
+ {
+ return this.toString().hashCode();
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAttribute.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAttribute.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAttribute.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAttribute.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,394 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.internal.model.AttributeDescription;
+import org.apache.directory.ldapstudio.browser.core.model.schema.AttributeTypeDescription;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.AttributePropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.ConnectionPropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.EntryPropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+/**
+ * The IAttribute interface represents an LDAP attribute.
+ */
+public interface IAttribute extends Serializable, IAdaptable, AttributePropertyPageProvider, EntryPropertyPageProvider,
+ ConnectionPropertyPageProvider
+{
+
+ /**
+ * ( 2.5.18.3 NAME 'creatorsName' EQUALITY distinguishedNameMatch SYNTAX
+ * 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE
+ * directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_CREATORS_NAME = "creatorsName"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.18.1 NAME 'createTimestamp' EQUALITY generalizedTimeMatch
+ * ORDERING generalizedTimeOrderingMatch SYNTAX
+ * 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE NO-USER-MODIFICATION USAGE
+ * directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_CREATE_TIMESTAMP = "createTimestamp"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.18.4 NAME 'modifiersName' EQUALITY distinguishedNameMatch
+ * SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE
+ * NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_MODIFIERS_NAME = "modifiersName"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.18.2 NAME 'modifyTimestamp' EQUALITY generalizedTimeMatch
+ * ORDERING generalizedTimeOrderingMatch SYNTAX
+ * 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE NO-USER-MODIFICATION USAGE
+ * directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_MODIFY_TIMESTAMP = "modifyTimestamp"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.21.9 NAME 'structuralObjectClass' EQUALITY
+ * objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+ * SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_STRUCTURAL_OBJECT_CLASS = "structuralObjectClass"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.21.10 NAME 'governingStructureRule' EQUALITY integerMatch
+ * SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
+ * NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_GOVERNING_STRUCTURE_RULE = "governingStructureRule"; //$NON-NLS-1$
+
+ /**
+ * ( 1.3.6.1.1.16.4 NAME 'entryUUID' DESC 'UUID of the entry' EQUALITY
+ * uuidMatch ORDERING uuidOrderingMatch SYNTAX 1.3.6.1.1.16.1
+ * SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_ENTRY_UUID = "entryUUID"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.18.10 NAME 'subschemaSubentry' EQUALITY distinguishedNameMatch
+ * SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE
+ * NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_SUBSCHEMA_SUBENTRY = "subschemaSubentry"; //$NON-NLS-1$
+
+ /**
+ * ( 2.5.18.9 NAME 'hasSubordinates' DESC 'X.501: entry has children'
+ * EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
+ * SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_HAS_SUBORDINATES = "hasSubordinates"; //$NON-NLS-1$
+
+ /**
+ * ( 1.3.1.1.4.1.453.16.2.103 NAME 'numSubordinates' DESC 'count of
+ * immediate subordinates' EQUALITY integerMatch ORDERING
+ * integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ * SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation X-ORIGIN
+ * 'numSubordinates Internet Draft' )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_NUM_SUBORDINATES = "numSubordinates"; //$NON-NLS-1$
+
+ /**
+ * ( 2.16.840.1.113719.1.27.4.49 NAME 'subordinateCount' DESC
+ * 'Operational Attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ * SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_SUBORDINATE_COUNT = "subordinateCount"; //$NON-NLS-1$
+
+ /**
+ * ( 1.3.6.1.1.4 NAME 'vendorName' EQUALITY caseExactIA5Match SYNTAX
+ * 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE NO-USER-MODIFICATION USAGE
+ * dSAOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_VENDOR_NAME = "vendorName"; //$NON-NLS-1$
+
+ /**
+ * ( 1.3.6.1.1.5 NAME 'vendorVersion' EQUALITY caseExactIA5Match SYNTAX
+ * 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE NO-USER-MODIFICATION USAGE
+ * dSAOperation )
+ */
+ public static final String OPERATIONAL_ATTRIBUTE_VENDOR_VERSION = "vendorVersion"; //$NON-NLS-1$
+
+ /**
+ * objectClass
+ */
+ public static final String OBJECTCLASS_ATTRIBUTE = "objectClass"; //$NON-NLS-1$
+
+ /**
+ * objectClass
+ */
+ public static final String OBJECTCLASS_ATTRIBUTE_OID = "2.5.4.0"; //$NON-NLS-1$
+
+ /**
+ * ref
+ */
+ public static final String REFERRAL_ATTRIBUTE = "ref"; //$NON-NLS-1$
+
+ /**
+ * aliasedObjectName
+ */
+ public static final String ALIAS_ATTRIBUTE = "aliasedObjectName"; //$NON-NLS-1$
+
+ /**
+ * ;
+ */
+ public static final String OPTION_DELIMITER = ";"; //$NON-NLS-1$
+
+ /**
+ * lang-
+ */
+ public static final String OPTION_LANG_PREFIX = "lang-"; //$NON-NLS-1$
+
+
+ /**
+ * Returns the entry of this attribute.
+ *
+ * @return the entry of this attribute, never null
+ */
+ public abstract IEntry getEntry();
+
+
+ /**
+ * Returns true if this attribute is consistent. The following
+ * conditions must be fulfilled:
+ *
+ * <ul>
+ * <li>There must be at least one value</li>
+ * <li>There mustn't be any empty value</li>
+ * </ul>
+ *
+ * @return true if the attribute ist consistent
+ */
+ public abstract boolean isConsistent();
+
+
+ /**
+ * Returns true if this attribute is a must attribute of its entry
+ * according to the entry's subschema.
+ *
+ * @return true if this attribute is a must attribute of its entry.
+ */
+ public abstract boolean isMustAttribute();
+
+
+ /**
+ * Returns true if this attribute is a may attribute of its entry
+ * according to the entry's subschema.
+ *
+ * @return true if this attribute is a may attribute of its entry.
+ */
+ public abstract boolean isMayAttribute();
+
+
+ /**
+ * Returns true if this attribute is an operational attribute according
+ * to the entry's subschema.
+ *
+ * @return true if this attribute is an operational attribute.
+ */
+ public abstract boolean isOperationalAttribute();
+
+
+ /**
+ * Return true if this attribute is the objectclass attribute.
+ *
+ * @return true if this attribute is the objectclass attribute.
+ */
+ public abstract boolean isObjectClassAttribute();
+
+
+ /**
+ * Return true if the attribute is of type String.
+ *
+ * @return true if the attribute is of type String.
+ */
+ public abstract boolean isString();
+
+
+ /**
+ * Return true if the attribute is of type byte[].
+ *
+ * @return true if the attribute is of type byte[].
+ */
+ public abstract boolean isBinary();
+
+
+ /**
+ * Adds an empty value.
+ *
+ * @param source
+ * the ModelModifier
+ */
+ public abstract void addEmptyValue( ModelModifier source );
+
+
+ /**
+ * Removes one empty value if one is present.
+ *
+ * @param source
+ * the ModelModifier
+ */
+ public abstract void deleteEmptyValue( ModelModifier source );
+
+
+ /**
+ * Adds the given value to this attribute. The value's attribute must be
+ * this attribute.
+ *
+ * @param valueToAdd
+ * the value to add
+ * @param source
+ * the ModelModifier
+ * @throws ModelModificationException
+ * if the value is null or if the value's attribute
+ * isn't this attribute.
+ */
+ public abstract void addValue( IValue valueToAdd, ModelModifier source ) throws ModelModificationException;
+
+
+ /**
+ * Deletes the given value from this attribute.
+ *
+ * @param valueToDelete
+ * the value to delete
+ * @param source
+ * the ModelModifier
+ * @throws ModelModificationException
+ * if the value is null or if the value's attribute
+ * isn't this attribute.
+ */
+ public abstract void deleteValue( IValue valueToDelete, ModelModifier source ) throws ModelModificationException;
+
+
+ /**
+ * Replaces the old value with the new value.
+ *
+ * @param oldValue
+ * the value that should be replaced
+ * @param newValue
+ * the value that should be added
+ * @param source
+ * the ModelModifier
+ * @throws ModelModificationException
+ * if the value is null or if the value's attribute
+ * isn't this attribute.
+ */
+ public abstract void modifyValue( IValue oldValue, IValue newValue, ModelModifier source )
+ throws ModelModificationException;
+
+
+ /**
+ * Returns the values of this attribute, wrapped into IValue objects.
+ *
+ * @return the values of this attribute, may be an empty array, never
+ * null.
+ */
+ public abstract IValue[] getValues();
+
+
+ /**
+ * Returns the number of values in this attribute.
+ *
+ * @return the number of values in this attribute.
+ */
+ public abstract int getValueSize();
+
+
+ /**
+ * Returns the description of this attribute.
+ *
+ * @return the description of this attribute.
+ */
+ public abstract String getDescription();
+
+
+ /**
+ * Returns the type of this attribute (description without options).
+ *
+ * @return the attribute type.
+ */
+ public abstract String getType();
+
+
+ /**
+ * Returns all values as byte[]. If the values aren't binary they are
+ * converted to byte[] using UTF-8 encoding.
+ *
+ * @return The binary values
+ */
+ public abstract byte[][] getBinaryValues();
+
+
+ /**
+ * Returns the first value as string if one is present, null otherwise
+ *
+ * @return The first value if one present, null otherwise
+ */
+ public abstract String getStringValue();
+
+
+ /**
+ * Returns all values as String. If the values aren't strings they are
+ * converted using UTF-8 encoding.
+ *
+ * @return The string values
+ */
+ public abstract String[] getStringValues();
+
+
+ /**
+ * Returns true if the argument is also of type IAttribute and they are
+ * equal.
+ *
+ * IAttributes are equal if there entries and there attribute
+ * description are equal.
+ *
+ * @param o
+ * The attribute to compare, must be of type IAttribute
+ * @return true if the argument is equal to this.
+ */
+ public abstract boolean equals( Object o );
+
+
+ /**
+ * Returns the AttributeTypeDescription of this attribute.
+ *
+ * @return the AttributeTypeDescription of this attribute, may be the
+ * default or a dummy
+ */
+ public abstract AttributeTypeDescription getAttributeTypeDescription();
+
+
+ /**
+ * Returns the AttributeDescription of this attribute.
+ *
+ * @return the AttributeDescription of this attribute,.
+ */
+ public abstract AttributeDescription getAttributeDescription();
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAuthHandler.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAuthHandler.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAuthHandler.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IAuthHandler.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,29 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+public interface IAuthHandler
+{
+
+ public ICredentials getCredentials( ConnectionParameter connectionParameter );
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IBookmark.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IBookmark.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IBookmark.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IBookmark.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,59 @@
+/*
+ * 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.ldapstudio.browser.core.model;
+
+
+import java.io.Serializable;
+
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.BookmarkPropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.ConnectionPropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.EntryPropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+public interface IBookmark extends Serializable, IAdaptable, BookmarkPropertyPageProvider, EntryPropertyPageProvider,
+ ConnectionPropertyPageProvider
+{
+
+ public DN getDn();
+
+
+ public void setDn( DN dn );
+
+
+ public String getName();
+
+
+ public void setName( String name );
+
+
+ public IConnection getConnection();
+
+
+ public IEntry getEntry();
+
+
+ public BookmarkParameter getBookmarkParameter();
+
+
+ public void setBookmarkParameter( BookmarkParameter bookmarkParameter );
+
+}