Modified: directory/trunks/clients/ldap/src/main/java/org/apache/ldap/clients/SearchOpts.java URL: http://svn.apache.org/viewcvs/directory/trunks/clients/ldap/src/main/java/org/apache/ldap/clients/SearchOpts.java?rev=400060&r1=400059&r2=400060&view=diff ============================================================================== --- directory/trunks/clients/ldap/src/main/java/org/apache/ldap/clients/SearchOpts.java (original) +++ directory/trunks/clients/ldap/src/main/java/org/apache/ldap/clients/SearchOpts.java Fri May 5 05:37:28 2006 @@ -1,497 +1,497 @@ -/* - * Apache License - * Version 2.0, January 2004 - * http://www.apache.org/licenses/ - * - * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - * - * 1. Definitions. - * - * "License" shall mean the terms and conditions for use, reproduction, - * and distribution as defined by Sections 1 through 9 of this document. - * - * "Licensor" shall mean the copyright owner or entity authorized by - * the copyright owner that is granting the License. - * - * "Legal Entity" shall mean the union of the acting entity and all - * other entities that control, are controlled by, or are under common - * control with that entity. For the purposes of this definition, - * "control" means (i) the power, direct or indirect, to cause the - * direction or management of such entity, whether by contract or - * otherwise, or (ii) ownership of fifty percent (50%) or more of the - * outstanding shares, or (iii) beneficial ownership of such entity. - * - * "You" (or "Your") shall mean an individual or Legal Entity - * exercising permissions granted by this License. - * - * "Source" form shall mean the preferred form for making modifications, - * including but not limited to software source code, documentation - * source, and configuration files. - * - * "Object" form shall mean any form resulting from mechanical - * transformation or translation of a Source form, including but - * not limited to compiled object code, generated documentation, - * and conversions to other media types. - * - * "Work" shall mean the work of authorship, whether in Source or - * Object form, made available under the License, as indicated by a - * copyright notice that is included in or attached to the work - * (an example is provided in the Appendix below). - * - * "Derivative Works" shall mean any work, whether in Source or Object - * form, that is based on (or derived from) the Work and for which the - * editorial revisions, annotations, elaborations, or other modifications - * represent, as a whole, an original work of authorship. For the purposes - * of this License, Derivative Works shall not include works that remain - * separable from, or merely link (or bind by name) to the interfaces of, - * the Work and Derivative Works thereof. - * - * "Contribution" shall mean any work of authorship, including - * the original version of the Work and any modifications or additions - * to that Work or Derivative Works thereof, that is intentionally - * submitted to Licensor for inclusion in the Work by the copyright owner - * or by an individual or Legal Entity authorized to submit on behalf of - * the copyright owner. For the purposes of this definition, "submitted" - * means any form of electronic, verbal, or written communication sent - * to the Licensor or its representatives, including but not limited to - * communication on electronic mailing lists, source code control systems, - * and issue tracking systems that are managed by, or on behalf of, the - * Licensor for the purpose of discussing and improving the Work, but - * excluding communication that is conspicuously marked or otherwise - * designated in writing by the copyright owner as "Not a Contribution." - * - * "Contributor" shall mean Licensor and any individual or Legal Entity - * on behalf of whom a Contribution has been received by Licensor and - * subsequently incorporated within the Work. - * - * 2. Grant of Copyright License. Subject to the terms and conditions of - * this License, each Contributor hereby grants to You a perpetual, - * worldwide, non-exclusive, no-charge, royalty-free, irrevocable - * copyright license to reproduce, prepare Derivative Works of, - * publicly display, publicly perform, sublicense, and distribute the - * Work and such Derivative Works in Source or Object form. - * - * 3. Grant of Patent License. Subject to the terms and conditions of - * this License, each Contributor hereby grants to You a perpetual, - * worldwide, non-exclusive, no-charge, royalty-free, irrevocable - * (except as stated in this section) patent license to make, have made, - * use, offer to sell, sell, import, and otherwise transfer the Work, - * where such license applies only to those patent claims licensable - * by such Contributor that are necessarily infringed by their - * Contribution(s) alone or by combination of their Contribution(s) - * with the Work to which such Contribution(s) was submitted. If You - * institute patent litigation against any entity (including a - * cross-claim or counterclaim in a lawsuit) alleging that the Work - * or a Contribution incorporated within the Work constitutes direct - * or contributory patent infringement, then any patent licenses - * granted to You under this License for that Work shall terminate - * as of the date such litigation is filed. - * - * 4. Redistribution. You may reproduce and distribute copies of the - * Work or Derivative Works thereof in any medium, with or without - * modifications, and in Source or Object form, provided that You - * meet the following conditions: - * - * (a) You must give any other recipients of the Work or - * Derivative Works a copy of this License; and - * - * (b) You must cause any modified files to carry prominent notices - * stating that You changed the files; and - * - * (c) You must retain, in the Source form of any Derivative Works - * that You distribute, all copyright, patent, trademark, and - * attribution notices from the Source form of the Work, - * excluding those notices that do not pertain to any part of - * the Derivative Works; and - * - * (d) If the Work includes a "NOTICE" text file as part of its - * distribution, then any Derivative Works that You distribute must - * include a readable copy of the attribution notices contained - * within such NOTICE file, excluding those notices that do not - * pertain to any part of the Derivative Works, in at least one - * of the following places: within a NOTICE text file distributed - * as part of the Derivative Works; within the Source form or - * documentation, if provided along with the Derivative Works; or, - * within a display generated by the Derivative Works, if and - * wherever such third-party notices normally appear. The contents - * of the NOTICE file are for informational purposes only and - * do not modify the License. You may add Your own attribution - * notices within Derivative Works that You distribute, alongside - * or as an addendum to the NOTICE text from the Work, provided - * that such additional attribution notices cannot be construed - * as modifying the License. - * - * You may add Your own copyright statement to Your modifications and - * may provide additional or different license terms and conditions - * for use, reproduction, or distribution of Your modifications, or - * for any such Derivative Works as a whole, provided Your use, - * reproduction, and distribution of the Work otherwise complies with - * the conditions stated in this License. - * - * 5. Submission of Contributions. Unless You explicitly state otherwise, - * any Contribution intentionally submitted for inclusion in the Work - * by You to the Licensor shall be under the terms and conditions of - * this License, without any additional terms or conditions. - * Notwithstanding the above, nothing herein shall supersede or modify - * the terms of any separate license agreement you may have executed - * with Licensor regarding such Contributions. - * - * 6. Trademarks. This License does not grant permission to use the trade - * names, trademarks, service marks, or product names of the Licensor, - * except as required for reasonable and customary use in describing the - * origin of the Work and reproducing the content of the NOTICE file. - * - * 7. Disclaimer of Warranty. Unless required by applicable law or - * agreed to in writing, Licensor provides the Work (and each - * Contributor provides its Contributions) on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied, including, without limitation, any warranties or conditions - * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - * PARTICULAR PURPOSE. You are solely responsible for determining the - * appropriateness of using or redistributing the Work and assume any - * risks associated with Your exercise of permissions under this License. - * - * 8. Limitation of Liability. In no event and under no legal theory, - * whether in tort (including negligence), contract, or otherwise, - * unless required by applicable law (such as deliberate and grossly - * negligent acts) or agreed to in writing, shall any Contributor be - * liable to You for damages, including any direct, indirect, special, - * incidental, or consequential damages of any character arising as a - * result of this License or out of the use or inability to use the - * Work (including but not limited to damages for loss of goodwill, - * work stoppage, computer failure or malfunction, or any and all - * other commercial damages or losses), even if such Contributor - * has been advised of the possibility of such damages. - * - * 9. Accepting Warranty or Additional Liability. While redistributing - * the Work or Derivative Works thereof, You may choose to offer, - * and charge a fee for, acceptance of support, warranty, indemnity, - * or other liability obligations and/or rights consistent with this - * License. However, in accepting such obligations, You may act only - * on Your own behalf and on Your sole responsibility, not on behalf - * of any other Contributor, and only if You agree to indemnify, - * defend, and hold each Contributor harmless for any liability - * incurred by, or claims asserted against, such Contributor by reason - * of your accepting any such warranty or additional liability. - * - * END OF TERMS AND CONDITIONS - * - * APPENDIX: How to apply the Apache License to your work. - * - * To apply the Apache License to your work, attach the following - * boilerplate notice, with the fields enclosed by brackets "[]" - * replaced with your own identifying information. (Don't include - * the brackets!) The text should be enclosed in the appropriate - * comment syntax for the file format. We also recommend that a - * file or class name and description of purpose be included on the - * same "printed page" as the copyright notice for easier - * identification within third-party archives. - * - * Copyright [yyyy] [name of copyright owner] - * - * Licensed 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.ldap.clients ; - -import org.apache.ldap.common.message.ScopeEnum; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.ParseException; - -/** - * Delete operation command line options bean. - * - * @author Jeff Machols - * @author $Author: jmachols $ - * @version $Revision$ - */ - -public class SearchOpts - extends BindOpts -{ - /** - * DN of the entry to be deleted - */ - private String filter ; - - /** - * Base DN to start the search from - */ - private String base ; - - /** - * Search Scope: - * base - only the base DN - * one - only the current subtree level - * sub - the entire tree - */ - private ScopeEnum scope = ScopeEnum.SINGLELEVEL ; - - private boolean quietMode = false ; - - private boolean typesMode = false ; - - private int maxEntries = 0 ; - - private int maxTime = 0 ; - - // ------------------------------------------------------------------------ - // Option Accessors - // ------------------------------------------------------------------------ - - /** - * Get the base DN to start the search from - * - * @return DN to start the search from - */ - public String getBase() - { - return base; - } - - /** - * Get the search filter in a string format - * - * @return Search filter - */ - public String getFilter() - { - return filter; - } - - /** - * - * @return - */ - public int getMaxTime() - { - return maxTime ; - } - - /** - * @return - */ - public boolean isQuietMode() - { - return quietMode; - } - - /** - * @return - */ - public boolean isTypesMode() - { - return typesMode; - } - - - /** - * Get the Scope for the search - * - * @return Search Scope: - * BASEOBJECT - only the base DN - * SINGLELEVEL - only the current subtree level - * WHOLESUBTREE - the entire tree - */ - public ScopeEnum getScope() - { - return scope; - } - - /** - * - * @return - */ - public int getMaxEntries() - { - return maxEntries ; - } - - //------------------------------------------------------------------------- - // Option Setters - //------------------------------------------------------------------------- - - /** - * Set the base DN to start the search from - * - * @param base DN to start the search from - */ - public void setBase( String base ) - { - this.base = base; - } - - /** - * Set the search filter - * - * @param filter Search Filter - */ - public void setFilter( String filter ) - { - this.filter = filter; - } - - /** - * @param a_b - */ - public void setQuietMode(boolean quietMode) - { - this.quietMode = quietMode; - } - - /** - * @param - */ - public void setTypesMode(boolean typesMode) - { - this.typesMode = typesMode; - } - - /** - * Set the Scope for the search - * - * @param scope Search Scope: - * BASEOBJECT - only the base DN - * SINGLELEVEL - only the current subtree level - * WHOLESUBTREE - the entire tree - */ - public void setScope( ScopeEnum scope ) - { - this.scope = scope; - } - - /** - * Set the maximum of entries to retrieve - * @param maxEntries - */ - public void setMaxEntries( int maxEntries ) - { - this.maxEntries = maxEntries ; - } - - /** - * Set the maximum of entries to retrieve - * @param maxTime - */ - public void setMaxTime( int maxTime ) - { - this.maxTime = maxTime ; - } - - // ------------------------------------------------------------------------ - // Opt Abstract Method Implementations - // ------------------------------------------------------------------------ - - /** - * Overrides BindOpts.process to be able to get the deleted entry's Dn. - * - * @param argv the variable argument list from the command line. - * @throws ParseException if any of the command line option is incorrect - */ - public void process( String [] argv ) throws ParseException - { - // -------------------------------------------------------------------- - // Process Command Line Arguements - // -------------------------------------------------------------------- - // Setting the bind options - options.addOption(hostOption); - options.addOption(portOption); - options.addOption(bindDnOption); - options.addOption(nothingOption); - options.addOption(protocolOption); - options.addOption(passwordOption); - options.addOption(verboseOption); - options.addOption(fileOption); - options.addOption(maxEntriesOption); - options.addOption(maxTimeOption); - - // Get a list of parsed options - CommandLine cl = getParser(argv, options); - - // Commons options - host = cl.getOptionValue(HOST_OPT, DEFAULT_HOST); - port = Integer.parseInt(cl.getOptionValue(PORT_OPT, DEFAULT_PORT)); - bindDn = cl.getOptionValue(BINDDN_OPT, ""); - isDryRun = cl.hasOption(NOTHING_OPT); - isVersion3 = Integer.parseInt(cl.getOptionValue(PROTOCOL_OPT, "3")) == 3; - password = cl.getOptionValue(PASSWORD_OPT, ""); - isVerbose = cl.hasOption(VERBOSE_OPT); - - // Base may be null - base = cl.getOptionValue(BASEDN_OPT, ""); - - // Filter must not be null - filter = cl.getOptionValue(FILE_OPT, null); - - if (filter == null) - { - throw new ParseException("No filter given"); - } - - // Either Quiet or Types may be set, or none. - typesMode = cl.hasOption(TYPES_OPT); - quietMode = cl.hasOption(QUIET_OPT); - - if (typesMode & quietMode) - { - throw new ParseException("Cannot have quiet mode (-q) and" - + "Types Only mode (-A) both turned on"); - } - - // Scope must not be null - // @TODO : default to "base" with a warning - String scopeString = cl.getOptionValue(SCOPE_OPT, ""); - - if ( scopeString.equalsIgnoreCase( "base" ) ) - { - scope = ScopeEnum.BASEOBJECT; - } - else if ( scopeString.equalsIgnoreCase( "one" ) ) - { - scope = ScopeEnum.SINGLELEVEL; - } - else if ( scopeString.equalsIgnoreCase( "sub" ) ) - { - scope = ScopeEnum.WHOLESUBTREE; - } - else - { - throw new ParseException( "Value for scope must be one of " - + "the following: base, one, sub" ); - } - - // MaxEntries is optionnal, and default to 1000 - try - { - maxEntries = Math.abs(Integer.parseInt(cl.getOptionValue(MAX_ENTRIES_OPT, DEFAULT_MAX_ENTRIES))); - } - catch (NumberFormatException nfe) - { - throw new ParseException("MaxEntries parameter does not contains a valid value"); - } - - // MaxTime is optionnal, and default to 1000 - try - { - maxTime = Math.abs(Integer.parseInt(cl.getOptionValue(MAX_TIME_OPT, DEFAULT_MAX_TIME))); - } - catch (NumberFormatException nfe) - { - throw new ParseException("MaxTime parameter does not contains a valid value"); - } - - super.setProcessed() ; - } -} +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed 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.ldap.clients ; + +import org.apache.ldap.common.message.ScopeEnum; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.ParseException; + +/** + * Delete operation command line options bean. + * + * @author Jeff Machols + * @author $Author: jmachols $ + * @version $Revision$ + */ + +public class SearchOpts + extends BindOpts +{ + /** + * DN of the entry to be deleted + */ + private String filter ; + + /** + * Base DN to start the search from + */ + private String base ; + + /** + * Search Scope: + * base - only the base DN + * one - only the current subtree level + * sub - the entire tree + */ + private ScopeEnum scope = ScopeEnum.SINGLELEVEL ; + + private boolean quietMode = false ; + + private boolean typesMode = false ; + + private int maxEntries = 0 ; + + private int maxTime = 0 ; + + // ------------------------------------------------------------------------ + // Option Accessors + // ------------------------------------------------------------------------ + + /** + * Get the base DN to start the search from + * + * @return DN to start the search from + */ + public String getBase() + { + return base; + } + + /** + * Get the search filter in a string format + * + * @return Search filter + */ + public String getFilter() + { + return filter; + } + + /** + * + * @return + */ + public int getMaxTime() + { + return maxTime ; + } + + /** + * @return + */ + public boolean isQuietMode() + { + return quietMode; + } + + /** + * @return + */ + public boolean isTypesMode() + { + return typesMode; + } + + + /** + * Get the Scope for the search + * + * @return Search Scope: + * BASEOBJECT - only the base DN + * SINGLELEVEL - only the current subtree level + * WHOLESUBTREE - the entire tree + */ + public ScopeEnum getScope() + { + return scope; + } + + /** + * + * @return + */ + public int getMaxEntries() + { + return maxEntries ; + } + + //------------------------------------------------------------------------- + // Option Setters + //------------------------------------------------------------------------- + + /** + * Set the base DN to start the search from + * + * @param base DN to start the search from + */ + public void setBase( String base ) + { + this.base = base; + } + + /** + * Set the search filter + * + * @param filter Search Filter + */ + public void setFilter( String filter ) + { + this.filter = filter; + } + + /** + * @param a_b + */ + public void setQuietMode(boolean quietMode) + { + this.quietMode = quietMode; + } + + /** + * @param + */ + public void setTypesMode(boolean typesMode) + { + this.typesMode = typesMode; + } + + /** + * Set the Scope for the search + * + * @param scope Search Scope: + * BASEOBJECT - only the base DN + * SINGLELEVEL - only the current subtree level + * WHOLESUBTREE - the entire tree + */ + public void setScope( ScopeEnum scope ) + { + this.scope = scope; + } + + /** + * Set the maximum of entries to retrieve + * @param maxEntries + */ + public void setMaxEntries( int maxEntries ) + { + this.maxEntries = maxEntries ; + } + + /** + * Set the maximum of entries to retrieve + * @param maxTime + */ + public void setMaxTime( int maxTime ) + { + this.maxTime = maxTime ; + } + + // ------------------------------------------------------------------------ + // Opt Abstract Method Implementations + // ------------------------------------------------------------------------ + + /** + * Overrides BindOpts.process to be able to get the deleted entry's Dn. + * + * @param argv the variable argument list from the command line. + * @throws ParseException if any of the command line option is incorrect + */ + public void process( String [] argv ) throws ParseException + { + // -------------------------------------------------------------------- + // Process Command Line Arguements + // -------------------------------------------------------------------- + // Setting the bind options + options.addOption(hostOption); + options.addOption(portOption); + options.addOption(bindDnOption); + options.addOption(nothingOption); + options.addOption(protocolOption); + options.addOption(passwordOption); + options.addOption(verboseOption); + options.addOption(fileOption); + options.addOption(maxEntriesOption); + options.addOption(maxTimeOption); + + // Get a list of parsed options + CommandLine cl = getParser(argv, options); + + // Commons options + host = cl.getOptionValue(HOST_OPT, DEFAULT_HOST); + port = Integer.parseInt(cl.getOptionValue(PORT_OPT, DEFAULT_PORT)); + bindDn = cl.getOptionValue(BINDDN_OPT, ""); + isDryRun = cl.hasOption(NOTHING_OPT); + isVersion3 = Integer.parseInt(cl.getOptionValue(PROTOCOL_OPT, "3")) == 3; + password = cl.getOptionValue(PASSWORD_OPT, ""); + isVerbose = cl.hasOption(VERBOSE_OPT); + + // Base may be null + base = cl.getOptionValue(BASEDN_OPT, ""); + + // Filter must not be null + filter = cl.getOptionValue(FILE_OPT, null); + + if (filter == null) + { + throw new ParseException("No filter given"); + } + + // Either Quiet or Types may be set, or none. + typesMode = cl.hasOption(TYPES_OPT); + quietMode = cl.hasOption(QUIET_OPT); + + if (typesMode & quietMode) + { + throw new ParseException("Cannot have quiet mode (-q) and" + + "Types Only mode (-A) both turned on"); + } + + // Scope must not be null + // @TODO : default to "base" with a warning + String scopeString = cl.getOptionValue(SCOPE_OPT, ""); + + if ( scopeString.equalsIgnoreCase( "base" ) ) + { + scope = ScopeEnum.BASEOBJECT; + } + else if ( scopeString.equalsIgnoreCase( "one" ) ) + { + scope = ScopeEnum.SINGLELEVEL; + } + else if ( scopeString.equalsIgnoreCase( "sub" ) ) + { + scope = ScopeEnum.WHOLESUBTREE; + } + else + { + throw new ParseException( "Value for scope must be one of " + + "the following: base, one, sub" ); + } + + // MaxEntries is optionnal, and default to 1000 + try + { + maxEntries = Math.abs(Integer.parseInt(cl.getOptionValue(MAX_ENTRIES_OPT, DEFAULT_MAX_ENTRIES))); + } + catch (NumberFormatException nfe) + { + throw new ParseException("MaxEntries parameter does not contains a valid value"); + } + + // MaxTime is optionnal, and default to 1000 + try + { + maxTime = Math.abs(Integer.parseInt(cl.getOptionValue(MAX_TIME_OPT, DEFAULT_MAX_TIME))); + } + catch (NumberFormatException nfe) + { + throw new ParseException("MaxTime parameter does not contains a valid value"); + } + + super.setProcessed() ; + } +}