<?xml version="1.0" encoding="UTF-8"?>
<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>org.opencds.cqf.cql</groupId>
        <artifactId>engine.shared</artifactId>
        <version>2.4.0</version>
    </parent>

    <artifactId>engine</artifactId>
    <version>2.4.0</version>
    <packaging>jar</packaging>

    <name>engine</name>
    <description>CQL Engine</description>
    <url>https://github.com/DBCG/cql_engine/tree/master/engine</url>

    <dependencies>
        <!-- Logging Services -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

        <!-- StringUtils, ExceptionUtils and Pair classes. -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
        </dependency>

        <!-- Support for generated methods for toString(), equals() and hashCode() using jakarta-commons-lang -->
        <dependency>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics-runtime</artifactId>
        </dependency>

        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
        </dependency>

        <!-- The Units of Measure  Coding System (UCUM) -->
        <dependency>
            <groupId>org.fhir</groupId>
            <artifactId>ucum</artifactId>
        </dependency>

        <!-- dependencies to substitute for excluded ucum dependency "xpp3". Downstream users should add their own
            pull parser impementations and relevant APIS -->
        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3_min</artifactId>
        </dependency>
        <dependency>
            <groupId>xmlpull</groupId>
            <artifactId>xmlpull</artifactId>
        </dependency>


        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>cql-to-elm</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>model-jackson</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>elm-jackson</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <!-- TODO: Figure out why java doc does not respect source file exclusions when linting-->
                        <!-- <excludePackageNames>org.cqframework.cql.elm.execution</excludePackageNames>
                        <sourceFileExcludes>
                            <exclude>**/org/cqframework/cql/elm/execution/*.java</exclude>
                        </sourceFileExcludes> -->
                        <additionalOptions>
                            <additionalOption>-Xdoclint:none</additionalOption>
                        </additionalOptions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>generate</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <schemaDirectory>${project.basedir}/src/main/cql-lm/schema/elm</schemaDirectory>
                        <schemaIncludes>
                            <include>library.xsd</include>
                        </schemaIncludes>
                        <args>
                            <arg>-Xfluent-api</arg>
                            <arg>-Xequals</arg>
                            <arg>-XhashCode</arg>
                            <arg>-XtoString</arg>
                            <arg>-npa</arg>
                            <arg>-XautoInheritance</arg>
                            <arg>-XautoInheritance-xmlTypesExtend=org.opencds.cqf.cql.engine.elm.execution.Executable</arg>
                            <arg>-Xannotate</arg>
                        </args>
                        <plugins>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-fluent-api</artifactId>
                                <version>3.0</version>
                            </plugin>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics</artifactId>
                                <version>0.13.1</version>
                            </plugin>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics-annotate</artifactId>
                                <version>1.1.0</version>
                            </plugin>
                        </plugins>
                        <generatePackage>org.cqframework.cql.elm.execution</generatePackage>
                        <readOnly>false</readOnly>
                        <markGenerated>false</markGenerated>
                        <disableXmlSecurity>true</disableXmlSecurity>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>jacoco-check</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- generated code -->
                        <excludes>
                            <exclude>**/org/cqframework/**</exclude>
                        </excludes>
                        <rules>
                            <rule>
                                <element>BUNDLE</element>
                                <limits>
                                    <limit>
                                        <counter>LINE</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.02</minimum>
                                    </limit>
                                </limits>
                            </rule>
                        </rules>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
