<?xml version="1.0" encoding="UTF-8"?>

<!--
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see http://www.gnu.org/licenses/
-->

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.phenotips</groupId>
    <artifactId>phenotips-components</artifactId>
    <version>1.3.6</version>
    <relativePath />
  </parent>
  <artifactId>patient-network</artifactId>
  <version>1.1.4</version>
  <packaging>pom</packaging>
  <name>PhenoTips - Patient network</name>

  <scm>
    <connection>scm:git:git://github.com/phenotips/patient-network.git</connection>
    <developerConnection>scm:git:git@github.com:phenotips/patient-network.git</developerConnection>
    <url>https://github.com/phenotips/remote-matching.git/tree/stable-1.1.x/</url>
    <tag>patient-network-1.1.4</tag>
  </scm>

  <!-- We need to list repositories for finding the parent. Other settings will be correctly inherited from the parent. -->
  <repositories>
    <repository>
      <id>phenotips-releases</id>
      <name>PhenoTips Releases repository</name>
      <url>https://nexus.phenotips.org/nexus/content/repositories/releases/</url>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
    <repository>
      <id>phenotips-snapshots</id>
      <name>PhenoTips Snapshots repository</name>
      <url>https://nexus.phenotips.org/nexus/content/repositories/snapshots/</url>
      <releases>
        <enabled>false</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
  </repositories>

  <properties>
    <project.version.previous>1.0</project.version.previous>
  </properties>

  <modules>
    <module>access-rules</module>
    <module>similarity-data-api</module>
    <module>similarity-data-impl</module>
    <module>similarity-search</module>
    <module>communication</module>
    <module>ui</module>
    <module>matching-notification-resources</module>
    <module>matching-notification-ui</module>
    <module>matching-notification-api</module>
    <module>matching-notification-migrations</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <!-- API backwards compatibility check -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <configuration>
          <comparisonVersion>${project.version.previous}</comparisonVersion>
          <!-- List of specific CLIRR excludes.
               See http://mojo.codehaus.org/clirr-maven-plugin/examples/ignored-differences.html
          -->
          <ignored>
            <!-- Remove the following ignores after we release the current version as final -->
            <difference>
              <className>org/phenotips/data/similarity/Exome</className>
              <differenceType>7004</differenceType>
              <method>java.util.List getTopVariants(java.lang.String)</method>
              <justification>Allow to specify _how many_ top variants to return.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientSimilarityView</className>
              <differenceType>7002</differenceType>
              <method>org.json.JSONObject getOwnerJSON()</method>
              <justification>Removed for better patient contact acces via getData() method.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotype</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getGenesStatus()</method>
              <justification>Provide a status of genes stored in the class.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getHref()</method>
              <justification>Provide a contact url for patient owner.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.data.Patient getPatient()</method>
              <justification>Provide a patient object of patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7002</differenceType>
              <method>boolean markRejected(java.util.List, boolean)</method>
              <justification>Removed in favour setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(java.util.List, java.lang.String)</method>
              <justification>Added in place of markRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getStatus()</method>
              <justification>Provide a status of the match (rejected, saved or uncategorized).</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7002</differenceType>
              <method>boolean isRejected()</method>
              <justification>Removed in favour of getStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7002</differenceType>
              <method>void setRejected(boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setStatus(java.lang.String)</method>
              <justification>Added in place of setRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7002</differenceType>
              <method>java.lang.String rejectMatches(java.lang.String, boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>boolean markRejected(org.hibernate.Session, java.util.List, boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(org.hibernate.Session, java.util.List, java.lang.String)</method>
              <justification>Added in place of markRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientSimilarityView</className>
              <differenceType>7012</differenceType>
              <method>org.json.JSONArray getFeatureMatchesJSON()</method>
              <justification>Added to have access to structured phenotypes similarity list brokedown by cateries for email notification UI.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7005</differenceType>
              <method>java.util.List sendNotifications(java.util.List)</method>
              <to>java.util.List sendNotifications(java.util.Map)</to>
              <justification>Add option to send matching notification to one user only.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchNotifier</className>
              <differenceType>7004</differenceType>
              <method>java.util.List createEmails(java.util.List)</method>
              <justification>Add option to send matching notification to one user only.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/Variant</className>
              <differenceType>7012</differenceType>
              <method>void setAnnotation(java.lang.String, java.lang.String)</method>
              <justification>Allow setting annotation properties after Variant creation.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.sql.Timestamp getFoundTimestamp()</method>
              <justification>Allow access to the timestamp of the match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean deleteMatches(org.hibernate.Session, java.util.List)</method>
              <justification>Allow bulk delete for matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getMatchedDetails()</method>
              <justification>Added to have access to matched details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getReferenceDetails()</method>
              <justification>Added to have access to reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setFoundTimestamp(java.sql.Timestamp)</method>
              <justification>Added to set match found timestamp.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setGenotypeScore(java.lang.Double)</method>
              <justification>Added to set genotype score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setMatchedDetails(java.lang.String)</method>
              <justification>Added to set reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setMatchedPatientInMatch(org.phenotips.matchingnotification.match.PatientInMatch)</method>
              <justification>Added to set matched patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setPhenotypeScore(java.lang.Double)</method>
              <justification>Added set phenotype score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setReferenceDetails(java.lang.String)</method>
              <justification>Added to set reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setReferencePatientInMatch(org.phenotips.matchingnotification.match.PatientInMatch)</method>
              <justification>Added to set reference patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setScore(java.lang.Double)</method>
              <justification>Added to set score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotype</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotypeSimilarityView</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.data.permissions.AccessLevel getAccess()</method>
              <justification>Added to determine what type of access does the user have to this patient profile.</justification>
            </difference>
          </ignored>
          <excludes>
            <exclude>**/internal/**</exclude>
            <exclude>**/test/**</exclude>
            <!-- Remove the following excludes after we release the current version as final -->
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
