<!--
  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.
  -->

<project name="queryparser" default="default">
  <description>
    Query parsers and parsing framework
  </description>

  <!-- TODO: remove the stupid debugStream in the JavaCC TokenManager classes with an additional regex below! -->
  <property name="forbidden-sysout-excludes" value="
    org/apache/lucene/queryparser/**/*TokenManager.class
  "/>

  <import file="../module-build.xml"/>

  <path id="classpath">
    <pathelement path="${queries.jar}"/>
    <pathelement path="${sandbox.jar}"/>
    <path refid="base.classpath"/>
  </path>

  <target name="compile-core" depends="jar-queries,jar-sandbox,common.compile-core"/>

  <target name="javadocs" depends="javadocs-queries,javadocs-sandbox,compile-core">
    <invoke-module-javadoc>
      <links>
        <link href="../queries"/>
        <link href="../sandbox"/>
      </links>
    </invoke-module-javadoc>
  </target>

  <target name="javacc" depends="javacc-QueryParser,javacc-surround,javacc-flexible"/>
  
  <macrodef name="replaceStringBuffer">
    <attribute name="dir"/>
    <sequential>
      <replace token="StringBuffer" value="StringBuilder" encoding="UTF-8">
         <fileset dir="@{dir}" includes="ParseException.java TokenMgrError.java"/>
      </replace>
    </sequential>
  </macrodef>
  
  <target name="javacc-QueryParser" depends="resolve-javacc">
    <sequential>
      <invoke-javacc target="src/java/org/apache/lucene/queryparser/classic/QueryParser.jj"
                     outputDir="src/java/org/apache/lucene/queryparser/classic"/>

      <!-- Change the incorrect public ctors for QueryParser to be protected instead -->
      <replaceregexp file="src/java/org/apache/lucene/queryparser/classic/QueryParser.java"
		     byline="true"
		     match="public QueryParser\(CharStream "
		     replace="protected QueryParser(CharStream "/>
      <replaceregexp file="src/java/org/apache/lucene/queryparser/classic/QueryParser.java"
		     byline="true"
		     match="public QueryParser\(QueryParserTokenManager "
		     replace="protected QueryParser(QueryParserTokenManager "/>
      <replaceStringBuffer dir="src/java/org/apache/lucene/queryparser/classic"/>
    </sequential>
  </target>

  <target name="javacc-surround" depends="resolve-javacc" description="generate surround query parser">
  	<invoke-javacc target="src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.jj"
                   outputDir="src/java/org/apache/lucene/queryparser/surround/parser"
    />
    <replaceStringBuffer dir="src/java/org/apache/lucene/queryparser/surround/parser"/>
  </target>

  <target name="javacc-flexible" depends="resolve-javacc">
    <invoke-javacc target="src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParser.jj"
                   outputDir="src/java/org/apache/lucene/queryparser/flexible/standard/parser"
    />
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="public class ParseException extends Exception"
                             replace="public class ParseException extends QueryNodeParseException"
                             flags="g"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="package org.apache.lucene.queryparser.flexible.standard.parser;"
                             replace="package org.apache.lucene.queryparser.flexible.standard.parser;${line.separator}
${line.separator}
import org.apache.lucene.queryparser.flexible.messages.Message;${line.separator}
import org.apache.lucene.queryparser.flexible.messages.MessageImpl;${line.separator}
import org.apache.lucene.queryparser.flexible.core.*;${line.separator}
import org.apache.lucene.queryparser.flexible.core.messages.*;"
                             flags="g"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="^  public ParseException\(Token currentTokenVal.*$(\s\s[^}].*\n)*  \}"
                             replace="  public ParseException(Token currentTokenVal,${line.separator}
    int[][] expectedTokenSequencesVal, String[] tokenImageVal) {${line.separator}
    super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX, initialise(${line.separator}
    currentTokenVal, expectedTokenSequencesVal, tokenImageVal)));${line.separator}
    this.currentToken = currentTokenVal;${line.separator}
    this.expectedTokenSequences = expectedTokenSequencesVal;${line.separator}
    this.tokenImage = tokenImageVal;${line.separator}
  }"
                             flags="gm"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="^  public ParseException\(String message.*$(\s\s[^}].*\n)*  \}"
                             replace="  public ParseException(Message message) {${line.separator}
    super(message);${line.separator}
  }"
                             flags="gm"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="^  public ParseException\(\).*$(\s\s[^}].*\n)*  \}"
                             replace="  public ParseException() {${line.separator}
    super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX, &quot;Error&quot;));${line.separator}
  }"
                             flags="gm"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="^  public String getMessage\(\).*$(\s\s\s\s[^}].*\n)*    \}"
                             replace="  private static String initialise(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage) {${line.separator}
    String eol = System.getProperty(&quot;line.separator&quot;, &quot;\n&quot;);"
                             flags="gm"
                             byline="false"/>
        <replaceregexp file="src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java"
                             match="\s*protected String add_escapes.*"
                             replace="  static private String add_escapes(String str) {"
                             flags="g"
                             byline="true"/>
        <replaceStringBuffer dir="src/java/org/apache/lucene/queryparser/flexible/standard/parser"/>
  </target>

  <target name="resolve-javacc" xmlns:ivy="antlib:org.apache.ivy.ant">
    <!-- setup a "fake" JavaCC distribution folder in ${build.dir} to make JavaCC ANT task happy: -->
    <ivy:retrieve organisation="net.java.dev.javacc" module="javacc" revision="5.0"
      inline="true" conf="default" transitive="false" type="jar" sync="true"
      pattern="${build.dir}/javacc/bin/lib/[artifact].[ext]"/>
  </target>

  <macrodef name="invoke-javacc">
    <attribute name="target"/>
    <attribute name="outputDir"/>
    <sequential>
      <mkdir dir="@{outputDir}"/>
      <delete>
        <fileset dir="@{outputDir}" includes="*.java">
          <containsregexp expression="Generated.*By.*JavaCC"/>
        </fileset>
      </delete>
      <javacc
          target="@{target}"
          outputDirectory="@{outputDir}"
          javacchome="${build.dir}/javacc"
          jdkversion="${javac.source}"
      />
      <fixcrlf srcdir="@{outputDir}" includes="*.java" encoding="UTF-8">
        <containsregexp expression="Generated.*By.*JavaCC"/>
      </fixcrlf>
    </sequential>
  </macrodef>

  <target name="regenerate" depends="javacc"/>

</project>
