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

#
# SIS project file for NetBeans.
# This can used as an alternative to Maven projects for development and testing purpose only.
#
application.title    = Spatial Information System (SIS)
application.vendor   = Apache
application.homepage = http://sis.apache.org/
application.desc     = Apache SIS is a free software, Java language library for developing geospatial applications.
work.dir             = ../workspace
work.dir.to.root     = ../..

#
# Some global configuration.
#
includes             = **
excludes             =
main.class           =
manifest.file        = manifest.mf
project.license      = apache20
project.licensePath  = ../LicenseHeader.txt
no.dependencies      = true
source.encoding      = UTF-8
javac.source         = 1.8
javac.target         = 1.8
platform.active      = default_platform
junit.forkmode       = once
run.jvmargs          = -enableassertions \
                       -Dorg.apache.sis.test.verbose=true -Dorg.apache.sis.test.extensive=true \
                       -Djava.util.logging.config.file=${work.dir.to.root}/src/main/config/logging.properties
#                      -Djava.security.manager -Djava.security.policy=${work.dir.to.root}/src/main/config/security.policy \
#                      -Dderby.drda.startNetworkServer=true -Dderby.drda.portNumber=1527

#
# Source directories. The "project.root" path is relative to "ide-project/NetBeans" directory.
# Note that "work.dir.to.root" points to the same directory, but from another starting point.
#
project.root         = ../..
src.local-src.dir    = ../local-src
src.webapp.dir       = ${project.root}/application/sis-webapp/src/main/java
test.webapp.dir      = ${project.root}/application/sis-webapp/src/test/java
src.console.dir      = ${project.root}/application/sis-console/src/main/java
test.console.dir     = ${project.root}/application/sis-console/src/test/java
src.earth-obs.dir    = ${project.root}/storage/sis-earth-observation/src/main/java
test.earth-obs.dir   = ${project.root}/storage/sis-earth-observation/src/test/java
src.geotiff.dir      = ${project.root}/storage/sis-geotiff/src/main/java
test.geotiff.dir     = ${project.root}/storage/sis-geotiff/src/test/java
src.netcdf.dir       = ${project.root}/storage/sis-netcdf/src/main/java
test.netcdf.dir      = ${project.root}/storage/sis-netcdf/src/test/java
src.shapefile.dir    = ${project.root}/storage/sis-shapefile/src/main/java
test.shapefile.dir   = ${project.root}/storage/sis-shapefile/src/test/java
src.sql.dir          = ${project.root}/storage/sis-sqlstore/src/main/java
test.sql.dir         = ${project.root}/storage/sis-sqlstore/src/test/java
src.xmlstore.dir     = ${project.root}/storage/sis-xmlstore/src/main/java
test.xmlstore.dir    = ${project.root}/storage/sis-xmlstore/src/test/java
src.gdal.dir         = ${project.root}/storage/sis-gdal/src/main/java
src.c.gdal.dir       = ${project.root}/storage/sis-gdal/src/main/c
test.gdal.dir        = ${project.root}/storage/sis-gdal/src/test/java
src.storage.dir      = ${project.root}/storage/sis-storage/src/main/java
test.storage.dir     = ${project.root}/storage/sis-storage/src/test/java
src.feature.dir      = ${project.root}/core/sis-feature/src/main/java
test.feature.dir     = ${project.root}/core/sis-feature/src/test/java
src.portrayal.dir    = ${project.root}/core/sis-portrayal/src/main/java
test.portrayal.dir   = ${project.root}/core/sis-portrayal/src/test/java
src.referencing.dir  = ${project.root}/core/sis-referencing/src/main/java
test.referencing.dir = ${project.root}/core/sis-referencing/src/test/java
src.ref-by-id.dir    = ${project.root}/core/sis-referencing-by-identifiers/src/main/java
test.ref-by-id.dir   = ${project.root}/core/sis-referencing-by-identifiers/src/test/java
src.metadata.dir     = ${project.root}/core/sis-metadata/src/main/java
test.metadata.dir    = ${project.root}/core/sis-metadata/src/test/java
src.utility.dir      = ${project.root}/core/sis-utility/src/main/java
test.utility.dir     = ${project.root}/core/sis-utility/src/test/java
src.fra-profile.dir  = ${project.root}/profiles/sis-french-profile/src/main/java
test.fra-profile.dir = ${project.root}/profiles/sis-french-profile/src/test/java
src.jpn-profile.dir  = ${project.root}/profiles/sis-japan-profile/src/main/java
test.jpn-profile.dir = ${project.root}/profiles/sis-japan-profile/src/test/java

