001package io.ebeaninternal.dbmigration.model;
002
003import io.ebean.migration.MigrationVersion;
004import io.ebeaninternal.dbmigration.migration.Migration;
005import io.ebeaninternal.dbmigration.migrationreader.MigrationXmlReader;
006
007import java.io.File;
008
009/**
010 * Migration XML resource that holds the changes to be applied.
011 */
012public class MigrationResource implements Comparable<MigrationResource> {
013
014  private final File migrationFile;
015
016  private final MigrationVersion version;
017
018  /**
019   * Construct with a migration xml file.
020   */
021  public MigrationResource(File migrationFile, MigrationVersion version) {
022    this.migrationFile = migrationFile;
023    this.version = version;
024  }
025
026  @Override
027  public String toString() {
028    return migrationFile.getName();
029  }
030
031  /**
032   * Return the version associated with this resource.
033   */
034  public MigrationVersion getVersion() {
035    return version;
036  }
037
038  /**
039   * Read and return the migration from the resource.
040   */
041  public Migration read() {
042
043    return MigrationXmlReader.read(migrationFile);
044  }
045
046  /**
047   * Compare by underlying version.
048   */
049  @Override
050  public int compareTo(MigrationResource other) {
051    return version.compareTo(other.version);
052  }
053}