1 /*
2 * db2sa: DB2 Syntax Assistant
3 * Copyright (C) Andres Gomez Casanova
4 *
5 * This file is part of db2sa.
6 *
7 * db2sa is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * db2sa is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with this library; if not, see <http://www.gnu.org/licenses/>.
19 *
20 * Contact:
21 * a n g o c a at y a h o o dot c o m
22 * Cra. 45 No 61 - 31, Bogota, Colombia.
23 *
24 * Author: $LastChangedBy: angoca $:
25 * Date: $LastChangedDate: 2009-06-11 23:42:19 +0200 (Thu, 11 Jun 2009) $:
26 * Revision: $LastChangedRevision: 223 $:
27 * URL: $HeadURL: https://db2sa.svn.sourceforge.net/svnroot/db2sa/branches/db2sa_beta/source-code/src/main/java/name/angoca/db2sa/core/InterfaceCore.java $:
28 */
29 package name.angoca.db2sa.core;
30
31 import name.angoca.db2sa.ExecutionState;
32 import name.angoca.db2sa.cli.OutputWriter;
33 import name.angoca.db2sa.core.executer.Executer;
34 import name.angoca.db2sa.core.lexical.ImplLexicalAnalyzer;
35 import name.angoca.db2sa.exceptions.AbstractDB2SAException;
36
37 /**
38 * This class is the interface with other upper layers. This is the only class
39 * that the other layers have to use.<br/>
40 * <b>Control Version</b><br />
41 * <ul>
42 * <li>0.0.1 Class creation.</li>
43 * <li>0.0.2</li>
44 * <li>0.1.0 Organized.</li>
45 * <li>0.1.1 Executer as a singleton.</li>
46 * <li>0.2.0 Execution state.</li>
47 * <li>0.2.1 Enum.</li>
48 * <li>1.0.0 Moved to version 1.</li>
49 * </ul>
50 *
51 * @author Andres Gomez Casanova <a
52 * href="mailto:a n g o c a at y a h o o dot c o m">(AngocA)</a>
53 * @version 1.0.0 2009-07-19
54 */
55 public final class InterfaceCore {
56
57 /**
58 * Hidden default constructor.
59 */
60 private InterfaceCore() {
61 // Nothing to do. No tests.
62 }
63
64 /**
65 * Process the phrase written by the user and prints its result.
66 *
67 * @param phrase
68 * Phrase to analyze.
69 * @return An object that represents the command completed or the options
70 * for the current command.
71 * @throws AbstractDB2SAException
72 * There is a problem in the application.
73 */
74 public static ReturnOptions analyzePhrase(final String/* ! */phrase)
75 throws AbstractDB2SAException {
76 final ReturnOptions ret = ImplLexicalAnalyzer.getInstance()
77 .processPhrase(phrase);
78 return ret;
79 }
80
81 /**
82 * Execute the given command. Here, the application does not make a phrase
83 * analyzes and it passes directly the command to the interpreter, that in
84 * this case is DB2.
85 *
86 * @param command
87 * The complete command to execute.
88 * @param writer
89 * The output's writer.
90 * @return The state of the execution of the command.
91 * @throws AbstractDB2SAException
92 * If any exception occurred while executing.
93 */
94 public static ExecutionState executeCommand(final String/* ! */command,
95 final OutputWriter/* ! */writer) throws AbstractDB2SAException {
96 return Executer.getInstance().execute(command, writer);
97 }
98 }