mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

lutoff
01.42.2008 bc4bb0c106eef07ec6e000f25316a0d55713ca81
Fix for issue #3042 (ldifsearch: with a filter file containing multiple filters, only the first filter is used)

We now handle all the provided filter in the filer file
1 files modified
48 ■■■■ changed files
opends/src/server/org/opends/server/tools/LDIFSearch.java 48 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDIFSearch.java
@@ -29,6 +29,9 @@
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
@@ -55,12 +58,12 @@
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
import org.opends.server.util.args.FileBasedArgument;
import org.opends.server.util.args.IntegerArgument;
import org.opends.server.util.args.MultiChoiceArgument;
import org.opends.server.util.args.StringArgument;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.util.ServerConstants.MAX_LINE_WIDTH;
import static org.opends.server.util.StaticUtils.*;
import static org.opends.server.tools.ToolConstants.*;
@@ -177,7 +180,7 @@
    BooleanArgument     dontWrap;
    BooleanArgument     overwriteExisting;
    BooleanArgument     showUsage;
    FileBasedArgument   filterFile;
    StringArgument      filterFile;
    IntegerArgument     sizeLimit;
    IntegerArgument     timeLimit;
    MultiChoiceArgument scopeString;
@@ -230,10 +233,9 @@
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      filterFile = new FileBasedArgument("filterfile", 'f', "filterFile", false,
                            false, INFO_FILTER_FILE_PLACEHOLDER.get(), null,
                            null,
                            INFO_LDIFSEARCH_DESCRIPTION_FILTER_FILE.get());
      filterFile = new StringArgument("filterfile", 'f', "filterFile", false,
          false, true, INFO_FILTER_FILE_PLACEHOLDER.get(), null, null,
          INFO_LDIFSEARCH_DESCRIPTION_FILTER_FILE.get());
      argParser.addArgument(filterFile);
      outputFile = new StringArgument(
@@ -316,10 +318,40 @@
    boolean            includeObjectclassAttrs = true;
    LinkedList<String> attributeNames;
    LinkedList<String> objectClassNames    = new LinkedList<String>();
    LinkedList<String> filterStrings;
    LinkedList<String> filterStrings = new LinkedList<String>();
    if (filterFile.isPresent())
    {
      filterStrings = filterFile.getValues();
      BufferedReader in = null;
      try
      {
        String fileNameValue = filterFile.getValue();
        in = new BufferedReader(new FileReader(fileNameValue));
        String line = null;
        while ((line = in.readLine()) != null)
        {
          if(line.trim().equals(""))
          {
            // ignore empty lines.
            continue;
          }
          filterStrings.add(line);
        }
      } catch(Exception e)
      {
        err.println(wrapText(e.getMessage(), MAX_LINE_WIDTH));
        return 1;
      }
      finally
      {
        if(in != null)
        {
          try
          {
           in.close();
          } catch (IOException ioe) {}
        }
      }
      ArrayList<String> trailingArguments = argParser.getTrailingArguments();
      if ((trailingArguments == null) || trailingArguments.isEmpty())