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 [10/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/model/IConnection.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnection.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnection.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnection.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,315 @@
+/*
+ * 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.io.Writer;
+
+import org.apache.directory.ldapstudio.browser.core.BookmarkManager;
+import org.apache.directory.ldapstudio.browser.core.SearchManager;
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.internal.model.ConnectionException;
+import org.apache.directory.ldapstudio.browser.core.internal.model.ModificationLogger;
+import org.apache.directory.ldapstudio.browser.core.jobs.ExtendedProgressMonitor;
+import org.apache.directory.ldapstudio.browser.core.model.ldif.LdifEnumeration;
+import org.apache.directory.ldapstudio.browser.core.model.schema.Schema;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.ConnectionPropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+public interface IConnection extends Serializable, IAdaptable, ConnectionPropertyPageProvider, ModelModifier
+{
+
+ public static final String[] ROOT_DSE_ATTRIBUTES =
+ { IRootDSE.ROOTDSE_ATTRIBUTE_MONITORCONTEXT, IRootDSE.ROOTDSE_ATTRIBUTE_NAMINGCONTEXTS,
+ IRootDSE.ROOTDSE_ATTRIBUTE_SUPPORTEDLDAPVERSION, IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY,
+ IRootDSE.ROOTDSE_ATTRIBUTE_ALTSERVER, IRootDSE.ROOTDSE_ATTRIBUTE_SUPPORTEDEXTENSION,
+ IRootDSE.ROOTDSE_ATTRIBUTE_SUPPORTEDCONTROL, IRootDSE.ROOTDSE_ATTRIBUTE_SUPPORTEDFEATURES,
+ IRootDSE.ROOTDSE_ATTRIBUTE_SUPPORTEDSASLMECHANISM, ISearch.ALL_OPERATIONAL_ATTRIBUTES,
+ ISearch.ALL_USER_ATTRIBUTES };
+
+ public static final int AUTH_ANONYMOUS = 0;
+
+ public static final int AUTH_SIMPLE = 1;
+
+ public static final int ENCYRPTION_NONE = 0;
+
+ public static final int ENCYRPTION_LDAPS = 1;
+
+ public static final int ENCYRPTION_STARTTLS = 2;
+
+ public static final int DEREFERENCE_ALIASES_NEVER = 0;
+
+ public static final int DEREFERENCE_ALIASES_ALWAYS = 1;
+
+ public static final int DEREFERENCE_ALIASES_FINDING = 2;
+
+ public static final int DEREFERENCE_ALIASES_SEARCH = 3;
+
+ public static final int HANDLE_REFERRALS_IGNORE = 0;
+
+ public static final int HANDLE_REFERRALS_FOLLOW = 1;
+
+ public static final String CONTROL_MANAGEDSAIT = "2.16.840.1.113730.3.4.2"; //$NON-NLS-1$
+
+
+ public abstract URL getUrl();
+
+
+ public abstract String getName();
+
+
+ public abstract void setName( String name );
+
+
+ public abstract boolean isFetchBaseDNs();
+
+
+ public abstract void setFetchBaseDNs( boolean fetchBaseDNs );
+
+
+ public abstract DN getBaseDN();
+
+
+ public abstract void setBaseDN( DN baseDN );
+
+
+ public abstract int getCountLimit();
+
+
+ public abstract void setCountLimit( int countLimit );
+
+
+ public abstract String getHost();
+
+
+ public abstract void setHost( String host );
+
+
+ public abstract int getPort();
+
+
+ public abstract void setPort( int port );
+
+
+ public abstract int getEncryptionMethod();
+
+
+ public abstract void setEncryptionMethod( int encryptionMethod );
+
+
+ public abstract int getAliasesDereferencingMethod();
+
+
+ public abstract void setAliasesDereferencingMethod( int aliasesDereferencingMethod );
+
+
+ public abstract int getReferralsHandlingMethod();
+
+
+ public abstract void setReferralsHandlingMethod( int referralsHandlingMethod );
+
+
+ public abstract int getTimeLimit();
+
+
+ public abstract void setTimeLimit( int timeLimit );
+
+
+ public String getBindPrincipal();
+
+
+ public void setBindPrincipal( String bindPrincipal );
+
+
+ public String getBindPassword();
+
+
+ public void setBindPassword( String bindPassword );
+
+
+ public int getAuthMethod();
+
+
+ public void setAuthMethod( int authMethod );
+
+
+ public abstract IEntry[] getBaseDNEntries();
+
+
+ public abstract IEntry[] getMetadataEntries();
+
+
+ public abstract IRootDSE getRootDSE();
+
+
+ public abstract Schema getSchema();
+
+
+ public abstract void setSchema( Schema schema );
+
+
+ public abstract ConnectionParameter getConnectionParameter();
+
+
+ public abstract void setConnectionParameter( ConnectionParameter connectionParameter );
+
+
+ public abstract SearchManager getSearchManager();
+
+
+ public abstract BookmarkManager getBookmarkManager();
+
+
+ public abstract ModificationLogger getModificationLogger();
+
+
+ public abstract void reloadSchema( ExtendedProgressMonitor monitor );
+
+
+ /**
+ * Connects to the LDAP server without any authentification:
+ *
+ * @param pm
+ * The progress monitor
+ */
+ public abstract void connect( ExtendedProgressMonitor monitor );
+
+
+ /**
+ * Binds to the LDAP server using the required authentification. Depends
+ * on connect().
+ *
+ * @param pm
+ * The progress monitor
+ */
+ public abstract void bind( ExtendedProgressMonitor monitor );
+
+
+ /**
+ * Fetches the Root DSE and tries to get the base DNs from Root DSE.
+ * Depends on bind().
+ *
+ * @param pm
+ * The progress monitor
+ */
+ public abstract void fetchRootDSE( ExtendedProgressMonitor monitor );
+
+
+ /**
+ * Opens the connection to the LDAP server and loads the schema if
+ * required. Depends on fetchRootDSE().
+ *
+ * @param pm
+ * The progress monitor
+ */
+ public abstract void open( ExtendedProgressMonitor monitor );
+
+
+ public abstract boolean isOpened();
+
+
+ public abstract boolean canOpen();
+
+
+ public abstract boolean canClose();
+
+
+ public abstract void close();
+
+
+ public abstract boolean existsEntry( DN dn, ExtendedProgressMonitor monitor );
+
+
+ public abstract IEntry getEntry( DN dn, ExtendedProgressMonitor monitor );
+
+
+ public abstract IEntry getEntryFromCache( DN dn );
+
+
+ public abstract void search( ISearch searchRequest, ExtendedProgressMonitor monitor );
+
+
+ public abstract void delete( IEntry entryToDelete, ExtendedProgressMonitor monitor );
+
+
+ public abstract void delete( IValue valuesToDelete[], ExtendedProgressMonitor monitor );
+
+
+ public abstract void delete( IAttribute attriubtesToDelete[], ExtendedProgressMonitor monitor );
+
+
+ public abstract void create( IEntry entryToCreate, ExtendedProgressMonitor monitor );
+
+
+ public abstract void create( IValue valuesToCreate[], ExtendedProgressMonitor monitor );
+
+
+ public abstract void modify( IValue oldValue, IValue newVaue, ExtendedProgressMonitor monitor );
+
+
+ public abstract void rename( IEntry entryToRename, DN newDn, boolean deleteOldRdn, ExtendedProgressMonitor monitor );
+
+
+ public abstract void move( IEntry entryToMove, DN newSuperior, ExtendedProgressMonitor monitor );
+
+
+ public abstract Object clone();
+
+
+ public abstract void importLdif( LdifEnumeration enumeration, Writer logWriter, boolean continueOnError,
+ ExtendedProgressMonitor monitor );
+
+
+ public abstract LdifEnumeration exportLdif( SearchParameter searchParameter, ExtendedProgressMonitor pm )
+ throws ConnectionException;
+
+
+ /**
+ * Suspends the commitment of modifications.
+ *
+ */
+ public abstract void suspend();
+
+
+ /**
+ * Resume the commitment of modifications.
+ *
+ */
+ public abstract void resume( ExtendedProgressMonitor monitor );
+
+
+ /**
+ * Resets the state and deletes all uncommitted modifications
+ *
+ */
+ public abstract void reset();
+
+
+ public abstract boolean isSuspended();
+
+
+ public abstract int hashCode();
+
+
+ public abstract boolean equals( Object obj );
+}
\ No newline at end of file
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnectionProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnectionProvider.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnectionProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IConnectionProvider.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,50 @@
+/*
+ * 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 org.apache.directory.ldapstudio.browser.core.internal.model.ConnectionException;
+import org.apache.directory.ldapstudio.browser.core.jobs.ExtendedProgressMonitor;
+import org.apache.directory.ldapstudio.browser.core.model.ldif.LdifEnumeration;
+import org.apache.directory.ldapstudio.browser.core.model.ldif.container.LdifRecord;
+
+
+public interface IConnectionProvider
+{
+
+ public void connect( ConnectionParameter parameter, ExtendedProgressMonitor monitor ) throws ConnectionException;
+
+
+ public void bind( ConnectionParameter parameter, ICredentials credentials, ExtendedProgressMonitor monitor )
+ throws ConnectionException;
+
+
+ public void close() throws ConnectionException;
+
+
+ public LdifEnumeration search( SearchParameter parameter, ExtendedProgressMonitor monitor )
+ throws ConnectionException;
+
+
+ public void applyModification( LdifRecord record, int handleReferralsMethod, ExtendedProgressMonitor monitor )
+ throws ConnectionException;
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ICredentials.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ICredentials.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ICredentials.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ICredentials.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,35 @@
+/*
+ * 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 ICredentials
+{
+
+ public ConnectionParameter getConnectionParameter();
+
+
+ public String getBindDN();
+
+
+ public String getBindPassword();
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IEntry.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IEntry.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IEntry.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IEntry.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,311 @@
+/*
+ * 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.model.schema.Subschema;
+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 IEntry extends Serializable, IAdaptable, EntryPropertyPageProvider, ConnectionPropertyPageProvider
+{
+
+ /**
+ * Adds the given child to this entry.
+ *
+ * @param childToAdd
+ * the child to add
+ * @param source
+ * the ModelModifier
+ */
+ public abstract void addChild( IEntry childToAdd, ModelModifier source );
+
+
+ /**
+ * Deletes the given child and all its children from this entry.
+ *
+ * @param childToDelete
+ * the child to delete
+ * @param source
+ * the ModelModifier
+ */
+ public abstract void deleteChild( IEntry childToDelete, ModelModifier source );
+
+
+ /**
+ * Adds the given attribute to this entry. The attribute's entry must be
+ * this entry.
+ *
+ * @param attributeToAdd
+ * the attribute to add
+ * @param source
+ * the ModelModifier
+ * @throws ModelModificationException
+ * if the attribute is alreade present in this entry or
+ * if the attribute's entry isn't this entry.
+ */
+ public abstract void addAttribute( IAttribute attributeToAdd, ModelModifier source )
+ throws ModelModificationException;
+
+
+ /**
+ * Deletes the given attribute from this entry.
+ *
+ * @param attributeToDelete
+ * the attribute to delete
+ * @param source
+ * the ModelModifier
+ * @throws ModelModificationException
+ * if the attribute isn't present in this entry.
+ */
+ public abstract void deleteAttribute( IAttribute attributeToDelete, ModelModifier source )
+ throws ModelModificationException;
+
+
+ /**
+ * Checks if the entry with its attributes is consistent. The following
+ * conditions must be fulfilled:
+ *
+ * <ul>
+ * <li>The objectClass attrbute must be present</li>
+ * <li>All must attributes must be present</li>
+ * <li>There mustn't be any empty value</li>
+ * </ul>
+ *
+ * @return true if the entry is consistent
+ */
+ public abstract boolean isConsistent();
+
+
+ /**
+ * Indicates wheater the entry was created from directory. Otherwise it
+ * was created from the user.
+ *
+ * @return true it the entry is a directory entry
+ */
+ public abstract boolean isDirectoryEntry();
+
+
+ /**
+ *
+ *
+ * @param isDirectoryEntry
+ * true if the entry is created from directory.
+ */
+ public abstract void setDirectoryEntry( boolean isDirectoryEntry );
+
+
+ public abstract boolean isAlias();
+
+
+ public abstract void setAlias( boolean b );
+
+
+ public abstract boolean isReferral();
+
+
+ public abstract void setReferral( boolean b );
+
+
+ public abstract boolean isSubentry();
+
+
+ public abstract void setSubentry( boolean b );
+
+
+ /**
+ * Returns the DN of the entry, never null.
+ *
+ * @return the DN of the entry, never null.
+ */
+ public abstract DN getDn();
+
+
+ /**
+ * Returns the RDN of the entry, never null.
+ *
+ * @return the RDN of the entry, never null.
+ */
+ public abstract RDN getRdn();
+
+
+ /**
+ * Indicates wheater the attributes were initialized from directory.
+ *
+ * @return true if the attributes were initialized from directory.
+ */
+ public abstract boolean isAttributesInitialized();
+
+
+ /**
+ * Sets if the attributes of this entry are initialized.
+ *
+ * @param b
+ */
+ public abstract void setAttributesInitialized( boolean b, ModelModifier source );
+
+
+ /**
+ * Returns the attributes of the entry.
+ *
+ * @return The attributes of the entry or null if the attributes arn't
+ * initialized
+ */
+ public abstract IAttribute[] getAttributes();
+
+
+ /**
+ * Returns the attribute of the entry.
+ *
+ * @param attributeDescription
+ * @return The attributes of the entry or null if the attribute doesn't
+ * exist or if the attributes arn't initialized.
+ */
+ public abstract IAttribute getAttribute( String attributeDescription );
+
+
+ /**
+ * Returns a AttributeHierachie containing the requested attribute and
+ * all its subtypes.
+ *
+ * @param attributeDescription
+ * @return The attributes of the entry or null if the attribute doesn't
+ * exist or if the attributes arn't initialized.
+ */
+ public abstract AttributeHierachie getAttributeWithSubtypes( String attributeDescription );
+
+
+ /**
+ * Returns the subschema of the entry.
+ *
+ * @return The subschema of the entry or null if the attributes aren't
+ * initialized.
+ */
+ public abstract Subschema getSubschema();
+
+
+ /**
+ * Indicates wheater the children were initialized from directory.
+ *
+ * @return true if the children were initialized from directory.
+ */
+ public abstract boolean isChildrenInitialized();
+
+
+ /**
+ * Sets if the children of this entry are initialized from directory.
+ *
+ * @param b
+ */
+ public abstract void setChildrenInitialized( boolean b, ModelModifier source );
+
+
+ /**
+ * Returns true if the entry has children.
+ *
+ * @return true if the entry has children.
+ */
+ public abstract boolean hasChildren();
+
+
+ /**
+ * Sets if the entry has children.
+ *
+ * @param b
+ */
+ public abstract void setHasChildrenHint( boolean b, ModelModifier source );
+
+
+ /**
+ * Returns the children of the entry.
+ *
+ * @return The children of the entry or null if the children arn't
+ * initialized
+ */
+ public abstract IEntry[] getChildren();
+
+
+ /**
+ * Returns the number of children of the entry.
+ *
+ * @return The number of children of the entry or -1 if the children
+ * arn't initialized
+ */
+ public abstract int getChildrenCount();
+
+
+ /**
+ * Indicates wheather this entry has more children than
+ * getChildrenCount() returns. This occurs when the count or time limit
+ * of the LDAP connection exeeded while fetching children.
+ *
+ * @return true if this entry has (maybe) more children than the given.
+ */
+ public abstract boolean hasMoreChildren();
+
+
+ /**
+ * Sets if the entry has more children in the directory.
+ *
+ * @param b
+ */
+ public abstract void setHasMoreChildren( boolean b, ModelModifier source );
+
+
+ /**
+ * Indicates wheather this entry has a parent entry. Each entry except
+ * the root DSE and the base entry should have a parent entry.
+ *
+ * @return true if the entry has a parent entry.
+ */
+ public abstract boolean hasParententry();
+
+
+ /**
+ * Return the parent entry.
+ *
+ * @return the parent entry or null if this entry hasn't a parent.
+ */
+ public abstract IEntry getParententry();
+
+
+ public abstract String getChildrenFilter();
+
+
+ public abstract void setChildrenFilter( String filter );
+
+
+ /**
+ * Return the connection of this entry, never null.
+ *
+ * @return the connection of this entry, never null.
+ */
+ public abstract IConnection getConnection();
+
+
+ public abstract URL getUrl();
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IReferralHandler.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IReferralHandler.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IReferralHandler.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IReferralHandler.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 IReferralHandler
+{
+
+ public IConnection getReferralConnection( URL referralURL );
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IRootDSE.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IRootDSE.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IRootDSE.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IRootDSE.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,58 @@
+/*
+ * 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 IRootDSE extends IEntry
+{
+
+ public static final String ROOTDSE_ATTRIBUTE_NAMINGCONTEXTS = "namingContexts"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY = "subschemaSubentry"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_MONITORCONTEXT = "monitorContext"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_CONFIGCONTEXT = "configContext"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_DSANAME = "dsaName"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUPPORTEDEXTENSION = "supportedExtension"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUPPORTEDCONTROL = "supportedControl"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUPPORTEDFEATURES = "supportedFeatures"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUPPORTEDLDAPVERSION = "supportedLDAPVersion"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_ALTSERVER = "altServer"; //$NON-NLS-1$
+
+ public static final String ROOTDSE_ATTRIBUTE_SUPPORTEDSASLMECHANISM = "supportedSASLMechanisms"; //$NON-NLS-1$
+
+
+ public String[] getSupportedExtensions();
+
+
+ public String[] getSupportedControls();
+
+
+ public String[] getSupportedFeatures();
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearch.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearch.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearch.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearch.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.model;
+
+
+import java.io.Serializable;
+
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.ConnectionPropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.SearchPropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+public interface ISearch extends Serializable, IAdaptable, SearchPropertyPageProvider, ConnectionPropertyPageProvider
+{
+
+ public static final String ALL_USER_ATTRIBUTES = "*"; //$NON-NLS-1$
+
+ public static final String ALL_OPERATIONAL_ATTRIBUTES = "+"; //$NON-NLS-1$
+
+ public static final String[] NO_ATTRIBUTES = new String[0];
+
+ public static final String FILTER_TRUE = "(objectClass=*)"; //$NON-NLS-1$
+
+ public static final String FILTER_FALSE = "(!(objectClass=*))"; //$NON-NLS-1$
+
+ public static final int SCOPE_OBJECT = 0;
+
+ public static final int SCOPE_ONELEVEL = 1;
+
+ public static final int SCOPE_SUBTREE = 2;
+
+
+ public abstract URL getUrl();
+
+
+ public abstract boolean isInitChildrenFlag();
+
+
+ public abstract boolean isInitAliasAndReferralFlag();
+
+
+ public abstract Control[] getControls();
+
+
+ public abstract int getCountLimit();
+
+
+ public abstract void setCountLimit( int countLimit );
+
+
+ public abstract String getFilter();
+
+
+ public abstract void setFilter( String filter );
+
+
+ public abstract String[] getReturningAttributes();
+
+
+ public abstract void setReturningAttributes( String[] returningAttributes );
+
+
+ public abstract int getScope();
+
+
+ public abstract void setScope( int scope );
+
+
+ public abstract int getAliasesDereferencingMethod();
+
+
+ public abstract void setAliasesDereferencingMethod( int aliasesDereferencingMethod );
+
+
+ public abstract int getReferralsHandlingMethod();
+
+
+ public abstract void setReferralsHandlingMethod( int referralsHandlingMethod );
+
+
+ public abstract DN getSearchBase();
+
+
+ public abstract void setSearchBase( DN searchBase );
+
+
+ public abstract int getTimeLimit();
+
+
+ public abstract void setTimeLimit( int timeLimit );
+
+
+ public abstract String getName();
+
+
+ public abstract void setName( String searchName );
+
+
+ public abstract ISearchResult[] getSearchResults();
+
+
+ public abstract void setSearchResults( ISearchResult[] searchResults );
+
+
+ public abstract boolean isCountLimitExceeded();
+
+
+ public abstract void setCountLimitExceeded( boolean countLimitExceeded );
+
+
+ public abstract IConnection getConnection();
+
+
+ public abstract void setConnection( IConnection connection );
+
+
+ public abstract Object clone();
+
+
+ public abstract SearchParameter getSearchParameter();
+
+
+ public abstract void setSearchParameter( SearchParameter searchParameter );
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearchResult.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearchResult.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearchResult.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ISearchResult.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,89 @@
+/*
+ * 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.ConnectionPropertyPageProvider;
+import org.apache.directory.ldapstudio.browser.core.propertypageproviders.EntryPropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+public interface ISearchResult extends Serializable, IAdaptable, EntryPropertyPageProvider,
+ ConnectionPropertyPageProvider
+{
+
+ /**
+ * Returns the DN of the search result entry.
+ *
+ * @return the DN of the search result entry.
+ */
+ public DN getDn();
+
+
+ /**
+ * Returns the attributes of the search result entry.
+ *
+ * @return the attributes of the search result entry.
+ */
+ public IAttribute[] getAttributes();
+
+
+ /**
+ * Returns the attribute of the search result entry.
+ *
+ * @param attributeDescription
+ * the attribute description of the attribute to return
+ * @return the attribute with the given description or null.
+ */
+ public IAttribute getAttribute( String attributeDescription );
+
+
+ /**
+ * Returns the AttributeHierachie of the search result entry.
+ *
+ * @param attributeDescription
+ * the description of the attribute to return
+ * @return the AttributeHierachie with the given description or null.
+ */
+ public AttributeHierachie getAttributeWithSubtypes( String attributeDescription );
+
+
+ /**
+ * Returns the entry of the search result.
+ *
+ * @return the entry
+ */
+ public IEntry getEntry();
+
+
+ /**
+ * Return the search, the parent of this search result.
+ *
+ * @return the search
+ */
+ public ISearch getSearch();
+
+
+ public void setSearch( ISearch search );
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IValue.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IValue.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IValue.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/IValue.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,206 @@
+/*
+ * 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.BrowserCoreMessages;
+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.apache.directory.ldapstudio.browser.core.propertypageproviders.ValuePropertyPageProvider;
+import org.eclipse.core.runtime.IAdaptable;
+
+
+/**
+ * A wrapper for raw LDAP values.
+ */
+public interface IValue extends Serializable, IAdaptable, ValuePropertyPageProvider, AttributePropertyPageProvider,
+ EntryPropertyPageProvider, ConnectionPropertyPageProvider
+{
+
+ interface EmptyValue
+ {
+ public String toString();
+
+
+ public String getStringValue();
+
+
+ public byte[] getBinaryValue();
+
+
+ public boolean isString();
+
+
+ public boolean isBinary();
+ }
+
+ /**
+ * This object represents the empty string value.
+ */
+ public static final EmptyValue EMPTY_STRING_VALUE = new EmptyValue()
+ {
+ public String toString()
+ {
+ return BrowserCoreMessages.model__empty_string_value;
+ }
+
+
+ public boolean isString()
+ {
+ return true;
+ }
+
+
+ public boolean isBinary()
+ {
+ return false;
+ }
+
+
+ public byte[] getBinaryValue()
+ {
+ return new byte[0];
+ }
+
+
+ public String getStringValue()
+ {
+ return ""; //$NON-NLS-1$
+ }
+ };
+
+ /**
+ * This object represents the empty binary value.
+ */
+ public static final EmptyValue EMPTY_BINARY_VALUE = new EmptyValue()
+ {
+ public String toString()
+ {
+ return BrowserCoreMessages.model__empty_binary_value;
+ }
+
+
+ public boolean isString()
+ {
+ return false;
+ }
+
+
+ public boolean isBinary()
+ {
+ return true;
+ }
+
+
+ public byte[] getBinaryValue()
+ {
+ return new byte[0];
+ }
+
+
+ public String getStringValue()
+ {
+ return ""; //$NON-NLS-1$
+ }
+ };
+
+
+ /**
+ * The attribute of this value.
+ *
+ * @return The attribute of this value, never null.
+ */
+ public abstract IAttribute getAttribute();
+
+
+ /**
+ * Returns the raw value or an EmptyValue
+ *
+ * @return The raw value or an EmptyValue, never null.
+ */
+ public abstract Object getRawValue();
+
+
+ /**
+ * Returns the String value of this value.
+ *
+ * @return the String value
+ */
+ public abstract String getStringValue();
+
+
+ /**
+ * Returns the binary value of this value.
+ *
+ * @return the binary value
+ */
+ public abstract byte[] getBinaryValue();
+
+
+ /**
+ * Return true if the value is empty.
+ *
+ * @return true if the value is the empty.
+ */
+ public abstract boolean isEmpty();
+
+
+ /**
+ * Convinience method to getAttribute().isString().
+ *
+ * @return true if the values attribute is string.
+ */
+ public abstract boolean isString();
+
+
+ /**
+ * Convinience method to getAttribute().isBinary()
+ *
+ * @return true if the values attribute is binary.
+ */
+ public abstract boolean isBinary();
+
+
+ /**
+ * Returns true if this value is part of its entries RDN.
+ *
+ * @return true if this value is part of its entries RDN.
+ */
+ public abstract boolean isRdnPart();
+
+
+ /**
+ * Return true if the argument is also of type IValue and they are
+ * equal.
+ *
+ * IValues are equal if there entries, there attributes and there raw
+ * values are equal.
+ *
+ * @param o
+ * The value to compare, must be of type IValue
+ * @return true if the argument is equal to this.
+ */
+ public abstract boolean equals( Object o );
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ModelModificationException.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ModelModificationException.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ModelModificationException.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ModelModificationException.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,46 @@
+/*
+ * 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 class ModelModificationException extends Exception
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ public ModelModificationException( String msg )
+ {
+ super( msg );
+ }
+
+
+ public ModelModificationException( String msg, Throwable exception )
+ {
+ super( msg, exception );
+ }
+
+
+ public ModelModificationException( Throwable exception )
+ {
+ super( exception );
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/NameException.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/NameException.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/NameException.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/NameException.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,35 @@
+/*
+ * 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 class NameException extends Exception
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ public NameException( String message )
+ {
+ super( message );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Password.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Password.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Password.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/Password.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,357 @@
+/*
+ * 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.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.utils.LdifUtils;
+import org.apache.directory.ldapstudio.browser.core.utils.UnixCrypt;
+
+
+public class Password
+{
+
+ public static final String HASH_METHOD_SHA = "SHA"; //$NON-NLS-1$
+
+ public static final String HASH_METHOD_SSHA = "SSHA"; //$NON-NLS-1$
+
+ public static final String HASH_METHOD_MD5 = "MD5"; //$NON-NLS-1$
+
+ public static final String HASH_METHOD_SMD5 = "SMD5"; //$NON-NLS-1$
+
+ public static final String HASH_METHOD_CRYPT = "CRYPT"; //$NON-NLS-1$
+
+ public static final String HASH_METHOD_NO = BrowserCoreMessages.model__no_hash;
+
+ public static final String HASH_METHOD_UNSUPPORTED = BrowserCoreMessages.model__unsupported_hash;
+
+ String hashMethod;
+
+ byte[] hashedPassword;
+
+ byte[] salt;
+
+ String trash;
+
+
+ public Password( byte[] password )
+ {
+ this( LdifUtils.utf8decode( password ) );
+ }
+
+
+ public Password( String password )
+ {
+
+ if ( password == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_password );
+ }
+ else if ( password.indexOf( '{' ) == 0 && password.indexOf( '}' ) > 0 )
+ {
+ hashMethod = password.substring( password.indexOf( '{' ) + 1, password.indexOf( '}' ) );
+ String rest = password.substring( hashMethod.length() + 2 );
+
+ if ( HASH_METHOD_SHA.equals( hashMethod ) || HASH_METHOD_MD5.equals( hashMethod ) )
+ {
+ hashedPassword = LdifUtils.base64decodeToByteArray( rest );
+ salt = null;
+ }
+ else if ( HASH_METHOD_SSHA.equals( hashMethod ) )
+ {
+ byte[] hashedPasswordWithSalt = LdifUtils.base64decodeToByteArray( rest );
+ hashedPassword = new byte[20];
+ salt = new byte[hashedPasswordWithSalt.length - hashedPassword.length];
+ split( hashedPasswordWithSalt, hashedPassword, salt );
+ }
+ else if ( HASH_METHOD_SMD5.equals( hashMethod ) )
+ {
+ byte[] hashedPasswordWithSalt = LdifUtils.base64decodeToByteArray( rest );
+ hashedPassword = new byte[16];
+ salt = new byte[hashedPasswordWithSalt.length - hashedPassword.length];
+ split( hashedPasswordWithSalt, hashedPassword, salt );
+ }
+ else if ( HASH_METHOD_CRYPT.equals( hashMethod ) )
+ {
+ byte[] saltWithPassword = LdifUtils.utf8encode( rest );
+ salt = new byte[2];
+ hashedPassword = new byte[saltWithPassword.length - salt.length];
+ split( saltWithPassword, salt, hashedPassword );
+ }
+ else
+ {
+ // throw new IllegalArgumentException("Unsupported hash method
+ // '"+hashMethod+"'");
+ // handle as plain text?
+ hashMethod = HASH_METHOD_UNSUPPORTED;
+ trash = password;
+ // salt = null;
+ }
+ }
+ else
+ {
+ // plain text
+ hashMethod = null;
+ hashedPassword = LdifUtils.utf8encode( password );
+ salt = null;
+ }
+ }
+
+
+ public Password( String hashMethod, String passwordAsPlaintext )
+ {
+
+ if ( !( hashMethod == null || HASH_METHOD_NO.equals( hashMethod ) || HASH_METHOD_SHA.equals( hashMethod )
+ || HASH_METHOD_SSHA.equals( hashMethod ) || HASH_METHOD_MD5.equals( hashMethod )
+ || HASH_METHOD_SMD5.equals( hashMethod ) || HASH_METHOD_CRYPT.equals( hashMethod ) ) )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__unsupported_hash );
+ }
+ if ( passwordAsPlaintext == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_password );
+ }
+
+ // set hash method
+ if ( HASH_METHOD_NO.equals( hashMethod ) )
+ {
+ hashMethod = null;
+ }
+ this.hashMethod = hashMethod;
+
+ // set salt
+ if ( HASH_METHOD_SSHA.equals( hashMethod ) || HASH_METHOD_SMD5.equals( hashMethod ) )
+ {
+ this.salt = new byte[8];
+ new SecureRandom().nextBytes( this.salt );
+ }
+ else if ( HASH_METHOD_CRYPT.equals( hashMethod ) )
+ {
+ this.salt = new byte[2];
+ SecureRandom sr = new SecureRandom();
+ int i1 = sr.nextInt( 64 );
+ int i2 = sr.nextInt( 64 );
+ this.salt[0] = ( byte ) ( i1 < 12 ? ( i1 + '.' ) : i1 < 38 ? ( i1 + 'A' - 12 ) : ( i1 + 'a' - 38 ) );
+ this.salt[1] = ( byte ) ( i2 < 12 ? ( i2 + '.' ) : i2 < 38 ? ( i2 + 'A' - 12 ) : ( i2 + 'a' - 38 ) );
+ }
+ else
+ {
+ this.salt = null;
+ }
+
+ // digest
+ if ( HASH_METHOD_SHA.equals( hashMethod ) || HASH_METHOD_SSHA.equals( hashMethod ) )
+ {
+ this.hashedPassword = digest( HASH_METHOD_SHA, passwordAsPlaintext, this.salt );
+ }
+ else if ( HASH_METHOD_MD5.equals( hashMethod ) || HASH_METHOD_SMD5.equals( hashMethod ) )
+ {
+ this.hashedPassword = digest( HASH_METHOD_MD5, passwordAsPlaintext, this.salt );
+ }
+ else if ( HASH_METHOD_CRYPT.equals( hashMethod ) )
+ {
+ this.hashedPassword = crypt( passwordAsPlaintext, this.salt );
+ }
+ else if ( hashMethod == null )
+ {
+ this.hashedPassword = LdifUtils.utf8encode( passwordAsPlaintext );
+ }
+ }
+
+
+ public boolean verify( String testPasswordAsPlaintext )
+ {
+
+ if ( testPasswordAsPlaintext == null )
+ {
+ return false;
+ }
+
+ boolean verified = false;
+ if ( hashMethod == null )
+ {
+ verified = testPasswordAsPlaintext.equals( LdifUtils.utf8decode( hashedPassword ) );
+ }
+ else if ( HASH_METHOD_SHA.equals( hashMethod ) || HASH_METHOD_SSHA.equals( hashMethod ) )
+ {
+ byte[] hash = digest( HASH_METHOD_SHA, testPasswordAsPlaintext, this.salt );
+ verified = equals( hash, this.hashedPassword );
+ }
+ else if ( HASH_METHOD_MD5.equals( hashMethod ) || HASH_METHOD_SMD5.equals( hashMethod ) )
+ {
+ byte[] hash = digest( HASH_METHOD_MD5, testPasswordAsPlaintext, this.salt );
+ verified = equals( hash, this.hashedPassword );
+ }
+ else if ( HASH_METHOD_CRYPT.equals( hashMethod ) )
+ {
+ byte[] crypted = crypt( testPasswordAsPlaintext, this.salt );
+ verified = equals( crypted, this.hashedPassword );
+ }
+
+ return verified;
+ }
+
+
+ public String getHashMethod()
+ {
+ return this.hashMethod;
+ }
+
+
+ public byte[] getHashedPassword()
+ {
+ return hashedPassword;
+ }
+
+
+ public String getHashedPasswordAsHexString()
+ {
+ return LdifUtils.hexEncode( hashedPassword );
+ }
+
+
+ public byte[] getSalt()
+ {
+ return salt;
+ }
+
+
+ public String getSaltAsHexString()
+ {
+ return LdifUtils.hexEncode( salt );
+ }
+
+
+ public byte[] toBytes()
+ {
+ return LdifUtils.utf8encode( toString() );
+ }
+
+
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+
+ if ( HASH_METHOD_UNSUPPORTED.equals( hashMethod ) )
+ {
+ sb.append( trash );
+ }
+ else if ( HASH_METHOD_CRYPT.equals( hashMethod ) )
+ {
+ sb.append( '{' ).append( hashMethod ).append( '}' );
+ sb.append( LdifUtils.utf8decode( salt ) );
+ sb.append( LdifUtils.utf8decode( hashedPassword ) );
+ }
+ else if ( hashMethod != null )
+ {
+ sb.append( '{' ).append( hashMethod ).append( '}' );
+ if ( salt != null )
+ {
+ byte[] hashedPasswordWithSaltBytes = new byte[hashedPassword.length + salt.length];
+ merge( hashedPasswordWithSaltBytes, hashedPassword, salt );
+ sb.append( LdifUtils.base64encode( hashedPasswordWithSaltBytes ) );
+ }
+ else
+ {
+ sb.append( LdifUtils.base64encode( hashedPassword ) );
+ }
+ }
+ else
+ {
+ sb.append( LdifUtils.utf8decode( hashedPassword ) );
+ }
+
+ return sb.toString();
+ }
+
+
+ private static void split( byte[] all, byte[] left, byte[] right )
+ {
+ System.arraycopy( all, 0, left, 0, left.length );
+ System.arraycopy( all, left.length, right, 0, right.length );
+ }
+
+
+ private static void merge( byte[] all, byte[] left, byte[] right )
+ {
+ System.arraycopy( left, 0, all, 0, left.length );
+ System.arraycopy( right, 0, all, left.length, right.length );
+ }
+
+
+ private static boolean equals( byte[] data1, byte[] data2 )
+ {
+ if ( data1 == data2 )
+ return true;
+ if ( data1 == null || data2 == null )
+ return false;
+ if ( data1.length != data2.length )
+ return false;
+ for ( int i = 0; i < data1.length; i++ )
+ {
+ if ( data1[i] != data2[i] )
+ return false;
+ }
+ return true;
+ }
+
+
+ private static byte[] digest( String hashMethod, String password, byte[] salt )
+ {
+
+ byte[] passwordBytes = LdifUtils.utf8encode( password );
+ MessageDigest digest;
+ try
+ {
+ digest = MessageDigest.getInstance( hashMethod );
+ }
+ catch ( NoSuchAlgorithmException e1 )
+ {
+ return null;
+ }
+
+ if ( salt != null )
+ {
+ digest.update( passwordBytes );
+ digest.update( salt );
+ byte[] hashedPasswordBytes = digest.digest();
+ return hashedPasswordBytes;
+ }
+ else
+ {
+ byte[] hashedPasswordBytes = digest.digest( passwordBytes );
+ return hashedPasswordBytes;
+ }
+ }
+
+
+ private static byte[] crypt( String password, byte[] salt )
+ {
+ String saltWithCrypted = UnixCrypt.crypt( password, LdifUtils.utf8decode( salt ) );
+ String crypted = saltWithCrypted.substring( 2 );
+ return LdifUtils.utf8encode( crypted );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDN.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDN.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDN.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDN.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,320 @@
+/*
+ * 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.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.model.schema.Schema;
+
+
+public class RDN implements Serializable
+{
+
+ private static final long serialVersionUID = -4165959915339033047L;
+
+ private RDNPart[] parts;
+
+
+ public RDN()
+ {
+ this.parts = new RDNPart[0];
+ }
+
+
+ public RDN( String rdn ) throws NameException
+ {
+
+ if ( rdn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_rdn );
+ }
+
+ // this.parseMultiRdn(rdn.trim());
+ this.parseMultiRdn( rdn );
+ }
+
+
+ public RDN( RDN rdn )
+ {
+
+ if ( rdn == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_rdn );
+ }
+
+ this.parts = new RDNPart[rdn.getParts().length];
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ this.parts[i] = new RDNPart( rdn.getParts()[i] );
+ }
+ }
+
+
+ /**
+ * Create a single-valued RDN with the given name and value
+ *
+ * @param name
+ * @param value
+ */
+ public RDN( String name, String value, boolean isValueEncoded ) throws NameException
+ {
+
+ if ( name == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_attribute );
+ }
+ if ( value == null )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_value );
+ }
+
+ this.parts = new RDNPart[1];
+ this.parts[0] = new RDNPart( name, value, isValueEncoded );
+ }
+
+
+ public RDN( String[] names, String[] values, boolean areValuesEncoded ) throws NameException
+ {
+
+ if ( names == null || names.length < 1 )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_attribute );
+ }
+ if ( values == null || values.length < 1 )
+ {
+ throw new IllegalArgumentException( BrowserCoreMessages.model__empty_value );
+ }
+ if ( names.length != values.length )
+ {
+ throw new IllegalArgumentException( "Size of names and values is not equal" ); //$NON-NLS-1$
+ }
+
+ this.parts = new RDNPart[names.length];
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ this.parts[i] = new RDNPart( names[i], values[i], areValuesEncoded );
+ }
+ }
+
+
+ public boolean isMultivalued()
+ {
+ return this.parts.length > 1;
+ }
+
+
+ public String getName()
+ {
+ return this.parts.length > 0 ? this.parts[0].getName() : ""; //$NON-NLS-1$
+ }
+
+
+ public String getValue()
+ {
+ return this.parts.length > 0 ? this.parts[0].getValue() : ""; //$NON-NLS-1$
+ }
+
+
+ public RDNPart[] getParts()
+ {
+ return this.parts;
+ }
+
+
+ public void setParts( RDNPart[] parts )
+ {
+ this.parts = parts;
+ }
+
+
+ public String[] getNames()
+ {
+ if ( !isMultivalued() )
+ {
+ return new String[]
+ { getName() };
+ }
+ else
+ {
+ Set nameSet = new LinkedHashSet();
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ RDNPart entry = this.parts[i];
+ nameSet.add( entry.getName() );
+ }
+ return ( String[] ) nameSet.toArray( new String[nameSet.size()] );
+ }
+ }
+
+
+ public String[] getValues()
+ {
+ if ( !isMultivalued() )
+ {
+ return new String[]
+ { getValue() };
+ }
+ else
+ {
+ Set valueSet = new LinkedHashSet();
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ RDNPart entry = this.parts[i];
+ valueSet.add( entry.getValue() );
+ }
+ return ( String[] ) valueSet.toArray( new String[valueSet.size()] );
+ }
+ }
+
+
+ public int hashCode()
+ {
+ return this.toString().hashCode();
+ }
+
+
+ public boolean equals( Object o )
+ {
+ if ( o instanceof RDN )
+ {
+ return this.toString().equals( ( ( RDN ) o ).toString() );
+ }
+ return false;
+ }
+
+
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+
+ if ( isMultivalued() )
+ {
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ RDNPart part = this.parts[i];
+ sb.append( part.toString() );
+ // sb.append(part.getName());
+ // sb.append("="); //$NON-NLS-1$
+ // sb.append(part.getValue());
+
+ if ( i + 1 < this.parts.length )
+ {
+ sb.append( "+" ); //$NON-NLS-1$
+ }
+ }
+ }
+ else if ( this.parts.length > 0 )
+ {
+ RDNPart part = this.parts[0];
+ sb.append( part.toString() );
+ // sb.append(part.getName());
+ // sb.append("="); //$NON-NLS-1$
+ // sb.append(part.getValue());
+ }
+
+ return sb.toString();
+ }
+
+
+ public String toOidString( Schema schema )
+ {
+ StringBuffer sb = new StringBuffer();
+
+ if ( isMultivalued() )
+ {
+ for ( int i = 0; i < this.parts.length; i++ )
+ {
+ RDNPart part = this.parts[i];
+ sb.append( part.toOidString( schema ) );
+
+ if ( i + 1 < this.parts.length )
+ {
+ sb.append( "+" ); //$NON-NLS-1$
+ }
+ }
+ }
+ else if ( this.parts.length > 0 )
+ {
+ RDNPart part = this.parts[0];
+ sb.append( part.toOidString( schema ) );
+ }
+
+ return sb.toString();
+ }
+
+
+ private void parseMultiRdn( String multirdn ) throws NameException
+ {
+
+ List partList = new ArrayList( 1 );
+
+ boolean backslash = false;
+ int start = 0;
+ for ( int i = 0; i < multirdn.length(); i++ )
+ {
+ if ( multirdn.charAt( i ) == '\\' && !backslash )
+ {
+ backslash = true;
+ }
+ else
+ {
+ String rdn = null;
+ if ( multirdn.charAt( i ) == '+' && !backslash )
+ {
+ rdn = multirdn.substring( start, i );
+ }
+ else if ( i == multirdn.length() - 1 )
+ {
+ rdn = multirdn.substring( start );
+ }
+ if ( rdn != null )
+ {
+ int index = rdn.indexOf( '=' );
+ if ( index < 1 )
+ {
+ throw new NameException( BrowserCoreMessages.model__invalid_rdn );
+ }
+ String name = rdn.substring( 0, index );
+ String value = rdn.substring( index + 1, rdn.length() );
+ // partList.add(new RDNPart(name.trim(), value.trim()));
+ partList.add( new RDNPart( name, value, true ) );
+ start = i + 1;
+ }
+ backslash = false;
+ }
+ }
+
+ if ( partList.isEmpty() )
+ {
+
+ }
+
+ this.parts = ( RDNPart[] ) partList.toArray( new RDNPart[partList.size()] );
+
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDNPart.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDNPart.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDNPart.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/RDNPart.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,208 @@
+/*
+ * 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.BrowserCoreMessages;
+import org.apache.directory.ldapstudio.browser.core.model.schema.Schema;
+
+
+public class RDNPart implements Serializable
+{
+
+ private static final long serialVersionUID = 3250931604639940667L;
+
+ private String name;
+
+ private String value;
+
+
+ public RDNPart()
+ {
+ this.name = ""; //$NON-NLS-1$
+ this.value = ""; //$NON-NLS-1$
+ }
+
+
+ public RDNPart( String name, String value, boolean isValueEncoded ) throws NameException
+ {
+ if ( name == null || !name.matches( "([A-Za-z][A-Za-z0-9-]*)|([0-9]+(\\.[0-9]+)+)" ) ) { //$NON-NLS-1$
+ throw new NameException( BrowserCoreMessages.model__empty_attribute );
+ }
+ if ( value == null || value.length() < 1 )
+ {
+ throw new NameException( BrowserCoreMessages.model__empty_value );
+ }
+ // this.name = name.trim();
+ // this.value = value.trim();
+ this.setName( name );
+ if ( isValueEncoded )
+ {
+ this.setValue( value );
+ }
+ else
+ {
+ this.setUnencodedValue( value );
+ }
+ }
+
+
+ public RDNPart( RDNPart rdnPart )
+ {
+ this.name = rdnPart.name;
+ this.value = rdnPart.value;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+
+ // If the UTF-8 string does not have any of the following characters
+ // which need escaping, then that string can be used as the string
+ // representation of the value.
+ //
+ // o a space or "#" character occurring at the beginning of the
+ // string
+ //
+ // o a space character occurring at the end of the string
+ //
+ // o one of the characters ",", "+", """, "\", "<", ">" or ";"
+ //
+ // Implementations MAY escape other characters.
+ //
+ // If a character to be escaped is one of the list shown above, then it
+ // is prefixed by a backslash ('\' ASCII 92).
+ //
+ // Otherwise the character to be escaped is replaced by a backslash and
+ // two hex digits, which form a single byte in the code of the
+ // character.
+ public String getUnencodedValue()
+ {
+ StringBuffer unencodedValue = new StringBuffer( this.value );
+
+ for ( int i = 0; i < unencodedValue.length(); i++ )
+ {
+ if ( unencodedValue.charAt( i ) == '\\' )
+ {
+
+ if ( i == 0 && unencodedValue.length() > i + 1 && unencodedValue.charAt( i + 1 ) == ' ' )
+ {
+ unencodedValue.deleteCharAt( i );
+ }
+ else if ( i == unencodedValue.length() - 2 && unencodedValue.length() > i + 1
+ && unencodedValue.charAt( i + 1 ) == ' ' )
+ {
+ unencodedValue.deleteCharAt( i );
+ }
+ else if ( i == 0 && unencodedValue.length() > i + 1 && unencodedValue.charAt( i + 1 ) == '#' )
+ {
+ unencodedValue.deleteCharAt( i );
+ }
+ else if ( unencodedValue.length() > i + 1
+ && ( unencodedValue.charAt( i + 1 ) == '+' || unencodedValue.charAt( i + 1 ) == ','
+ || unencodedValue.charAt( i + 1 ) == ';' || unencodedValue.charAt( i + 1 ) == '<'
+ || unencodedValue.charAt( i + 1 ) == '>' || unencodedValue.charAt( i + 1 ) == '"' || unencodedValue
+ .charAt( i + 1 ) == '\\' ) )
+ {
+ unencodedValue.deleteCharAt( i );
+ }
+
+ }
+ }
+
+ return unencodedValue.toString();
+ }
+
+
+ public void setUnencodedValue( String unencodedValue )
+ {
+
+ unencodedValue = unencodedValue.replaceAll( "\\\\", "\\\\\\\\" ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( "\\+", "\\\\+" ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( ",", "\\\\," ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( "\"", "\\\\\"" ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( "<", "\\\\<" ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( ">", "\\\\>" ); //$NON-NLS-1$ //$NON-NLS-2$
+ unencodedValue = unencodedValue.replaceAll( ";", "\\\\;" ); //$NON-NLS-1$ //$NON-NLS-2$
+
+ if ( unencodedValue.startsWith( " " ) ) //$NON-NLS-1$
+ unencodedValue = "\\" + unencodedValue; //$NON-NLS-1$
+ if ( unencodedValue.startsWith( "#" ) ) //$NON-NLS-1$
+ unencodedValue = "\\" + unencodedValue; //$NON-NLS-1$
+ if ( unencodedValue.endsWith( " " ) ) //$NON-NLS-1$
+ unencodedValue = unencodedValue.substring( 0, unencodedValue.length() - 1 ) + "\\ "; //$NON-NLS-1$
+
+ this.value = unencodedValue;
+ }
+
+
+ public String getValue()
+ {
+ return value;
+ }
+
+
+ public void setValue( String value )
+ {
+ this.value = value;
+ }
+
+
+ public int hashCode()
+ {
+ return this.toString().hashCode();
+ }
+
+
+ public boolean equals( Object o )
+ {
+ if ( o instanceof RDNPart )
+ {
+ return this.toString().equals( ( ( RDNPart ) o ).toString() );
+ }
+ return false;
+ }
+
+
+ public String toString()
+ {
+ return getName() + "=" + getValue(); //$NON-NLS-1$
+ }
+
+
+ public String toOidString( Schema schema )
+ {
+ String oid = schema != null ? schema.getAttributeTypeDescription( getName() ).getNumericOID() : getName();
+ return oid + "=" + getValue(); //$NON-NLS-1$
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/SearchParameter.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/SearchParameter.java?view=auto&rev=488345
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/SearchParameter.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/SearchParameter.java Mon Dec 18 09:15:00 2006
@@ -0,0 +1,274 @@
+/*
+ * 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.utils.LdifUtils;
+
+
+public class SearchParameter implements Serializable
+{
+
+ private static final long serialVersionUID = 2447490121520960805L;
+
+ private String name;
+
+ private DN searchBase;
+
+ private String filter = ISearch.FILTER_TRUE;
+
+ private String[] returningAttributes = null;
+
+ private int scope = ISearch.SCOPE_OBJECT;
+
+ private int timeLimit = 0;
+
+ private int countLimit = 0;
+
+ private int aliasesDereferencingMethod = IConnection.DEREFERENCE_ALIASES_NEVER;
+
+ private int referralsHandlingMethod = IConnection.HANDLE_REFERRALS_IGNORE;
+
+ private Control[] controls = null;
+
+ private boolean initChildrenFlag = false;
+
+ private boolean initAliasAndReferralFlag = false;
+
+
+ public SearchParameter()
+ {
+ }
+
+
+ public int getCountLimit()
+ {
+ return countLimit;
+ }
+
+
+ public void setCountLimit( int countLimit )
+ {
+ this.countLimit = countLimit;
+ }
+
+
+ public String getFilter()
+ {
+ return filter;
+ }
+
+
+ public void setFilter( String filter )
+ {
+ this.filter = filter;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+
+ public String[] getReturningAttributes()
+ {
+ return returningAttributes;
+ }
+
+
+ public void setReturningAttributes( String[] returningAttributes )
+ {
+ if ( returningAttributes == null )
+ {
+ IllegalArgumentException e = new IllegalArgumentException( "Argument returningAttributes is null" ); //$NON-NLS-1$
+ e.printStackTrace();
+ throw e;
+ }
+ this.returningAttributes = returningAttributes;
+ }
+
+
+ public int getScope()
+ {
+ return scope;
+ }
+
+
+ public void setScope( int scope )
+ {
+ this.scope = scope;
+ }
+
+
+ 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;
+ }
+
+
+ public DN getSearchBase()
+ {
+ return searchBase;
+ }
+
+
+ public void setSearchBase( DN searchBase )
+ {
+ this.searchBase = searchBase;
+ }
+
+
+ public int getTimeLimit()
+ {
+ return timeLimit;
+ }
+
+
+ public void setTimeLimit( int timeLimit )
+ {
+ this.timeLimit = timeLimit;
+ }
+
+
+ public Object clone()
+ {
+ SearchParameter clone = new SearchParameter();
+ clone.setName( getName() );
+ clone.setSearchBase( getSearchBase() );
+ clone.setFilter( getFilter() );
+ clone.setReturningAttributes( getReturningAttributes() );
+ clone.setScope( getScope() );
+ clone.setTimeLimit( getTimeLimit() );
+ clone.setCountLimit( getCountLimit() );
+ clone.setAliasesDereferencingMethod( getAliasesDereferencingMethod() );
+ clone.setReferralsHandlingMethod( getReferralsHandlingMethod() );
+ clone.setInitChildrenFlag( isInitChildrenFlag() );
+ clone.setInitAliasAndReferralFlag( isInitAliasAndReferralFlag() );
+ clone.setControls( getControls() );
+ return clone;
+ }
+
+
+ public String getURL()
+ {
+ // ldap://host:port/dn?attributes?scope?filter?extensions
+ StringBuffer sb = new StringBuffer();
+
+ sb.append( LdifUtils.urlEncode( searchBase.toString() ) );
+
+ sb.append( '?' );
+
+ for ( int i = 0; returningAttributes != null && i < returningAttributes.length; i++ )
+ {
+ sb.append( LdifUtils.urlEncode( returningAttributes[i] ) );
+ if ( i + 1 < returningAttributes.length )
+ sb.append( ',' );
+ }
+
+ sb.append( '?' );
+
+ if ( scope == ISearch.SCOPE_OBJECT )
+ {
+ sb.append( "base" ); //$NON-NLS-1$
+ }
+ else if ( scope == ISearch.SCOPE_ONELEVEL )
+ {
+ sb.append( "one" ); //$NON-NLS-1$
+ }
+ else if ( scope == ISearch.SCOPE_SUBTREE )
+ {
+ sb.append( "sub" ); //$NON-NLS-1$
+ }
+
+ sb.append( '?' );
+
+ if ( filter != null )
+ {
+ sb.append( LdifUtils.urlEncode( filter ) );
+ }
+
+ return sb.toString();
+ }
+
+
+ public boolean isInitAliasAndReferralFlag()
+ {
+ return initAliasAndReferralFlag;
+ }
+
+
+ public void setInitAliasAndReferralFlag( boolean initAliasAndReferralFlag )
+ {
+ this.initAliasAndReferralFlag = initAliasAndReferralFlag;
+ }
+
+
+ public boolean isInitChildrenFlag()
+ {
+ return initChildrenFlag;
+ }
+
+
+ public void setInitChildrenFlag( boolean initChildrenFlag )
+ {
+ this.initChildrenFlag = initChildrenFlag;
+ }
+
+
+ public Control[] getControls()
+ {
+ return controls;
+ }
+
+
+ public void setControls( Control[] controls )
+ {
+ this.controls = controls;
+ }
+
+}