001/* 002 * #%L 003 * Netarchivesuite - common 004 * %% 005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library, 006 * the National Library of France and the Austrian National Library. 007 * %% 008 * This program is free software: you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation, either version 2.1 of the 011 * License, or (at your option) any later version. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Lesser Public License for more details. 017 * 018 * You should have received a copy of the GNU General Lesser Public 019 * License along with this program. If not, see 020 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 021 * #L% 022 */ 023 024package dk.netarkivet.common.tools; 025 026/** 027 * A very abstracted interface for simple command line tools. Allows for setup, teardown, argument checking, usage 028 * listing and (of course) running. 029 */ 030public interface SimpleCmdlineTool { 031 032 /** 033 * Check (command line) arguments. 034 * 035 * @param args Usually the command line arguments passed directly from a public static void main(String[] args) 036 * method. 037 * @return True, if parameters are usable. False if not. 038 */ 039 boolean checkArgs(String... args); 040 041 /** 042 * Create any resource which may requires an explicit teardown. Implement teardown in the teardown method. 043 * 044 * @param args Usually the command line arguments passed directly from a public static void main(String[] args) 045 * method. 046 */ 047 void setUp(String... args); 048 049 /** 050 * Teardown any resource which requires an explicit teardown. Implement creation of these in the setup method. Note 051 * that not all objects may be created in case of an exception during setup, so check for null!!! 052 */ 053 void tearDown(); 054 055 /** 056 * Run the tool. Any resources that can be managed without reliable teardown may be created here. 057 * 058 * @param args Usually the command line arguments passed directly from a public static void main(String[] args) 059 * method. 060 */ 061 void run(String... args); 062 063 /** 064 * Describes the parameters that this tool accepts. 065 * 066 * @return The parameter description in a String object. 067 */ 068 String listParameters(); 069}