/**
   * Extracts the migration info for this resource.
   *
   * @param resource The resource to analyse.
   * @return The migration info.
   */
  private ResolvedMigrationImpl extractMigrationInfo(Resource resource) {
    ResolvedMigrationImpl migration = new ResolvedMigrationImpl();

    Pair<MigrationVersion, String> info =
        MigrationInfoHelper.extractVersionAndDescription(
            resource.getFilename(), sqlMigrationPrefix, sqlMigrationSeparator, sqlMigrationSuffix);
    migration.setVersion(info.getLeft());
    migration.setDescription(info.getRight());

    migration.setScript(extractScriptName(resource));

    migration.setChecksum(calculateChecksum(resource.loadAsBytes()));
    migration.setType(MigrationType.SQL);
    return migration;
  }