package edu.sc.seis.sod.tools;

import org.apache.log4j.BasicConfigurator;

import com.martiansoftware.jsap.JSAP;
import com.martiansoftware.jsap.JSAPException;
import com.martiansoftware.jsap.Switch;


public class find_events extends CommandLineTool {

    public find_events(String[] args) throws JSAPException {
        super(args);
    }

    protected void addParams() throws JSAPException {
        super.addParams();
        add(new Switch("allowDupes",
                       JSAP.NO_SHORTFLAG,
                       "allow-duplicates",
                       "Without this very similar events are rejected"));
        add(BoxAreaParser.createParam("Event constraining box as west/east/south/north"));
        add(DonutParser.createParam("Event constraining donut as lat/lon/minRadius/maxRadius"));
        add(TimeParser.createYesterdayParam("begin",
                                            "The earliest time for an accepted event, like -3d or 2015-01-26",
                                            false));
        add(TimeParser.createParam("end",
                                   "now",
                                   "The latest time for an accepted event, like -2d or 2015-01-29",
                                   true));
        add(RangeParser.createParam("magnitude",
                                    "0",
                                    "10",
                                    "The range of acceptable magnitudes"));
        add(createListOption("types",
                             't',
                             "types",
                             "The types of magnitudes to retrieve."));
        add(RangeParser.createParam("depth",
                                    "0",
                                    "10000",
                                    "The range of acceptable depths in kilometers",
                                    'D'));
        String latPrinter = "$event.getLatitude('##0.0000;-##0.0000')";
        String lonPrinter = "$event.getLongitude('##0.0000;-##0.0000')";
        String theRest = "$event.getDepth('###0.##') ${event.getTime('yyyy_MM_dd_HH_mm_ss_SSS')} $event.magnitudeValue$event.magnitudeType";
        add(OutputFormatParser.createParam(lonPrinter + " " + latPrinter + " "
                + theRest, latPrinter + " " + lonPrinter + " " + theRest));
        add(createListOption("catalogs",
                             'c',
                             "catalogs",
                             "A comma separated list of catalogs to search"));
        add(createListOption("contributors",
                             'C',
                             "contributors",
                             "A comma separated list of contributors to search"));
        add(createListOption("seismicRegions",
                             JSAP.NO_SHORTFLAG,
                             "seis-regions",
                             "A comma separated list of seismic regions"));
        add(createListOption("geographicRegions",
                             JSAP.NO_SHORTFLAG,
                             "geo-regions",
                             "A comma separated list of geographic regions"));
    }

    public static void main(String[] args) throws Exception {
        BasicConfigurator.configure();
        CommandLineTool.run(new find_events(args));
    }
}
