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@SuppressWarnings("unused") 026public class SHUTDOWN implements CLICommand { 027 public void exec(CLIContext cli, String[] args) throws IOException { 028 boolean shutdown; 029 030 if (cli.isInteractive() && cli.getOutputStream() != System.out) { 031 cli.println ("Can't shutdown remotely"); 032 return; 033 } 034 035 if (hasOption(args, "-f", "--force", "-fq")) { 036 shutdown = true; 037 } else { 038 shutdown = cli.confirm("Confirm shutdown (Yes/No) ? "); 039 } 040 if (shutdown) { 041 if (!hasOption (args, "-q", "--quiet", "-fq")) 042 cli.println("Shutting down."); 043 cli.getCLI().getQ2().shutdown(); 044 } else { 045 cli.println("Q2 will continue running."); 046 } 047 } 048 049 private boolean hasOption (String[] args, String... opts) { 050 for (String s : args) { 051 for (String o : opts) { 052 if (s.equals(o)) 053 return true; 054 } 055 } 056 return false; 057 } 058}