<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>fr.ifremer.reefdb</groupId>
    <artifactId>reefdb</artifactId>
    <version>1.0</version>
  </parent>

  <artifactId>reefdb-ui-swing</artifactId>
  <packaging>jar</packaging>

  <name>Reef DB :: UI</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- jaxx configuration -->
    <jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
    <jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
    <jaxx.defaultErrorUIFQN>
      jaxx.runtime.validator.swing.ui.ImageValidationUI
    </jaxx.defaultErrorUIFQN>
    <!--<jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon>-->
    <jaxx.generateHelp>true</jaxx.generateHelp>
    <jaxx.generateSearch>false</jaxx.generateSearch>
    <jaxx.autoImportCss>true</jaxx.autoImportCss>
    <jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss>
    <jaxx.addAutoHandlerUI>true</jaxx.addAutoHandlerUI>

    <!-- jaxx help configuration -->
    <jaxx.helpsetName>reefdb</jaxx.helpsetName>
    <jaxx.locales>fr,en</jaxx.locales>
    <jaxx.mergeIdsToInput>true</jaxx.mergeIdsToInput>
    <jaxx.inputHelpDirectory>
      src/main/filtered-resources
    </jaxx.inputHelpDirectory>
    <jaxx.inputHelpFilenamePrefix>reefdb-help</jaxx.inputHelpFilenamePrefix>
    <jaxx.helpBrokerFQN>
      fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker
    </jaxx.helpBrokerFQN>

    <!-- i18n configuration -->
    <i18n.bundleOutputName>reefdb-i18n</i18n.bundleOutputName>
    <i18n.generateCsvFile>true</i18n.generateCsvFile>
    <i18n.bundleCsvFile>
      ${maven.gen.dir}/resources/META-INF/${i18n.bundleOutputName}.csv
    </i18n.bundleCsvFile>

    <maven.jar.main.class>
      fr.ifremer.reefdb.ui.swing.RunUI
    </maven.jar.main.class>

    <bundlePrefix>reefdb-${project.version}</bundlePrefix>

    <reefdb.log.file>
      <!--\$\{java.io.tmpdir\}/reefdb-${project.version}.log-->
      reefdb-${project.version}.log
    </reefdb.log.file>

    <!-- generate license bundled files -->
    <license.generateBundle>true</license.generateBundle>
    <license.bundleThirdPartyPath>
      META-INF/reefdb-THIRD-PARTY.txt
    </license.bundleThirdPartyPath>
    <license.bundleLicensePath>
      META-INF/reefdb-LICENSE.txt
    </license.bundleLicensePath>

    <!-- Post Release configuration -->
    <skipPostRelease>false</skipPostRelease>

  </properties>

  <dependencies>

    <!-- Sibling dependencies -->
    <dependency>
      <groupId>fr.ifremer.reefdb</groupId>
      <artifactId>reefdb-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- Quadige2 Core  -->
    <dependency>
      <groupId>fr.ifremer.reefdb</groupId>
      <artifactId>quadrige2-core-shared</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>fr.ifremer.reefdb</groupId>
      <artifactId>reefdb-ui-swing-updater</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>fr.ifremer.reefdb</groupId>
      <artifactId>reefdb-ui-swing-launcher</artifactId>
      <version>${project.version}</version>
      <type>exe</type>
      <classifier>bin</classifier>
    </dependency>

    <!-- Nuiton-* -->
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-utils</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-converter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-decorator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-validator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-updater</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.i18n</groupId>
      <artifactId>nuiton-i18n</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-config</artifactId>
    </dependency>

    <!-- librairie Jaxx -->
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-runtime</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-validator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-widgets</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-widgets-number</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-application-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton.jaxx</groupId>
      <artifactId>jaxx-application-swing</artifactId>
    </dependency>

    <!-- swing widgets -->
    <dependency>
      <groupId>org.swinglabs.swingx</groupId>
      <artifactId>swingx-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.swinglabs.swingx</groupId>
      <artifactId>swingx-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.swinglabs.swingx</groupId>
      <artifactId>swingx-autocomplete</artifactId>
    </dependency>

    <!--<dependency>-->
    <!--<groupId>com.github.insubstantial</groupId>-->
    <!--<artifactId>substance</artifactId>-->
    <!--</dependency>-->
    <!--<dependency>-->
    <!--<groupId>com.github.insubstantial</groupId>-->
    <!--<artifactId>substance-swingx</artifactId>-->
    <!--</dependency>-->

    <!-- Commons -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>

    <!-- Logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jcl</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>runtime</scope>
    </dependency>

    <!-- JNA (need for OS shutdown hook) -->
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna</artifactId>
    </dependency>
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna-platform</artifactId>
    </dependency>

    <!-- Joda time -->
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.7</version>
    </dependency>

    <!-- Unit testing -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.nuiton</groupId>
      <artifactId>nuiton-validator</artifactId>
      <scope>test</scope>
      <classifier>tests</classifier>
    </dependency>


  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/filtered-resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>*.config</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.nuiton.jaxx</groupId>
        <artifactId>jaxx-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
              <goal>generate-help-ids</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.nuiton.i18n</groupId>
        <artifactId>i18n-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>scan-sources</id>
            <configuration>
              <entries>
                <entry>
                  <specificGoal>parserValidation</specificGoal>
                  <basedir>${maven.src.dir}/main/java/</basedir>
                  <includes>
                    <param>**/**-validation.xml</param>
                  </includes>
                </entry>
                <entry>
                  <basedir>${maven.gen.dir}/java/</basedir>
                </entry>
              </entries>
            </configuration>
            <goals>
              <goal>parserJava</goal>
              <goal>parserValidation</goal>
              <goal>gen</goal>
            </goals>
          </execution>
          <execution>
            <id>make-bundle</id>
            <goals>
              <goal>bundle</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-licenses</id>
            <goals>
              <goal>update-project-license</goal>
              <goal>add-third-party</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
              <useUniqueVersions>false</useUniqueVersions>
              <addClasspath>true</addClasspath>
              <classpathPrefix>./lib/</classpathPrefix>
            </manifest>
            <!-- <manifestEntries>
               <Class-Path>../plugins/t0403_product_OBSDEB_export/t0403_product_obsdeb_export_0_1.jar
                 ../plugins/t0403_product_OBSDEB_export/userRoutines.jar</Class-Path>
             </manifestEntries> -->
          </archive>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <showDeprecation>false</showDeprecation>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>

    <extensions>
      <!-- Give a access to settings.xml server properties (need to deploy bundles)-->
      <extension>
        <groupId>com.github.shyiko.servers-maven-extension</groupId>
        <artifactId>servers-maven-extension</artifactId>
        <version>1.2.0</version>
      </extension>
    </extensions>
  </build>

  <profiles>
    <profile>
      <id>add-release-properties</id>
      <activation>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>
      <properties>
        <reefdb.log.file>$\{reefdb.log.file\}</reefdb.log.file>
      </properties>
    </profile>

    <profile>
      <id>default-bundle</id>
      <activation>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <defaultGoal>package</defaultGoal>
        <plugins>

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <phase>prepare-package</phase>
                <configuration>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>true</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                  <silent>true</silent>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>assembly-standalone</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>true</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/standalone.xml
                    </descriptor>
                    <descriptor>
                      src/main/assembly/i18n.xml
                    </descriptor>
                    <descriptor>
                      src/main/assembly/help.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>linux-x64-bundle</id>
      <activation>
        <property>
          <name>performFullRelease64</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <defaultGoal>package</defaultGoal>
        <plugins>

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>get-linux-x64-jre</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <outputDirectory>
                    ${project.build.directory}/jre-linux-x64
                  </outputDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>com.oracle</groupId>
                      <artifactId>jre</artifactId>
                      <version>${jreVersion}</version>
                      <type>zip</type>
                      <classifier>linux-x64</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <finalName>${bundlePrefix}</finalName>
            </configuration>
            <executions>
              <execution>
                <id>assembly-full-linux-x64</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>false</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/full-linux-x64.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>linux-i586-bundle</id>
      <activation>
        <property>
          <name>performFullRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <defaultGoal>package</defaultGoal>
        <plugins>

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>get-linux-i586-jre</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <outputDirectory>
                    ${project.build.directory}/jre-linux-i586
                  </outputDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>com.oracle</groupId>
                      <artifactId>jre</artifactId>
                      <version>${jreVersion}</version>
                      <type>zip</type>
                      <classifier>linux-i586</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <finalName>${bundlePrefix}</finalName>
            </configuration>
            <executions>
              <execution>
                <id>assembly-full-linux-i586</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>false</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/full-linux-i586.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>windows-i586-bundle</id>
      <activation>
        <property>
          <name>performFullRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <defaultGoal>package</defaultGoal>
        <plugins>

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>get-windows-i586-jre</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <outputDirectory>
                    ${project.build.directory}/jre-windows-i586
                  </outputDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>com.oracle</groupId>
                      <artifactId>jre</artifactId>
                      <version>${jreVersion}</version>
                      <type>zip</type>
                      <classifier>windows-i586</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <finalName>${bundlePrefix}</finalName>
            </configuration>
            <executions>
              <execution>
                <id>assembly-full-windows-i586</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>false</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/full-windows-i586.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>

              <!-- Ifremer 
			  FIXME : uncomment when stable release, for production
              <execution>
                <id>assembly-full-windows-i586-ifremer</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>false</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/prod/full-windows-i586-ifremer.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>
			   -->
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>windows-x64-bundle</id>
      <activation>
        <property>
          <name>performFullRelease64</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <defaultGoal>package</defaultGoal>
        <plugins>

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>get-windows-x64-jre</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <outputDirectory>
                    ${project.build.directory}/jre-windows-x64
                  </outputDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>com.oracle</groupId>
                      <artifactId>jre</artifactId>
                      <version>${jreVersion}</version>
                      <type>zip</type>
                      <classifier>windows-x64</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <finalName>${bundlePrefix}</finalName>
            </configuration>
            <executions>
              <execution>
                <id>assembly-full-windows-x64</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <attach>false</attach>
                  <descriptors>
                    <descriptor>
                      src/main/assembly/full-windows-x64.xml
                    </descriptor>
                  </descriptors>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>deploy-bundles-to-forge</id>
      <activation>
        <property>
          <name>performFullRelease</name>
          <value>true</value>
        </property>
      </activation>

      <properties>
        <project.changelog.url>${project.issueManagement.url}&amp;ref=changelog_page.php</project.changelog.url>
        <forge.group_id>252</forge.group_id>
        <forge.packageName>BDRecif</forge.packageName>
      </properties>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>check-release-properties</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <phase>initialize</phase>
                <configuration>
                  <rules>
                    <requireProperty>
                      <property>settings.servers.forge-ifremer.username</property>
                      <message>You must set property 'username' for the server 'forge-ifremer'. Please update your settings.xml !</message>
                    </requireProperty>
                    <requireProperty>
                      <property>settings.servers.forge-ifremer.password</property>
                      <message>You must set property 'password' for the server 'forge-ifremer'. Please update your settings.xml !</message>
                    </requireProperty>
                  </rules>
                  <ignoreCache>true</ignoreCache>
                  <failFast>true</failFast>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>webtest-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
              <haltonfailure>true</haltonfailure>
              <haltonerror>true</haltonerror>
              <loglevel>info</loglevel>
            </configuration>
            <executions>
              <execution>
                <phase>deploy</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <host>forge.ifremer.fr</host>
                  <port>443</port>
                  <protocol>https</protocol>
                  <sourcedirectory>${basedir}/src/main/ant</sourcedirectory>
                  <sourcefile>forge-ifremer.xml</sourcefile>
                  <target>deploy-bundles-to-forge</target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>profiling</id>

      <build>
        <resources>
          <resource>
            <directory>src/main/profiling</directory>
            <includes>
              <include>**/*</include>
            </includes>
          </resource>
        </resources>
      </build>

      <dependencies>

        <dependency>
          <groupId>org.nuiton</groupId>
          <artifactId>nuiton-profiling</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>