#
# Version numbers for all dependencies.
# Those dependencies must exist in the local Maven repository.
# Those numbers should match the ones declared in the pom.xml files.
#
geoapi.version       = 3.0.1
jsr363.version       = 1.0
jaxb.version         = 2.3.2
istack.version       = 3.0.8
activation.version   = 1.1
jama.version         = 1.0.3
geographlib.version  = 1.49
guava.version        = 27.0.1-jre
esri.api.version     = 2.2.2
jts.version          = 1.16.1
georss.version       = 0.9.8
rome.version         = 0.9
jdom1.version        = 1.0
jdom2.version        = 2.0.4
jee.version          = 8.0.1
osgi.version         = 6.0.0
netcdf.version       = 4.6.14
joda-time.version    = 2.8.1
httpclient.version   = 4.5.1
httpcore.version     = 4.4.4
cm-logging.version   = 1.2
slf4j.version        = 1.7.22
junit.version        = 4.12
hamcrest.version     = 1.3
derby.version        = 10.14.2.0
hsqldb.version       = 2.5.0
postgresql.version   = 42.2.6
icons.version        = 3.0.1

#
# Classpaths for compilation, execution and tests.
# The dependencies are read directy from the local Maven directory.
#
maven.repository   = ${user.home}/.m2/repository
endorsed.classpath =
javac.classpath=\
    ${maven.repository}/org/opengis/geoapi/${geoapi.version}/geoapi-${geoapi.version}.jar:\
    ${maven.repository}/javax/measure/unit-api/${jsr363.version}/unit-api-${jsr363.version}.jar:\
    ${maven.repository}/jakarta/xml/bind/jakarta.xml.bind-api/${jaxb.version}/jakarta.xml.bind-api-${jaxb.version}.jar:\
    ${maven.repository}/com/esri/geometry/esri-geometry-api/${esri.api.version}/esri-geometry-api-${esri.api.version}.jar:\
    ${maven.repository}/org/locationtech/jts/jts-core/${jts.version}/jts-core-${jts.version}.jar:\
    ${maven.repository}/org/geonames/georss-rome/${georss.version}/georss-rome-${georss.version}.jar:\
    ${maven.repository}/rome/rome/${rome.version}/rome-${rome.version}.jar:\
    ${maven.repository}/jdom/jdom/${jdom1.version}/jdom-${jdom1.version}.jar:\
    ${maven.repository}/javax/javaee-api/${jee.version}/javaee-api-${jee.version}.jar:\
    ${maven.repository}/edu/ucar/cdm/${netcdf.version}/cdm-${netcdf.version}.jar:\
    ${maven.repository}/org/osgi/org.osgi.core/${osgi.version}/org.osgi.core-${osgi.version}.jar
javac.processorpath=\
    ${javac.classpath}
javac.test.classpath=\
    ${javac.classpath}:\
    ${maven.repository}/org/opengis/geoapi-conformance/${geoapi.version}/geoapi-conformance-${geoapi.version}.jar:\
    ${maven.repository}/org/apache/derby/derby/${derby.version}/derby-${derby.version}.jar:\
    ${maven.repository}/org/postgresql/postgresql/${postgresql.version}/postgresql-${postgresql.version}.jar:\
    ${maven.repository}/org/hsqldb/hsqldb/${hsqldb.version}/hsqldb-${hsqldb.version}.jar:\
    ${maven.repository}/gov/nist/math/jama/${jama.version}/jama-${jama.version}.jar:\
    ${maven.repository}/net/sf/geographiclib/GeographicLib-Java/${geographlib.version}/GeographicLib-Java-${geographlib.version}.jar:\
    ${maven.repository}/junit/junit/${junit.version}/junit-${junit.version}.jar:\
    ${maven.repository}/org/hamcrest/hamcrest-core/${hamcrest.version}/hamcrest-core-${hamcrest.version}.jar:\
    ${build.classes.dir}
javac.test.processorpath=\
    ${javac.test.classpath}
run.jaxb.classpath=\
    ${maven.repository}/javax/activation/activation/${activation.version}/activation-${activation.version}.jar:\
    ${maven.repository}/org/glassfish/jaxb/jaxb-runtime/${jaxb.version}/jaxb-runtime-${jaxb.version}.jar:\
    ${maven.repository}/org/glassfish/jaxb/txw2/${jaxb.version}/txw2-${jaxb.version}.jar:\
    ${maven.repository}/com/sun/istack/istack-commons-runtime/${istack.version}/istack-commons-runtime-${istack.version}.jar
