001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.q2.cli; 020 021import org.jpos.q2.CLICommand; 022import org.jpos.q2.CLIContext; 023import java.io.IOException; 024 025/** CLI command that requests an orderly Q2 shutdown. */ 026@SuppressWarnings("unused") 027public class SHUTDOWN implements CLICommand { 028 /** Default constructor; no instance state to initialise. */ 029 public SHUTDOWN() {} 030 public void exec(CLIContext cli, String[] args) throws IOException { 031 boolean shutdown; 032 033 if (cli.isInteractive() && cli.getOutputStream() != System.out) { 034 cli.println ("Can't shutdown remotely"); 035 return; 036 } 037 038 if (hasOption(args, "-f", "--force", "-fq")) { 039 shutdown = true; 040 } else { 041 shutdown = cli.confirm("Confirm shutdown (Yes/No) ? "); 042 } 043 if (shutdown) { 044 if (!hasOption (args, "-q", "--quiet", "-fq")) 045 cli.println("Shutting down."); 046 cli.getCLI().getQ2().shutdown(); 047 } else { 048 cli.println("Q2 will continue running."); 049 } 050 } 051 052 private boolean hasOption (String[] args, String... opts) { 053 for (String s : args) { 054 for (String o : opts) { 055 if (s.equals(o)) 056 return true; 057 } 058 } 059 return false; 060 } 061}