Changeset: aed7f32e029a for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/aed7f32e029a
Added Files:
        src/main/java/org/monetdb/mcl/io/LineType.java
Modified Files:
        src/main/java/org/monetdb/jdbc/MonetConnection.java
        src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
        src/main/java/org/monetdb/mcl/net/MapiSocket.java
        src/main/java/org/monetdb/merovingian/Control.java
        src/main/java/org/monetdb/util/SQLRestore.java
Branch: onclient
Log Message:

Refactor LineType to be an enum

Makes it easier to catch them all when changing things.


diffs (282 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -35,6 +35,7 @@ import java.util.concurrent.Executor;
 
 import org.monetdb.mcl.io.BufferedMCLReader;
 import org.monetdb.mcl.io.BufferedMCLWriter;
+import org.monetdb.mcl.io.LineType;
 import org.monetdb.mcl.net.HandshakeOptions;
 import org.monetdb.mcl.net.MapiSocket;
 import org.monetdb.mcl.parser.HeaderLineParser;
@@ -2100,7 +2101,7 @@ public class MonetConnection
                 * @return a non-null String if the line is invalid,
                 *         or additional lines are not allowed.
                 */
-               public abstract String addLine(String line, int linetype);
+               public abstract String addLine(String line, LineType linetype);
 
                /**
                 * Returns whether this Response expects more lines to be added
@@ -2259,12 +2260,12 @@ public class MonetConnection
                 */
                // {{{ addLine
                @Override
-               public String addLine(final String tmpLine, final int linetype) 
{
+               public String addLine(final String tmpLine, final LineType 
linetype) {
                        if (isSet[LENS] && isSet[TYPES] && isSet[TABLES] && 
isSet[NAMES]) {
                                return resultBlocks[0].addLine(tmpLine, 
linetype);
                        }
 
-                       if (linetype != BufferedMCLReader.HEADER)
+                       if (linetype != LineType.HEADER)
                                return "header expected, got: " + tmpLine;
 
                        // depending on the name of the header, we continue
@@ -2634,8 +2635,8 @@ public class MonetConnection
                 *         or additional lines are not allowed.
                 */
                @Override
-               public String addLine(final String line, final int linetype) {
-                       if (linetype != BufferedMCLReader.RESULT)
+               public String addLine(final String line, final LineType 
linetype) {
+                       if (linetype != LineType.RESULT)
                                return "protocol violation: unexpected line in 
data block: " + line;
                        // add to the backing array
                        data[++pos] = line;
@@ -2725,7 +2726,7 @@ public class MonetConnection
                }
 
                @Override
-               public String addLine(final String line, final int linetype) {
+               public String addLine(final String line, final LineType 
linetype) {
                        return "Header lines are not supported for an 
UpdateResponse";
                }
 
@@ -2762,7 +2763,7 @@ public class MonetConnection
                public final int state = Statement.SUCCESS_NO_INFO;
 
                @Override
-               public String addLine(final String line, final int linetype) {
+               public String addLine(final String line, final LineType 
linetype) {
                        return "Header lines are not supported for a 
SchemaResponse";
                }
 
@@ -2990,12 +2991,12 @@ public class MonetConnection
 
                                        // go for new results
                                        String tmpLine = in.readLine();
-                                       int linetype = in.getLineType();
+                                       LineType linetype = in.getLineType();
                                        Response res = null;
-                                       while (linetype != 
BufferedMCLReader.PROMPT) {
+                                       while (linetype != LineType.PROMPT) {
                                                // each response should start 
with a start of header (or error)
                                                switch (linetype) {
-                                               case BufferedMCLReader.SOHEADER:
+                                               case SOHEADER:
                                                        // make the response 
object, and fill it
                                                        try {
                                                                switch 
(sohp.parse(tmpLine)) {
@@ -3100,7 +3101,7 @@ public class MonetConnection
                                                        tmpLine = in.readLine();
                                                        linetype = 
in.getLineType();
                                                        break;
-                                               case BufferedMCLReader.INFO:
+                                               case INFO:
                                                        
addWarning(tmpLine.substring(1), "01000");
                                                        // read the next line 
(can be prompt, new result, error, etc.)
                                                        // before we start the 
loop over
@@ -3111,7 +3112,7 @@ public class MonetConnection
                                                        // we have something we 
don't expect/understand, let's make it an error message
                                                        tmpLine = 
"!M0M10!protocol violation, unexpected line: " + tmpLine;
                                                        // don't break; fall 
through...
-                                               case BufferedMCLReader.ERROR:
+                                               case ERROR:
                                                        // read everything till 
the prompt (should be
                                                        // error) we don't know 
if we ignore some
                                                        // garbage here... but 
the log should reveal that
diff --git a/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java 
b/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
--- a/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
+++ b/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
@@ -14,6 +14,8 @@ import java.io.InputStream;
 import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 
+import static org.monetdb.mcl.io.LineType.*;
+
 /**
  * Read text from a character-input stream, buffering characters so as
  * to provide a means for efficient reading of characters, arrays and
@@ -41,27 +43,9 @@ import java.io.UnsupportedEncodingExcept
  * @see org.monetdb.mcl.io.BufferedMCLWriter
  */
 public final class BufferedMCLReader extends BufferedReader {
-       /** "there is currently no line", or the the type is unknown is 
represented by UNKNOWN */
-       public final static int UNKNOWN  = 0;
-       /** a line starting with ! indicates ERROR */
-       public final static int ERROR    = '!';
-       /** a line starting with % indicates HEADER */
-       public final static int HEADER   = '%';
-       /** a line starting with [ indicates RESULT */
-       public final static int RESULT   = '[';
-       /** a line which matches the pattern of prompt1 is a PROMPT */
-       public final static int PROMPT   = '.';
-       /** a line which matches the pattern of prompt2 is a MORE */
-       public final static int MORE     = ',';
-       /** a line starting with & indicates the start of a header block */
-       public final static int SOHEADER = '&';
-       /** a line starting with ^ indicates REDIRECT */
-       public final static int REDIRECT = '^';
-       /** a line starting with # indicates INFO */
-       public final static int INFO     = '#';
 
        /** The type of the last line read */
-       private int lineType = UNKNOWN;
+       private LineType lineType = UNKNOWN;
 
        /**
         * Create a buffering character-input stream that uses a
@@ -162,7 +146,7 @@ public final class BufferedMCLReader ext
         *         following constants: UNKNOWN, HEADER, ERROR, PROMPT, MORE,
         *         RESULT, SOHEADER, REDIRECT, INFO
         */
-       public int getLineType() {
+       public LineType getLineType() {
                return lineType;
        }
 
diff --git a/src/main/java/org/monetdb/mcl/io/LineType.java 
b/src/main/java/org/monetdb/mcl/io/LineType.java
new file mode 100644
--- /dev/null
+++ b/src/main/java/org/monetdb/mcl/io/LineType.java
@@ -0,0 +1,32 @@
+package org.monetdb.mcl.io;
+
+public enum LineType {
+       /** "there is currently no line", or the the type is unknown is 
represented by UNKNOWN */
+       UNKNOWN(0),
+       /** a line starting with ! indicates ERROR */
+       ERROR('!'),
+       /** a line starting with % indicates HEADER */
+       HEADER('%'),
+       /** a line starting with [ indicates RESULT */
+       RESULT('['),
+       /** a line which matches the pattern of prompt1 is a PROMPT */
+       PROMPT('.'),
+       /** a line which matches the pattern of prompt2 is a MORE */
+       MORE(','),
+       /** a line starting with & indicates the start of a header block */
+       SOHEADER('&'),
+       /** a line starting with ^ indicates REDIRECT */
+       REDIRECT('^'),
+       /** a line starting with # indicates INFO */
+       INFO('#');
+
+       private final byte chr;
+
+       LineType(int chr) {
+               this.chr = (byte) chr;
+       }
+
+       public byte chr() {
+               return this.chr;
+       }
+}
diff --git a/src/main/java/org/monetdb/mcl/net/MapiSocket.java 
b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java
+++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
@@ -31,6 +31,7 @@ import java.util.List;
 import org.monetdb.mcl.MCLException;
 import org.monetdb.mcl.io.BufferedMCLReader;
 import org.monetdb.mcl.io.BufferedMCLWriter;
+import org.monetdb.mcl.io.LineType;
 import org.monetdb.mcl.parser.MCLParseException;
 
 /**
@@ -293,7 +294,7 @@ public class MapiSocket {   /* cannot (yet
                final ArrayList<String> redirects = new ArrayList<String>();
                final List<String> warns = new ArrayList<String>();
                String err = "", tmp;
-               int lineType;
+               LineType lineType;
                do {
                        tmp = reader.readLine();
                        if (tmp == null)
@@ -301,14 +302,14 @@ public class MapiSocket { /* cannot (yet
                                                
con.getInetAddress().getHostName() + ":" +
                                                con.getPort() + ": End of 
stream reached");
                        lineType = reader.getLineType();
-                       if (lineType == BufferedMCLReader.ERROR) {
+                       if (lineType == LineType.ERROR) {
                                err += "\n" + tmp.substring(7);
-                       } else if (lineType == BufferedMCLReader.INFO) {
+                       } else if (lineType == LineType.INFO) {
                                warns.add(tmp.substring(1));
-                       } else if (lineType == BufferedMCLReader.REDIRECT) {
+                       } else if (lineType == LineType.REDIRECT) {
                                redirects.add(tmp.substring(1));
                        }
-               } while (lineType != BufferedMCLReader.PROMPT);
+               } while (lineType != LineType.PROMPT);
 
                if (err.length() > 0) {
                        close();
@@ -984,7 +985,7 @@ public class MapiSocket {   /* cannot (yet
                                        block[blockLen++] = '\n';
                                }
                                // insert 'fake' flush
-                               block[blockLen++] = BufferedMCLReader.PROMPT;
+                               block[blockLen++] = LineType.PROMPT.chr();
                                block[blockLen++] = '\n';
                                if (debug)
                                        log("RD ", "inserting prompt", true);
diff --git a/src/main/java/org/monetdb/merovingian/Control.java 
b/src/main/java/org/monetdb/merovingian/Control.java
--- a/src/main/java/org/monetdb/merovingian/Control.java
+++ b/src/main/java/org/monetdb/merovingian/Control.java
@@ -207,17 +207,17 @@ public class Control {
                mout.writeLine(database + " " + command + "\n");
                ArrayList<String> l = new ArrayList<String>();
                String tmpLine = min.readLine();
-               int linetype = min.getLineType();
-               if (linetype == BufferedMCLReader.ERROR)
+               LineType linetype = min.getLineType();
+               if (linetype == LineType.ERROR)
                        throw new MerovingianException(tmpLine.substring(6));
-               if (linetype != BufferedMCLReader.RESULT)
+               if (linetype != LineType.RESULT)
                        throw new MerovingianException("unexpected line: " + 
tmpLine);
                if (!tmpLine.substring(1).equals(RESPONSE_OK))
                        throw new MerovingianException(tmpLine.substring(1));
                tmpLine = min.readLine();
                linetype = min.getLineType();
-               while (linetype != BufferedMCLReader.PROMPT) {
-                       if (linetype != BufferedMCLReader.RESULT)
+               while (linetype != LineType.PROMPT) {
+                       if (linetype != LineType.RESULT)
                                throw new MerovingianException("unexpected 
line: " +
                                                tmpLine);
 
diff --git a/src/main/java/org/monetdb/util/SQLRestore.java 
b/src/main/java/org/monetdb/util/SQLRestore.java
--- a/src/main/java/org/monetdb/util/SQLRestore.java
+++ b/src/main/java/org/monetdb/util/SQLRestore.java
@@ -15,6 +15,7 @@ import java.util.concurrent.atomic.Atomi
 
 import org.monetdb.mcl.io.BufferedMCLReader;
 import org.monetdb.mcl.io.BufferedMCLWriter;
+import org.monetdb.mcl.io.LineType;
 import org.monetdb.mcl.net.MapiSocket;
 
 /**
@@ -53,9 +54,9 @@ public final class SQLRestore {
                                        final String line = _is.readLine();
                                        if (line == null)
                                                break;
-                                       final int result = _is.getLineType();
+                                       final LineType result = 
_is.getLineType();
                                        switch (result) {
-                                       case BufferedMCLReader.ERROR:
+                                       case ERROR:
                                                _errorMessage = line;
                                                _errorState.set(true);
                                                return;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to