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:32:09 UTC
svn commit: r488355 [1/10] - in /directory/sandbox/pamarcelot/ldapstudio:
ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/
ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/
ldapstudio-browse...
Author: pamarcelot
Date: Mon Dec 18 09:32:03 2006
New Revision: 488355
URL: http://svn.apache.org/viewvc?view=rev&rev=488355
Log:
Updating LDAP Browser Plugin. Updating model classes (Subclipse missed some files in action).
Added:
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/SearchManager.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapAndFilterComponent.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilter.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterComponent.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterItemComponent.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapNotFilterComponent.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapOrFilterComponent.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterParser.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterScanner.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterToken.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEOFPart.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEnumeration.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifFile.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifInvalidPart.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifPart.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifChangeAddRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifChangeDeleteRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifChangeModDnRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifChangeModifyRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifChangeRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifCommentContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifContentRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifEOFContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifInvalidContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifModSpec.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifRecord.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifSepContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/container/LdifVersionContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifAttrValLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifChangeTypeLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifCommentLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifControlLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifDeloldrdnLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifDnLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifLineBase.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifModSpecSepLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifModSpecTypeLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifNewrdnLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifNewsuperiorLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifNonEmptyLineBase.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifSepLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifValueLineBase.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/lines/LdifVersionLine.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/parser/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/parser/DummyLdifContainer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/parser/LdifParser.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/parser/LdifScanner.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/parser/LdifToken.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/AttributeTypeDescription.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/AttributeValueProviderRelation.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/BinaryAttribute.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/BinarySyntax.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/LdapSyntaxDescription.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/MatchingRuleDescription.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/MatchingRuleUseDescription.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/ObjectClassDescription.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/Schema.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/SchemaPart.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/SchemaPart2.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/SchemaUtils.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/Subschema.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/SyntaxValueProviderRelation.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/default_schema.ldif
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaLexer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaParser.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaTokenTypes.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaTokenTypes.txt
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaValueLexer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaValueParser.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaValueTokenTypes.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/SchemaValueTokenTypes.txt
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/schema.g
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/schema/parser/schemavalue.g
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/AttributePropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/BookmarkPropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/ConnectionPropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/EntryPropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/SearchPropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/propertypageproviders/ValuePropertyPageProvider.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/LdapFilterUtils.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/LdifUtils.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/ModelConverter.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/UnixCrypt.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/utils/Utils.java
Modified:
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/Activator.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/AttributesViewController.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/BrowserViewController.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/PreferenceInitializer.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/AttributeDeleteAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/AttributeEditAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/AttributeNewAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/ConnectionDeleteAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/ConnectionEditAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/ConnectionNewAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/EntryDeleteAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/controller/actions/RenameAttributeAction.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/AttributeValueWrapper.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/AttributeWrapper.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/ConnectionWrapper.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/DisplayableTreeViewerElement.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/EntryWrapper.java
directory/sandbox/pamarcelot/ldapstudio/ldapstudio-ldapbrowser/src/main/java/org/apache/directory/ldapstudio/browser/view/views/wrappers/TreeViewerRootNode.java
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/SearchManager.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/SearchManager.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/SearchManager.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/SearchManager.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,130 @@
+/*
+ * 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;
+
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+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 SearchManager implements Serializable
+{
+
+ private static final long serialVersionUID = 8665227628274097691L;
+
+ private List searchList;
+
+ private IConnection connection;
+
+
+ protected SearchManager()
+ {
+ }
+
+
+ public SearchManager( IConnection connection )
+ {
+ this.connection = connection;
+ this.searchList = new ArrayList();
+ }
+
+
+ public IConnection getConnection()
+ {
+ return this.connection;
+ }
+
+
+ public void addSearch( ISearch search )
+ {
+ this.addSearch( this.searchList.size(), search );
+ }
+
+
+ public void addSearch( int index, ISearch search )
+ {
+ if ( this.getSearch( search.getName() ) != null )
+ {
+ String newSearchName = BrowserCoreMessages.bind( BrowserCoreMessages.copy_n_of_s, "", search.getName() ); //$NON-NLS-1$
+ for ( int i = 2; this.getSearch( newSearchName ) != null; i++ )
+ {
+ newSearchName = BrowserCoreMessages.bind( BrowserCoreMessages.copy_n_of_s, i + " ", search.getName() ); //$NON-NLS-1$
+ }
+ search.setName( newSearchName );
+ }
+
+ this.searchList.add( index, search );
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.SEARCH_ADDED ), this );
+ }
+
+
+ public ISearch getSearch( String name )
+ {
+ for ( Iterator it = this.searchList.iterator(); it.hasNext(); )
+ {
+ ISearch search = ( ISearch ) it.next();
+ if ( search.getName().equals( name ) )
+ {
+ return search;
+ }
+ }
+ return null;
+ }
+
+
+ public int indexOf( ISearch search )
+ {
+ return this.searchList.indexOf( search );
+ }
+
+
+ public void removeSearch( ISearch search )
+ {
+ this.searchList.remove( search );
+ EventRegistry.fireSearchUpdated( new SearchUpdateEvent( search, SearchUpdateEvent.SEARCH_REMOVED ), this );
+ }
+
+
+ public void removeSearch( String name )
+ {
+ this.removeSearch( this.getSearch( name ) );
+ }
+
+
+ public ISearch[] getSearches()
+ {
+ return ( ISearch[] ) this.searchList.toArray( new ISearch[0] );
+ }
+
+
+ public int getSearchCount()
+ {
+ return this.searchList.size();
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapAndFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapAndFilterComponent.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapAndFilterComponent.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapAndFilterComponent.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,82 @@
+/*
+ * 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.filter;
+
+
+import java.util.Iterator;
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken;
+
+
+public class LdapAndFilterComponent extends LdapFilterComponent
+{
+
+ public LdapAndFilterComponent( LdapFilter parent )
+ {
+ super( parent );
+ }
+
+
+ public boolean setStartToken( LdapFilterToken andToken )
+ {
+ if ( andToken != null && andToken.getType() == LdapFilterToken.AND )
+ {
+ return super.setStartToken( andToken );
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public String getInvalidCause()
+ {
+ if ( this.startToken == null )
+ {
+ return "Missing AND character '&'";
+ }
+ else if ( this.filterList == null || this.filterList.isEmpty() )
+ {
+ return "Missing filters";
+ }
+ else
+ {
+ return "Invalid AND filter";
+ }
+ }
+
+
+ public String toString()
+ {
+ String s = this.startToken != null ? "&" : "";
+ for ( Iterator it = filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter != null )
+ {
+ s += filter.toString();
+ }
+ }
+ return s;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilter.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilter.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilter.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilter.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,224 @@
+/*
+ * 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.filter;
+
+
+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.model.filter.parser.LdapFilterToken;
+
+
+public class LdapFilter
+{
+
+ private LdapFilterToken startToken;
+
+ private LdapFilterComponent filterComponent;
+
+ private LdapFilterToken stopToken;
+
+ private List otherTokens;
+
+
+ public LdapFilter()
+ {
+ this.startToken = null;
+ this.filterComponent = null;
+ this.stopToken = null;
+ this.otherTokens = new ArrayList( 2 );
+ }
+
+
+ public boolean setStartToken( LdapFilterToken startToken )
+ {
+ if ( this.startToken == null && startToken != null && startToken.getType() == LdapFilterToken.LPAR )
+ {
+ this.startToken = startToken;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public boolean setFilterComponent( LdapFilterComponent filterComponent )
+ {
+ if ( this.startToken != null && this.filterComponent == null && filterComponent != null )
+ {
+ this.filterComponent = filterComponent;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public boolean setStopToken( LdapFilterToken stopToken )
+ {
+ if ( this.startToken != null && this.stopToken == null && stopToken != null
+ && stopToken.getType() == LdapFilterToken.RPAR )
+ {
+ this.stopToken = stopToken;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public void addOtherToken( LdapFilterToken otherToken )
+ {
+ this.otherTokens.add( otherToken );
+ }
+
+
+ public LdapFilterToken getStartToken()
+ {
+ return this.startToken;
+ }
+
+
+ public LdapFilterComponent getFilterComponent()
+ {
+ return this.filterComponent;
+ }
+
+
+ public LdapFilterToken getStopToken()
+ {
+ return this.stopToken;
+ }
+
+
+ public LdapFilterToken[] getTokens()
+ {
+
+ // collect tokens
+ List tokenList = new ArrayList();
+ if ( this.startToken != null )
+ {
+ tokenList.add( this.startToken );
+ }
+ if ( this.stopToken != null )
+ {
+ tokenList.add( this.stopToken );
+ }
+ if ( this.filterComponent != null )
+ {
+ tokenList.addAll( Arrays.asList( this.filterComponent.getTokens() ) );
+ }
+ tokenList.addAll( this.otherTokens );
+
+ // sort tokens
+ LdapFilterToken[] tokens = ( LdapFilterToken[] ) tokenList.toArray( new LdapFilterToken[tokenList.size()] );
+ Arrays.sort( tokens );
+
+ // return
+ return tokens;
+ }
+
+
+ public boolean isValid()
+ {
+ return this.startToken != null && this.filterComponent != null && this.filterComponent.isValid()
+ && this.stopToken != null;
+ }
+
+
+ public LdapFilter[] getInvalidFilters()
+ {
+ if ( this.startToken == null || this.filterComponent == null || this.stopToken == null )
+ {
+ return new LdapFilter[]
+ { this };
+ }
+ else
+ {
+ return this.filterComponent.getInvalidFilters();
+ }
+ }
+
+
+ public LdapFilter getFilter( int offset )
+ {
+ if ( this.startToken != null && this.startToken.getOffset() == offset )
+ {
+ return this;
+ }
+ else if ( this.stopToken != null && this.stopToken.getOffset() == offset )
+ {
+ return this;
+ }
+
+ if ( this.otherTokens != null && this.otherTokens.size() > 0 )
+ {
+ for ( int i = 0; i < this.otherTokens.size(); i++ )
+ {
+ LdapFilterToken otherToken = ( LdapFilterToken ) this.otherTokens.get( i );
+ if ( otherToken != null && otherToken.getOffset() <= offset
+ && offset < otherToken.getOffset() + otherToken.getLength() )
+ {
+ return this;
+ }
+ }
+ }
+
+ if ( this.filterComponent != null )
+ {
+ return this.filterComponent.getFilter( offset );
+ }
+
+ return this;
+ }
+
+
+ public String getInvalidCause()
+ {
+ if ( this.stopToken == null )
+ {
+ return BrowserCoreMessages.model_filter_missing_closing_parenthesis;
+ }
+ else if ( this.filterComponent == null )
+ {
+ return BrowserCoreMessages.model_filter_missing_filter_expression;
+ }
+ else
+ {
+ return this.filterComponent.getInvalidCause();
+ }
+ }
+
+
+ public String toString()
+ {
+ return ( this.startToken != null ? "(" : "" ) + ( filterComponent != null ? filterComponent.toString() : "" ) + ( this.stopToken != null ? ")" : "" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterComponent.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterComponent.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterComponent.java Mon Dec 18 09:32:03 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.filter;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken;
+
+
+public abstract class LdapFilterComponent
+{
+
+ protected final LdapFilter parent;
+
+ protected LdapFilterToken startToken;
+
+ protected List filterList;
+
+
+ /**
+ *
+ *
+ * @param parent
+ * the parent filter of this filter component, not null.
+ */
+ public LdapFilterComponent( LdapFilter parent )
+ {
+ if ( parent == null )
+ throw new IllegalArgumentException( "parent is null" );
+
+ this.parent = parent;
+ this.startToken = null;
+ this.filterList = new ArrayList( 2 );
+ }
+
+
+ /**
+ * Returns the parent filter of this filter component.
+ *
+ * @return the parent filter, never null.
+ */
+ public final LdapFilter getParent()
+ {
+ return this.parent;
+ }
+
+
+ /**
+ * Sets the start token of the filter component. Checks if start token
+ * isn't set yet and if the given start token isn't null.
+ *
+ * @param startToken
+ * @return true if setting the start token was successful, false
+ * otherwise.
+ */
+ public boolean setStartToken( LdapFilterToken startToken )
+ {
+ if ( this.startToken == null && startToken != null )
+ {
+ this.startToken = startToken;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /**
+ * Returns the start token of this filter component.
+ *
+ * @return the start token or null if not set.
+ */
+ public final LdapFilterToken getStartToken()
+ {
+ return this.startToken;
+ }
+
+
+ /**
+ * Adds a filter to the list of subfilters. Checks if the start token
+ * was set before and if the filter isn't null.
+ *
+ * @param filter
+ * @return true if adding the filter was successful, false otherwise.
+ */
+ public boolean addFilter( LdapFilter filter )
+ {
+ if ( this.startToken != null && filter != null )
+ {
+ this.filterList.add( filter );
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /**
+ * Returns the subfilters of this filter component.
+ *
+ * @return an array of subfilters or an empty array.
+ */
+ public LdapFilter[] getFilters()
+ {
+ LdapFilter[] filters = new LdapFilter[this.filterList.size()];
+ this.filterList.toArray( filters );
+ return filters;
+ }
+
+
+ /**
+ * Checks if this filter component including all subfilters is valid.
+ *
+ * @return true if this filter component is valid.
+ */
+ public boolean isValid()
+ {
+ if ( this.startToken == null )
+ {
+ return false;
+ }
+
+ if ( this.filterList.isEmpty() )
+ {
+ return false;
+ }
+
+ for ( Iterator it = filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter == null || !filter.isValid() )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
+ /**
+ * Returns the invalid cause.
+ *
+ * @return the invalid cause.
+ */
+ public abstract String getInvalidCause();
+
+
+ /**
+ * Returns the invalid filters. This may be the whole parent filter or
+ * any of the subfilters.
+ *
+ * @return an array of invalid filters or an empty array if all filters
+ * are valid.
+ */
+ public LdapFilter[] getInvalidFilters()
+ {
+ if ( this.startToken == null || this.filterList.isEmpty() )
+ {
+ return new LdapFilter[]
+ { this.parent };
+ }
+ else
+ {
+ List invalidFilterList = new ArrayList();
+ for ( Iterator it = this.filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter != null )
+ {
+ invalidFilterList.addAll( Arrays.asList( filter.getInvalidFilters() ) );
+ }
+ }
+ return ( LdapFilter[] ) invalidFilterList.toArray( new LdapFilter[invalidFilterList.size()] );
+ }
+ }
+
+
+ /**
+ * Returns all tokens of the filter component including all subfilters.
+ *
+ * @return an array of tokens of an empty array.
+ */
+ public LdapFilterToken[] getTokens()
+ {
+ // collect tokens
+ List tokenList = new ArrayList();
+ if ( this.startToken != null )
+ {
+ tokenList.add( this.startToken );
+ }
+ for ( Iterator it = this.filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter != null )
+ {
+ tokenList.addAll( Arrays.asList( filter.getTokens() ) );
+ }
+ }
+
+ // sort tokens
+ LdapFilterToken[] tokens = ( LdapFilterToken[] ) tokenList.toArray( new LdapFilterToken[tokenList.size()] );
+ Arrays.sort( tokens );
+
+ // return
+ return tokens;
+ }
+
+
+ /**
+ * Returns the filter at the given offset. This may be the whole parent
+ * filter or one of the subfilters.
+ *
+ * @param offset
+ * @return the filter at the given offset or null is offset is out of
+ * range.
+ */
+ public LdapFilter getFilter( int offset )
+ {
+ if ( this.startToken != null && this.startToken.getOffset() == offset )
+ {
+ return this.parent;
+ }
+ else if ( this.filterList != null || !this.filterList.isEmpty() )
+ {
+ for ( Iterator it = this.filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter != null && filter.getFilter( offset ) != null )
+ {
+ return filter.getFilter( offset );
+ }
+ }
+ return null;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterItemComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterItemComponent.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterItemComponent.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapFilterItemComponent.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,223 @@
+/*
+ * 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.filter;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken;
+
+
+public class LdapFilterItemComponent extends LdapFilterComponent
+{
+
+ private LdapFilterToken filtertypeToken;
+
+ private LdapFilterToken valueToken;
+
+
+ public LdapFilterItemComponent( LdapFilter parent )
+ {
+ super( parent );
+ this.filtertypeToken = null;
+ this.valueToken = null;
+ }
+
+
+ public boolean setStartToken( LdapFilterToken attributeToken )
+ {
+ if ( attributeToken != null && attributeToken.getType() == LdapFilterToken.ATTRIBUTE )
+ {
+ super.setStartToken( attributeToken );
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public boolean setAttributeToken( LdapFilterToken attributeToken )
+ {
+ return this.setStartToken( attributeToken );
+ }
+
+
+ public LdapFilterToken getAttributeToken()
+ {
+ return this.getStartToken();
+ }
+
+
+ public boolean setFiltertypeToken( LdapFilterToken filtertypeToken )
+ {
+ if ( this.filtertypeToken == null
+ && filtertypeToken != null
+ && ( filtertypeToken.getType() == LdapFilterToken.EQUAL
+ || filtertypeToken.getType() == LdapFilterToken.GREATER
+ || filtertypeToken.getType() == LdapFilterToken.LESS
+ || filtertypeToken.getType() == LdapFilterToken.APROX || filtertypeToken.getType() == LdapFilterToken.PRESENT ) )
+ {
+ this.filtertypeToken = filtertypeToken;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public LdapFilterToken getFilterToken()
+ {
+ return this.filtertypeToken;
+ }
+
+
+ public boolean setValueToken( LdapFilterToken valueToken )
+ {
+ if ( this.valueToken == null && valueToken != null && valueToken.getType() == LdapFilterToken.VALUE )
+ {
+ this.valueToken = valueToken;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public LdapFilterToken getValueToken()
+ {
+ return this.valueToken;
+ }
+
+
+ public boolean isValid()
+ {
+ return startToken != null && filtertypeToken != null
+ && ( valueToken != null || filtertypeToken.getType() == LdapFilterToken.PRESENT );
+ }
+
+
+ public LdapFilterToken[] getTokens()
+ {
+ // collect tokens
+ List tokenList = new ArrayList();
+ if ( this.startToken != null )
+ {
+ tokenList.add( this.startToken );
+ }
+ if ( this.filtertypeToken != null )
+ {
+ tokenList.add( this.filtertypeToken );
+ }
+ if ( this.valueToken != null )
+ {
+ tokenList.add( this.valueToken );
+ }
+
+ // sort tokens
+ LdapFilterToken[] tokens = ( LdapFilterToken[] ) tokenList.toArray( new LdapFilterToken[tokenList.size()] );
+ Arrays.sort( tokens );
+
+ // return
+ return tokens;
+ }
+
+
+ public String toString()
+ {
+ return ( startToken != null ? startToken.getValue() : "" )
+ + ( filtertypeToken != null ? filtertypeToken.getValue() : "" )
+ + ( valueToken != null ? valueToken.getValue() : "" );
+ }
+
+
+ public boolean addFilter( LdapFilter filter )
+ {
+ return false;
+ }
+
+
+ public LdapFilter[] getInvalidFilters()
+ {
+ if ( this.isValid() )
+ {
+ return new LdapFilter[0];
+ }
+ else
+ {
+ return new LdapFilter[]
+ { parent };
+ }
+ }
+
+
+ public LdapFilter getFilter( int offset )
+ {
+ if ( this.startToken != null && this.startToken.getOffset() <= offset
+ && offset < this.startToken.getOffset() + this.startToken.getLength() )
+ {
+ return this.parent;
+ }
+ else if ( this.filtertypeToken != null && this.filtertypeToken.getOffset() <= offset
+ && offset < this.filtertypeToken.getOffset() + this.filtertypeToken.getLength() )
+ {
+ return this.parent;
+ }
+ else if ( this.valueToken != null && this.valueToken.getOffset() <= offset
+ && offset < this.valueToken.getOffset() + this.valueToken.getLength() )
+ {
+ return this.parent;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ public String getInvalidCause()
+ {
+ if ( this.startToken == null )
+ {
+ return "Missing attribute name";
+ }
+ else if ( this.filtertypeToken == null )
+ {
+ return "Missing filter type, select one of '=', '>=', '<=','~='";
+ }
+ else if ( this.valueToken == null )
+ {
+ return "Missing value";
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapNotFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapNotFilterComponent.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapNotFilterComponent.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapNotFilterComponent.java Mon Dec 18 09:32:03 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.filter;
+
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken;
+
+
+public class LdapNotFilterComponent extends LdapFilterComponent
+{
+
+ public LdapNotFilterComponent( LdapFilter parent )
+ {
+ super( parent );
+ }
+
+
+ public boolean setStartToken( LdapFilterToken notToken )
+ {
+ if ( notToken != null && notToken.getType() == LdapFilterToken.NOT )
+ {
+ return super.setStartToken( notToken );
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /**
+ * Checks additionally if the the filter wasn't set before.
+ *
+ * @see LdapFilterComponent#addFilter(LdapFilter)
+ */
+ public boolean addFilter( LdapFilter filter )
+ {
+ if ( this.filterList.isEmpty() )
+ {
+ return super.addFilter( filter );
+ }
+ else
+ {
+ // There is already a filter in the list. A NOT filter
+ // can only contain one filter.
+ return false;
+ }
+ }
+
+
+ public String getInvalidCause()
+ {
+ if ( this.startToken == null )
+ {
+ return "Missing NOT character '!'";
+ }
+ else if ( this.filterList == null || this.filterList.isEmpty() )
+ {
+ return "Missing filter expression";
+ }
+ else
+ {
+ return "Invalid NOT filter";
+ }
+ }
+
+
+ public String toString()
+ {
+ return ( this.startToken != null ? "!" : "" )
+ + ( !this.filterList.isEmpty() ? this.filterList.get( 0 ).toString() : "" );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapOrFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapOrFilterComponent.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapOrFilterComponent.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/LdapOrFilterComponent.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,82 @@
+/*
+ * 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.filter;
+
+
+import java.util.Iterator;
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken;
+
+
+public class LdapOrFilterComponent extends LdapFilterComponent
+{
+
+ public LdapOrFilterComponent( LdapFilter parent )
+ {
+ super( parent );
+ }
+
+
+ public boolean setStartToken( LdapFilterToken orToken )
+ {
+ if ( orToken != null && orToken.getType() == LdapFilterToken.OR )
+ {
+ return super.setStartToken( orToken );
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ public String getInvalidCause()
+ {
+ if ( this.startToken == null )
+ {
+ return "Missing OR character '|'";
+ }
+ else if ( this.filterList == null || this.filterList.isEmpty() )
+ {
+ return "Missing filters";
+ }
+ else
+ {
+ return "Invalid OR filter";
+ }
+ }
+
+
+ public String toString()
+ {
+ String s = this.startToken != null ? "|" : "";
+ for ( Iterator it = filterList.iterator(); it.hasNext(); )
+ {
+ LdapFilter filter = ( LdapFilter ) it.next();
+ if ( filter != null )
+ {
+ s += filter.toString();
+ }
+ }
+ return s;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterParser.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterParser.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterParser.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterParser.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,223 @@
+/*
+ * 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.filter.parser;
+
+
+import java.util.Stack;
+
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapAndFilterComponent;
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapFilter;
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapFilterComponent;
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapFilterItemComponent;
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapNotFilterComponent;
+import org.apache.directory.ldapstudio.browser.core.model.filter.LdapOrFilterComponent;
+
+
+public class LdapFilterParser
+{
+
+ private LdapFilterScanner scanner;
+
+ private Stack filterStack;
+
+ private LdapFilter model;
+
+
+ public LdapFilterParser()
+ {
+ this.scanner = new LdapFilterScanner();
+ this.model = new LdapFilter();
+ }
+
+
+ public LdapFilter getModel()
+ {
+ return this.model;
+ }
+
+
+ public void parse( String ldapFilter )
+ {
+
+ // reset state
+ this.filterStack = new Stack();
+ this.scanner.setFilter( ldapFilter );
+ this.model = new LdapFilter();
+
+ // handle error tokens before filter
+ LdapFilterToken token = this.scanner.nextToken();
+ while ( token.getType() != LdapFilterToken.LPAR && token.getType() != LdapFilterToken.EOF )
+ {
+ this.handleError( false, token, this.model );
+ token = scanner.nextToken();
+ }
+
+ // check filter start
+ if ( token.getType() == LdapFilterToken.LPAR )
+ {
+
+ // start top level filter
+ this.model.setStartToken( token );
+ filterStack.push( this.model );
+
+ // loop till filter end or EOF
+ do
+ {
+
+ // next token
+ token = this.scanner.nextToken();
+
+ switch ( token.getType() )
+ {
+ case LdapFilterToken.LPAR:
+ {
+ LdapFilter newFilter = new LdapFilter();
+ newFilter.setStartToken( token );
+
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapFilterComponent filterComponent = currentFilter.getFilterComponent();
+ if ( filterComponent != null && filterComponent.addFilter( newFilter ) )
+ {
+ filterStack.push( newFilter );
+ }
+ else
+ {
+ currentFilter.addOtherToken( token );
+ }
+
+ break;
+ }
+ case LdapFilterToken.RPAR:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.pop();
+ this.handleError( currentFilter.setStopToken( token ), token, currentFilter );
+ /*
+ * if(!filterStack.isEmpty()) { LdapFilter parentFilter =
+ * (LdapFilter) filterStack.peek(); LdapFilterComponent
+ * filterComponent = parentFilter.getFilterComponent();
+ * filterComponent.addFilter(currentFilter); }
+ */
+ break;
+ }
+ case LdapFilterToken.AND:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapAndFilterComponent filterComponent = new LdapAndFilterComponent( currentFilter );
+ filterComponent.setStartToken( token );
+ this.handleError( currentFilter.setFilterComponent( filterComponent ), token, currentFilter );
+ break;
+ }
+ case LdapFilterToken.OR:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapOrFilterComponent filterComponent = new LdapOrFilterComponent( currentFilter );
+ filterComponent.setStartToken( token );
+ this.handleError( currentFilter.setFilterComponent( filterComponent ), token, currentFilter );
+ break;
+ }
+ case LdapFilterToken.NOT:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapNotFilterComponent filterComponent = new LdapNotFilterComponent( currentFilter );
+ filterComponent.setStartToken( token );
+ this.handleError( currentFilter.setFilterComponent( filterComponent ), token, currentFilter );
+ break;
+ }
+ case LdapFilterToken.ATTRIBUTE:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapFilterItemComponent filterComponent = new LdapFilterItemComponent( currentFilter );
+ filterComponent.setAttributeToken( token );
+ this.handleError( currentFilter.setFilterComponent( filterComponent ), token, currentFilter );
+ break;
+ }
+ case LdapFilterToken.VALUE:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapFilterComponent filterComponent = currentFilter.getFilterComponent();
+ this.handleError( ( filterComponent instanceof LdapFilterItemComponent )
+ && ( ( LdapFilterItemComponent ) filterComponent ).setValueToken( token ), token,
+ currentFilter );
+ break;
+ }
+ case LdapFilterToken.EQUAL:
+ case LdapFilterToken.GREATER:
+ case LdapFilterToken.LESS:
+ case LdapFilterToken.APROX:
+ case LdapFilterToken.PRESENT:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ LdapFilterComponent filterComponent = currentFilter.getFilterComponent();
+ this.handleError( ( filterComponent instanceof LdapFilterItemComponent )
+ && ( ( LdapFilterItemComponent ) filterComponent ).setFiltertypeToken( token ), token,
+ currentFilter );
+ break;
+ }
+ case LdapFilterToken.WHITESPACE:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ currentFilter.addOtherToken( token );
+ break;
+ }
+ case LdapFilterToken.EOF:
+ {
+ this.model.addOtherToken( token );
+ break;
+ }
+ default:
+ {
+ LdapFilter currentFilter = ( LdapFilter ) filterStack.peek();
+ this.handleError( false, token, currentFilter );
+ }
+ }
+ }
+ while ( !filterStack.isEmpty() && token.getType() != LdapFilterToken.EOF );
+
+ }
+
+ // handle error token after filter
+ token = scanner.nextToken();
+ while ( token.getType() != LdapFilterToken.EOF )
+ {
+ this.handleError( false, token, this.model );
+ token = scanner.nextToken();
+ }
+
+ }
+
+
+ private void handleError( boolean success, LdapFilterToken token, LdapFilter filter )
+ {
+ if ( !success )
+ {
+ filter.addOtherToken( new LdapFilterToken( LdapFilterToken.ERROR, token.getValue(), token.getOffset() ) );
+ }
+ }
+
+
+ public static void main( String[] args )
+ {
+ LdapFilterParser parser = new LdapFilterParser();
+ parser.parse( "(sn" );
+
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterScanner.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterScanner.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterScanner.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterScanner.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,355 @@
+/*
+ * 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.filter.parser;
+
+
+public class LdapFilterScanner
+{
+
+ // From RFC 2254:
+ // -------------
+ // The string representation of an LDAP search filter is defined by the
+ // following grammar, following the ABNF notation defined in [5]. The
+ // filter format uses a prefix notation.
+ //
+ // filter = "(" filtercomp ")"
+ // filtercomp = and / or / not / item
+ // and = "&" filterlist
+ // or = "|" filterlist
+ // not = "!" filter
+ // filterlist = 1*filter
+ // item = simple / present / substring / extensible
+ // simple = attr filtertype value
+ // filtertype = equal / approx / greater / less
+ // equal = "="
+ // approx = "~="
+ // greater = ">="
+ // less = "<="
+ // extensible = attr [":dn"] [":" matchingrule] ":=" value
+ // / [":dn"] ":" matchingrule ":=" value
+ // present = attr "=*"
+ // substring = attr "=" [initial] any [final]
+ // initial = value
+ // any = "*" *(value "*")
+ // final = value
+ // attr = AttributeDescription from Section 4.1.5 of [1]
+ // matchingrule = MatchingRuleId from Section 4.1.9 of [1]
+ // value = AttributeValue from Section 4.1.6 of [1]
+ //
+ // The attr, matchingrule, and value constructs are as described in the
+ // corresponding section of [1] given above.
+ //
+ // If a value should contain any of the following characters
+ //
+ // Character ASCII value
+ // ---------------------------
+ // * 0x2a
+ // ( 0x28
+ // ) 0x29
+ // \ 0x5c
+ // NUL 0x00
+ //
+ // the character must be encoded as the backslash '\' character (ASCII
+ // 0x5c) followed by the two hexadecimal digits representing the ASCII
+ // value of the encoded character. The case of the two hexadecimal
+ // digits is not significant.
+
+ private String filter;
+
+ private int pos;
+
+ private int lastTokenType;
+
+
+ public LdapFilterScanner()
+ {
+ super();
+ this.filter = "";
+ }
+
+
+ public void setFilter( String filter )
+ {
+ this.filter = filter;
+ this.pos = -1;
+ this.lastTokenType = LdapFilterToken.NEW;
+ }
+
+
+ private char currentChar()
+ {
+ return 0 <= pos && pos < filter.length() ? filter.charAt( pos ) : '\u0000';
+ }
+
+
+ private char nextChar()
+ {
+ pos++;
+ return currentChar();
+ }
+
+
+ private char prevChar()
+ {
+ pos--;
+ return currentChar();
+ }
+
+
+ private char nextNonLinebreakChar()
+ {
+ while ( nextChar() == '\n' );
+ return currentChar();
+ }
+
+
+ private char prevNonLinebreakChar()
+ {
+ while ( prevChar() == '\n' );
+ return currentChar();
+ }
+
+
+ // private char nextNonWhitespaceChar() {
+ // while(Character.isWhitespace(nextChar()));
+ // return currentChar();
+ // }
+ // private char prevNonWhitespaceChar() {
+ // while(Character.isWhitespace(prevChar()));
+ // return currentChar();
+ // }
+
+ public LdapFilterToken nextToken()
+ {
+ char c;
+
+ // check for EOF
+ c = nextChar();
+ if ( c == '\u0000' )
+ {
+ return new LdapFilterToken( LdapFilterToken.EOF, "", pos );
+ }
+ else
+ {
+ prevChar();
+ }
+
+ // check for ignorable whitespaces
+ c = nextChar();
+ if ( Character.isWhitespace( c )
+ && ( lastTokenType == LdapFilterToken.RPAR || lastTokenType == LdapFilterToken.AND
+ || lastTokenType == LdapFilterToken.OR || lastTokenType == LdapFilterToken.NOT ) )
+ {
+ StringBuffer sb = new StringBuffer();
+ while ( Character.isWhitespace( c ) )
+ {
+ sb.append( c );
+ c = nextChar();
+ }
+ prevChar();
+ return new LdapFilterToken( LdapFilterToken.WHITESPACE, sb.toString(), pos - sb.length() + 1 );
+ }
+ else
+ {
+ prevChar();
+ }
+
+ // check special characters
+ c = nextChar();
+ switch ( c )
+ {
+ case '(':
+ this.lastTokenType = LdapFilterToken.LPAR;
+ return new LdapFilterToken( this.lastTokenType, "(", pos );
+ case ')':
+ this.lastTokenType = LdapFilterToken.RPAR;
+ return new LdapFilterToken( this.lastTokenType, ")", pos );
+ case '&':
+ if ( lastTokenType == LdapFilterToken.LPAR )
+ {
+ // if(nextNonWhitespaceChar()=='(') {
+ // prevNonWhitespaceChar();
+ this.lastTokenType = LdapFilterToken.AND;
+ return new LdapFilterToken( this.lastTokenType, "&", pos );
+ // }
+ // else {
+ // prevNonWhitespaceChar();
+ // }
+ }
+ break;
+ case '|':
+ if ( lastTokenType == LdapFilterToken.LPAR )
+ {
+ // if(nextNonWhitespaceChar()=='(') {
+ // prevNonWhitespaceChar();
+ this.lastTokenType = LdapFilterToken.OR;
+ return new LdapFilterToken( this.lastTokenType, "|", pos );
+ // }
+ // else {
+ // prevNonWhitespaceChar();
+ // }
+ }
+ break;
+ case '!':
+ if ( lastTokenType == LdapFilterToken.LPAR )
+ {
+ // if(nextNonWhitespaceChar()=='(') {
+ // prevNonWhitespaceChar();
+ this.lastTokenType = LdapFilterToken.NOT;
+ return new LdapFilterToken( this.lastTokenType, "!", pos );
+ // }
+ // else {
+ // prevNonWhitespaceChar();
+ // }
+ }
+ break;
+ case '=':
+ if ( lastTokenType == LdapFilterToken.ATTRIBUTE )
+ {
+ if ( nextChar() == '*' )
+ {
+ char t = nextChar();
+ if ( t == ')' || t == '\u0000' )
+ {
+ prevChar();
+ this.lastTokenType = LdapFilterToken.PRESENT;
+ return new LdapFilterToken( this.lastTokenType, "=*", pos - 1 );
+ }
+ else
+ {
+ prevChar();
+ prevChar();
+ this.lastTokenType = LdapFilterToken.EQUAL;
+ return new LdapFilterToken( this.lastTokenType, "=", pos );
+ }
+ }
+ else
+ {
+ prevChar();
+ this.lastTokenType = LdapFilterToken.EQUAL;
+ return new LdapFilterToken( this.lastTokenType, "=", pos );
+ }
+ }
+ break;
+ case '>':
+ if ( lastTokenType == LdapFilterToken.ATTRIBUTE )
+ {
+ if ( nextChar() == '=' )
+ {
+ this.lastTokenType = LdapFilterToken.GREATER;
+ return new LdapFilterToken( this.lastTokenType, ">=", pos - 1 );
+ }
+ else
+ {
+ prevChar();
+ }
+ }
+ break;
+ case '<':
+ if ( lastTokenType == LdapFilterToken.ATTRIBUTE )
+ {
+ if ( nextChar() == '=' )
+ {
+ this.lastTokenType = LdapFilterToken.LESS;
+ return new LdapFilterToken( this.lastTokenType, "<=", pos - 1 );
+ }
+ else
+ {
+ prevChar();
+ }
+ }
+ break;
+ case '~':
+ if ( lastTokenType == LdapFilterToken.ATTRIBUTE )
+ {
+ if ( nextChar() == '=' )
+ {
+ this.lastTokenType = LdapFilterToken.APROX;
+ return new LdapFilterToken( this.lastTokenType, "~=", pos - 1 );
+ }
+ else
+ {
+ prevChar();
+ }
+ }
+ break;
+ } // switch
+ prevChar();
+
+ // check attribute
+ if ( this.lastTokenType == LdapFilterToken.LPAR )
+ {
+ StringBuffer sb = new StringBuffer();
+
+ // first char must be non-whitespace
+ c = nextChar();
+ while ( c != '=' && c != '<' && c != '>' && c != '~' && c != '(' && c != ')' && c != '\u0000'
+ && !Character.isWhitespace( c ) )
+ {
+ sb.append( c );
+ c = nextChar();
+ }
+ prevChar();
+
+ if ( sb.length() > 0 )
+ {
+ this.lastTokenType = LdapFilterToken.ATTRIBUTE;
+ return new LdapFilterToken( this.lastTokenType, sb.toString(), pos - sb.length() + 1 );
+ }
+ }
+
+ // check value
+ if ( lastTokenType == LdapFilterToken.EQUAL || lastTokenType == LdapFilterToken.GREATER
+ || lastTokenType == LdapFilterToken.LESS || lastTokenType == LdapFilterToken.APROX )
+ {
+
+ StringBuffer sb = new StringBuffer();
+ c = nextNonLinebreakChar();
+ while ( c != '(' && c != ')' && c != '\u0000' )
+ {
+ sb.append( c );
+ c = nextNonLinebreakChar();
+ }
+ prevNonLinebreakChar();
+
+ if ( sb.length() > 0 )
+ {
+ this.lastTokenType = LdapFilterToken.VALUE;
+ return new LdapFilterToken( this.lastTokenType, sb.toString(), pos - sb.length() + 1 );
+ }
+ }
+
+ // no match
+ StringBuffer sb = new StringBuffer();
+ c = nextChar();
+ while ( c != '(' && c != ')' && c != '\u0000' )
+ {
+ sb.append( c );
+ c = nextChar();
+ }
+ prevChar();
+ // this.lastTokenType = LdapFilterToken.UNKNOWN;
+ // return new LdapFilterToken(this.lastTokenType, sb.toString(),
+ // pos-sb.length());
+ return new LdapFilterToken( LdapFilterToken.UNKNOWN, sb.toString(), pos - sb.length() + 1 );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterToken.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterToken.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterToken.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/filter/parser/LdapFilterToken.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,131 @@
+/*
+ * 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.filter.parser;
+
+
+public class LdapFilterToken implements Comparable
+{
+
+ public static final int NEW = Integer.MIN_VALUE;
+
+ public static final int ERROR = -2;
+
+ public static final int EOF = -1;
+
+ public static final int UNKNOWN = 0;
+
+ public static final int WHITESPACE = 1;
+
+ public static final int LPAR = 11;
+
+ public static final int RPAR = 12;
+
+ public static final int AND = 21;
+
+ public static final int OR = 22;
+
+ public static final int NOT = 23;
+
+ public static final int ATTRIBUTE = 31;
+
+ public static final int EQUAL = 41;
+
+ public static final int APROX = 42;
+
+ public static final int GREATER = 43;
+
+ public static final int LESS = 44;
+
+ public static final int PRESENT = 45;
+
+ public static final int VALUE = 51;
+
+ public static final int ASTERISK = 52;
+
+ private int offset;
+
+ private int type;
+
+ private String value;
+
+
+ public LdapFilterToken( int type, String value, int offset )
+ {
+ this.type = type;
+ this.value = value;
+ this.offset = offset;
+ }
+
+
+ /**
+ * Returns the start position of the token in the original filter
+ *
+ * @return the start positon of the token
+ */
+ public int getOffset()
+ {
+ return this.offset;
+ }
+
+
+ /**
+ * Returns the length of the token in the original filter
+ *
+ * @return the length of the token
+ */
+ public int getLength()
+ {
+ return this.value.length();
+ }
+
+
+ public int getType()
+ {
+ return this.type;
+ }
+
+
+ public String getValue()
+ {
+ return this.value;
+ }
+
+
+ public String toString()
+ {
+ return "(" + this.offset + ") " + "(" + this.type + ") " + this.value;
+ }
+
+
+ public int compareTo( Object o )
+ {
+ if ( o instanceof LdapFilterToken )
+ {
+ LdapFilterToken token = ( LdapFilterToken ) o;
+ return this.offset - token.offset;
+ }
+ else
+ {
+ throw new ClassCastException( "Not instanceof LapFilterToken: " + o.getClass().getName() );
+ }
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEOFPart.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEOFPart.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEOFPart.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEOFPart.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,93 @@
+/*
+ * 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.ldif;
+
+
+public final class LdifEOFPart implements LdifPart
+{
+
+ private static final long serialVersionUID = -8527682569842893613L;
+
+ private int offset;
+
+
+ protected LdifEOFPart()
+ {
+ }
+
+
+ public LdifEOFPart( int offset )
+ {
+ this.offset = offset;
+ }
+
+
+ public final int getOffset()
+ {
+ return this.offset;
+ }
+
+
+ public final int getLength()
+ {
+ return 0;
+ }
+
+
+ public final String toRawString()
+ {
+ return "";
+ }
+
+
+ public final String toFormattedString()
+ {
+ return "";
+ }
+
+
+ public final String toString()
+ {
+ String text = toRawString();
+ text = text.replaceAll( "\n", "\\\\n" );
+ text = text.replaceAll( "\r", "\\\\r" );
+ return getClass().getName() + " (" + getOffset() + "," + getLength() + "): '" + text + "'";
+ }
+
+
+ public final boolean isValid()
+ {
+ return true;
+ }
+
+
+ public final String getInvalidString()
+ {
+ return "";
+ }
+
+
+ public final void adjustOffset( int adjust )
+ {
+ this.offset += adjust;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEnumeration.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEnumeration.java?view=auto&rev=488355
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEnumeration.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-browser-core/src/org/apache/directory/ldapstudio/browser/core/model/ldif/LdifEnumeration.java Mon Dec 18 09:32:03 2006
@@ -0,0 +1,54 @@
+/*
+ * 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.ldif;
+
+
+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.container.LdifContainer;
+
+
+public interface LdifEnumeration
+{
+
+ /**
+ *
+ * @param monitor
+ * The monitor to check for cancellation. Don't report
+ * errors to the monitor, throw an ConnectionException
+ * instead.
+ * @throws ConnectionException
+ */
+ public boolean hasNext( ExtendedProgressMonitor monitor ) throws ConnectionException;
+
+
+ /**
+ *
+ * @param monitor
+ * The monitor to check for cancellation. Don't report
+ * errors to the monitor, throw an ConnectionException
+ * instead.
+ * @return the next LDIF container or null if hasNext() returns false;
+ * @throws ConnectionException
+ */
+ public LdifContainer next( ExtendedProgressMonitor monitor ) throws ConnectionException;
+
+}