01: /**
02: * com.mckoi.database.interpret.Misc 14 Sep 2001
03: *
04: * Mckoi SQL Database ( http://www.mckoi.com/database )
05: * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc.
06: *
07: * This program is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU General Public License
09: * Version 2 as published by the Free Software Foundation.
10: *
11: * This program is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: * GNU General Public License Version 2 for more details.
15: *
16: * You should have received a copy of the GNU General Public License
17: * Version 2 along with this program; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19: *
20: * Change Log:
21: *
22: *
23: */package com.mckoi.database.interpret;
24:
25: import com.mckoi.database.*;
26: import java.util.ArrayList;
27: import java.util.List;
28:
29: /**
30: * Misc statements that I couldn't be bothered to roll a new Statement class
31: * for. These have to be exceptional statements that do not read or write
32: * to any tables and run in exclusive mode.
33: *
34: * @author Tobias Downer
35: */
36:
37: public class Misc extends Statement {
38:
39: /**
40: * Set to true if this statement is a shutdown statement.
41: */
42: boolean shutdown = false;
43:
44: // ---------- Implemented from Statement ----------
45:
46: public void prepare() throws DatabaseException {
47: Object command = cmd.getObject("command");
48: shutdown = command.equals("shutdown");
49: }
50:
51: public Table evaluate() throws DatabaseException {
52:
53: DatabaseQueryContext context = new DatabaseQueryContext(
54: database);
55:
56: // Is this a shutdown statement?
57: if (shutdown == true) {
58:
59: // Check the user has privs to shutdown...
60: if (!database.getDatabase().canUserShutDown(context, user)) {
61: throw new UserAccessException(
62: "User not permitted to shut down the database.");
63: }
64:
65: // Shut down the database system.
66: database.getDatabase().startShutDownThread();
67:
68: // Return 0 to indicate we going to be closing shop!
69: return FunctionTable.resultTable(context, 0);
70:
71: }
72:
73: return FunctionTable.resultTable(context, 0);
74: }
75:
76: }
|