#! /usr/local/bin/perl
#                                                         -*- Perl -*-
# Copyright (c) 1999, 2000  Motoyuki Kasahara
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, 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 General Public License for more details.
#

require 5.005;

use English;
use FreePWING::Index;
use FreePWING::FPWUtils::FPWUtils;
use Getopt::Long;

#
# コマンド行を解析する。
#
if (!GetOptions('workdir=s' => \$work_directory)) {
    exit 1;
}

#
# fpwutils を初期化する。
#
initialize_fpwutils();

#
# これから出力するファイルがすでにあれば、削除する。
#
unlink(glob("$index_file_name*"));
unlink(glob("$endindex_file_name*"));
unlink(glob("$keyindex_file_name*"));
unlink(glob("$index_ref_file_name*"));
unlink(glob("$endindex_ref_file_name*"));
unlink(glob("$keyindex_ref_file_name*"));

#
# 前方一致インデックスファイルを生成する。
#
if (-f $sort_file_name) {
    $index = FreePWING::Index->new();
    if (!$index->open($index_file_name, $index_ref_file_name)) {
	die "$PROGRAM_NAME: " . $index->error_message() . "\n";
    }

    if (!$index->add_entries_in_file($sort_file_name)) {
	die "$PROGRAM_NAME: " . $index->error_message() . "\n";
    }

    if (!$index->close()) {
	die "$PROGRAM_NAME: " . $index->error_message() . "\n";
    }
}

#
# 後方一致インデックスファイルを生成する。
#
if (-f $endsort_file_name) {
    $endindex = FreePWING::Index->new();
    if (!$endindex->open($endindex_file_name, $endindex_ref_file_name)) {
	die "$PROGRAM_NAME: " . $endindex->error_message() . "\n";
    }
    if (!$endindex->add_entries_in_file($endsort_file_name)) {
	die "$PROGRAM_NAME: " . $endindex->error_message() . "\n";
    }
    if (!$endindex->close()) {
	die "$PROGRAM_NAME: " . $endindex->error_message() . "\n";
    }
}

#
# 条件検索インデックスファイルを生成する。
#
if (-f $keysort_file_name) {
    $keyindex = FreePWING::Index->new();
    if (!$keyindex->open($keyindex_file_name, $keyindex_ref_file_name)) {
	die "$PROGRAM_NAME: " . $keyindex->error_message() . "\n";
    }
    if (!$keyindex->add_entries_in_file($keysort_file_name)) {
	die "$PROGRAM_NAME: " . $keyindex->error_message() . "\n";
    }
    if (!$keyindex->close()) {
	die "$PROGRAM_NAME: " . $keyindex->error_message() . "\n";
    }
}

#
# fpwutils の後始末をする。
#
finalize_fpwutils();

exit 0;
