<?xml version="1.0"?>
<!--
    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="bdb-je" default="default">

  <description>
    Lucene Berkeley DB Java Edition integration
  </description>

  <property name="je.version" value="3.3.69" />

  <path id="je.jar">
    <pathelement location="lib/je-${je.version}/lib/je-${je.version}.jar" />
  </path>

  <available classname="com.sleepycat.je.Database" property="je.jar.exists">
    <classpath refid="je.jar" />
  </available>

  <pathconvert property="project.classpath" targetos="unix" refid="je.jar" />

  <property name="build.dir" location="../../../build/contrib/db/bdb-je" />
  <property name="dist.dir" location="../../../dist/contrib/db/bdb-je" />
  <property name="maven.dist.dir" location="../../../dist/maven" />
	
  <import file="../../contrib-build.xml" />

  <path id="test.classpath">
    <path refid="classpath"/>
    <pathelement location="../../../build/classes/test/"/>
    <path refid="junit-path"/>
    <pathelement location="${build.dir}/classes/java"/>
  </path>

  <target name="get-je-jar" unless="je.jar.exists">
    <mkdir dir="lib" />
    <get src="http://download.oracle.com/berkeley-db/je-${je.version}.zip"
         dest="lib/je-${je.version}.zip" />
    <unzip src="lib/je-${je.version}.zip" dest="lib">
      <patternset>
        <include name="je-${je.version}/lib/je-${je.version}.jar" />
      </patternset>
    </unzip>
  </target>

  <target name="check-and-get-je-jar" depends="get-je-jar" />
  <target name="init" depends="contrib-build.init,check-and-get-je-jar" />
</project>
