1 /*
2 * Zemucan: A Syntax Assistant for DB2
3 * Copyright (C) 2009, 2010 Andres Gomez Casanova
4 *
5 * This file is part of Zemucan.
6 *
7 * Zemucan 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 * Zemucan 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: 2011-03-05 23:06:11 -0500 (sáb, 05 mar 2011) $:
26 * Revision: $LastChangedRevision: 1906 $:
27 * URL: $HeadURL: https://zemucan.svn.sourceforge.net/svnroot/zemucan/branches/zemucan_v1/source-code/uiImplJLine/src/test/java/jline/Buffer.java $:
28 */
29 package jline;
30
31 import java.io.ByteArrayOutputStream;
32
33 /**
34 * This class is a helper to commands in the console.
35 * <p>
36 * This class is based on a jline's test class written by Ryan. <b>Control
37 * Version</b>
38 * <p>
39 * <ul>
40 * <li>1.0.0 Class creation.</li>
41 * </ul>
42 *
43 * @author Andres Gomez Casanova <a
44 * href="mailto:a n g o c a at y a h o o dot c o m" >(AngocA)</a>
45 * @version 1.0.0 2010-05-13
46 */
47 public class Buffer {
48 /**
49 * Stream that represents what the user writes.
50 */
51 private final ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
52
53 /**
54 * Constructor with a given string.
55 *
56 * @param string
57 * String that represents what the user wrote.
58 */
59 public Buffer(final String/* ! */string) {
60 this.append(string);
61 }
62
63 /**
64 * Adds a byte to the stream.
65 *
66 * @param b
67 * byte to add.
68 */
69 private void append(final byte b) {
70 this.byteOutStream.write(b);
71 }
72
73 /**
74 * Adds a integer to the stream.
75 *
76 * @param integer
77 * integer to add.
78 */
79 private void append(final int integer) {
80 this.append((byte) integer);
81 }
82
83 /**
84 * Appends a string to the stream.
85 *
86 * @param string
87 * String to add to the array.
88 */
89 private void append(final String/* ! */string) {
90 final byte[] bytes = string.getBytes();
91
92 for (int i = 0; i < bytes.length; i++) {
93 this.append(bytes[i]);
94 }
95 }
96
97 /**
98 * Retrieves the output stream as an array of bytes.
99 *
100 * @return Array of bytes.
101 */
102 public final byte[] getBytes() {
103 return this.byteOutStream.toByteArray();
104 }
105
106 /**
107 * Adds a operation to the stream.
108 *
109 * @param operation
110 * Operation to add.
111 */
112 public final void op(final short operation) {
113 this.append(AssertionHelper.getKeyForAction(operation));
114 }
115 }