run.netcdf.classpath=\
    ${maven.repository}/com/google/guava/guava/${guava.version}/guava-${guava.version}.jar:\
    ${maven.repository}/joda-time/joda-time/${joda-time.version}/joda-time-${joda-time.version}.jar:\
    ${maven.repository}/org/jdom/jdom2/${jdom2.version}/jdom2-${jdom2.version}.jar:\
    ${maven.repository}/edu/ucar/udunits/${netcdf.version}/udunits-${netcdf.version}.jar:\
    ${maven.repository}/edu/ucar/httpservices/${netcdf.version}/httpservices-${netcdf.version}.jar:\
    ${maven.repository}/org/apache/httpcomponents/httpcore/${httpcore.version}/httpcore-${httpcore.version}.jar:\
    ${maven.repository}/org/apache/httpcomponents/httpclient/${httpclient.version}/httpclient-${httpclient.version}.jar:\
    ${maven.repository}/commons-logging/commons-logging/${cm-logging.version}/commons-logging-${cm-logging.version}.jar:\
    ${maven.repository}/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar:\
    ${maven.repository}/org/slf4j/slf4j-jdk14/${slf4j.version}/slf4j-jdk14-${slf4j.version}.jar
run.classpath=\
    ${javac.classpath}:\
    ${build.classes.dir}:\
    ${run.jaxb.classpath}:\
    ${maven.repository}/org/apache/derby/derby/${derby.version}/derby-${derby.version}.jar:\
    ${run.netcdf.classpath}
run.test.classpath=\
    ${javac.test.classpath}:\
    ${build.test.classes.dir}:\
    ${run.jaxb.classpath}:\
    ${run.netcdf.classpath}
debug.classpath=\
    ${run.classpath}
debug.test.classpath=\
    ${run.test.classpath}

#
# Module paths (can be used as a replacement for classpaths on JDK 9).
#
javac.modulepath=
javac.processormodulepath=
javac.test.modulepath=\
    ${javac.modulepath}
run.modulepath=\
    ${javac.modulepath}
run.test.modulepath=\
    ${javac.test.modulepath}
debug.modulepath=\
    ${run.modulepath}
debug.test.modulepath=\
    ${run.test.modulepath}

#
# Build configuration and destination directories.
# The "compile.on.save" property must be 'false' for enabling the use of "../build.xml" file.
#
compile.on.save                          = false
javac.compilerargs                       = -Xdoclint:syntax,html,reference,missing/protected,accessibility/protected
javac.deprecation                        = true
javac.external.vm                        = false
javadoc.html5                            = true
javadoc.windowtitle                      = Apache SIS
javadoc.encoding                         = ${source.encoding}
javadoc.author                           = true
javadoc.version                          = true
javadoc.use                              = true
javadoc.noindex                          = false
javadoc.nonavbar                         = false
javadoc.notree                           = false
javadoc.private                          = false
javadoc.splitindex                       = false
javadoc.additionalparam                  =
annotation.processing.enabled            = true
annotation.processing.enabled.in.editor  = false
annotation.processing.processors.list    =
annotation.processing.run.all.processors = true
annotation.processing.source.output      = ${build.generated.sources.dir}/ap-source-output
jlink.launcher                           = false
jlink.launcher.name                      = Apache_SIS
jnlp.enabled                             = false
jnlp.codebase.type                       = no.codebase
jnlp.descriptor                          = application
jnlp.mixed.code                          = default
jnlp.offline-allowed                     = false
jnlp.signed                              = false
jnlp.signing                             =
jnlp.signing.alias                       =
jnlp.signing.keystore                    =
jar.compress                             = true
jar.index                                = ${jnlp.enabled}
jar.archive.disabled                     = ${jnlp.enabled}
meta.inf.dir                             = ${src.dir}/META-INF
build.dir                                = build
build.classes.dir                        = ${build.dir}/classes
build.generated.dir                      = ${build.dir}/generated
build.generated.sources.dir              = ${build.dir}/generated-sources
build.test.classes.dir                   = ${build.dir}/test/classes
build.test.results.dir                   = ${build.dir}/test/results
build.classes.excludes                   = **/*.java,**/*.form,**/*.txt,**/*.xml,**/*.html,**/*.png,**/*.bak,**/resources/*.properties
build.sysclasspath                       = ignore
dist.dir                                 = dist
dist.jar                                 = ${dist.dir}/SIS.jar
dist.javadoc.dir                         = ${dist.dir}/javadoc
mkdist.disabled                          = true

#
# Editor
#
auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsEnabled = true
auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile    = nbproject/cfg_hints.xml
