diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..419905d Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 3c3629e..02c47b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +/nbproject/private/ \ No newline at end of file diff --git a/JavaSybaseLink/build/built-jar.properties b/JavaSybaseLink/build/built-jar.properties index 311c34b..7105797 100644 --- a/JavaSybaseLink/build/built-jar.properties +++ b/JavaSybaseLink/build/built-jar.properties @@ -1,4 +1,4 @@ -#Tue, 07 Feb 2017 08:58:12 +1100 +#Thu, 11 Jan 2018 00:44:51 -0800 -/home/rod/work/node-sybase/JavaSybaseLink= +/Users/kagovind/GSKDeveloper/JavaScript/node-sybase/JavaSybaseLink= diff --git a/JavaSybaseLink/build/classes/ExecSQLCallable.class b/JavaSybaseLink/build/classes/ExecSQLCallable.class index 4e523be..cdbed59 100644 Binary files a/JavaSybaseLink/build/classes/ExecSQLCallable.class and b/JavaSybaseLink/build/classes/ExecSQLCallable.class differ diff --git a/JavaSybaseLink/build/classes/Main.class b/JavaSybaseLink/build/classes/Main.class index 2a41277..5a7adb9 100644 Binary files a/JavaSybaseLink/build/classes/Main.class and b/JavaSybaseLink/build/classes/Main.class differ diff --git a/JavaSybaseLink/build/classes/MyProperties.class b/JavaSybaseLink/build/classes/MyProperties.class index e32bfec..ee51df4 100644 Binary files a/JavaSybaseLink/build/classes/MyProperties.class and b/JavaSybaseLink/build/classes/MyProperties.class differ diff --git a/JavaSybaseLink/build/classes/SQLRequest.class b/JavaSybaseLink/build/classes/SQLRequest.class index 0f39245..13b9d68 100644 Binary files a/JavaSybaseLink/build/classes/SQLRequest.class and b/JavaSybaseLink/build/classes/SQLRequest.class differ diff --git a/JavaSybaseLink/build/classes/StdInputReader.class b/JavaSybaseLink/build/classes/StdInputReader.class index ef4507e..692297d 100644 Binary files a/JavaSybaseLink/build/classes/StdInputReader.class and b/JavaSybaseLink/build/classes/StdInputReader.class differ diff --git a/JavaSybaseLink/build/classes/SybaseDB.class b/JavaSybaseLink/build/classes/SybaseDB.class index dce1193..d00504d 100644 Binary files a/JavaSybaseLink/build/classes/SybaseDB.class and b/JavaSybaseLink/build/classes/SybaseDB.class differ diff --git a/JavaSybaseLink/dist/JavaSybaseLink.jar b/JavaSybaseLink/dist/JavaSybaseLink.jar index 56215ad..bf8a272 100644 Binary files a/JavaSybaseLink/dist/JavaSybaseLink.jar and b/JavaSybaseLink/dist/JavaSybaseLink.jar differ diff --git a/JavaSybaseLink/dist/javadoc/ExecSQLCallable.html b/JavaSybaseLink/dist/javadoc/ExecSQLCallable.html new file mode 100644 index 0000000..689b7a1 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/ExecSQLCallable.html @@ -0,0 +1,311 @@ + + + + + + +ExecSQLCallable + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class ExecSQLCallable

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/Main.html b/JavaSybaseLink/dist/javadoc/Main.html new file mode 100644 index 0000000..ef304e7 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/Main.html @@ -0,0 +1,292 @@ + + + + + + +Main + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class Main

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/MyProperties.html b/JavaSybaseLink/dist/javadoc/MyProperties.html new file mode 100644 index 0000000..237fc24 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/MyProperties.html @@ -0,0 +1,271 @@ + + + + + + +MyProperties + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class MyProperties

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/SQLRequest.html b/JavaSybaseLink/dist/javadoc/SQLRequest.html new file mode 100644 index 0000000..8d0dc70 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/SQLRequest.html @@ -0,0 +1,235 @@ + + + + + + +SQLRequest + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class SQLRequest

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/StdInputReader.html b/JavaSybaseLink/dist/javadoc/StdInputReader.html new file mode 100644 index 0000000..3da46ea --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/StdInputReader.html @@ -0,0 +1,295 @@ + + + + + + +StdInputReader + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class StdInputReader

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/SybaseDB.html b/JavaSybaseLink/dist/javadoc/SybaseDB.html new file mode 100644 index 0000000..444fd6d --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/SybaseDB.html @@ -0,0 +1,386 @@ + + + + + + +SybaseDB + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+

Class SybaseDB

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/allclasses-frame.html b/JavaSybaseLink/dist/javadoc/allclasses-frame.html new file mode 100644 index 0000000..8111af7 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/allclasses-frame.html @@ -0,0 +1,25 @@ + + + + + + +All Classes + + + + + +

All Classes

+
+ +
+ + diff --git a/JavaSybaseLink/dist/javadoc/allclasses-noframe.html b/JavaSybaseLink/dist/javadoc/allclasses-noframe.html new file mode 100644 index 0000000..3cf140f --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/allclasses-noframe.html @@ -0,0 +1,25 @@ + + + + + + +All Classes + + + + + +

All Classes

+
+ +
+ + diff --git a/JavaSybaseLink/dist/javadoc/class-use/ExecSQLCallable.html b/JavaSybaseLink/dist/javadoc/class-use/ExecSQLCallable.html new file mode 100644 index 0000000..d1a3b1b --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/ExecSQLCallable.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class ExecSQLCallable + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
ExecSQLCallable

+
+
No usage of ExecSQLCallable
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/class-use/Main.html b/JavaSybaseLink/dist/javadoc/class-use/Main.html new file mode 100644 index 0000000..2c3485f --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/Main.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class Main + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
Main

+
+
No usage of Main
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/class-use/MyProperties.html b/JavaSybaseLink/dist/javadoc/class-use/MyProperties.html new file mode 100644 index 0000000..6375641 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/MyProperties.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class MyProperties + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
MyProperties

+
+
No usage of MyProperties
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/class-use/SQLRequest.html b/JavaSybaseLink/dist/javadoc/class-use/SQLRequest.html new file mode 100644 index 0000000..bfce6f2 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/SQLRequest.html @@ -0,0 +1,165 @@ + + + + + + +Uses of Class SQLRequest + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
SQLRequest

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/class-use/StdInputReader.html b/JavaSybaseLink/dist/javadoc/class-use/StdInputReader.html new file mode 100644 index 0000000..17a1230 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/StdInputReader.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class StdInputReader + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
StdInputReader

+
+
No usage of StdInputReader
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/class-use/SybaseDB.html b/JavaSybaseLink/dist/javadoc/class-use/SybaseDB.html new file mode 100644 index 0000000..e3e9447 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/class-use/SybaseDB.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class SybaseDB + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
SybaseDB

+
+
No usage of SybaseDB
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/constant-values.html b/JavaSybaseLink/dist/javadoc/constant-values.html new file mode 100644 index 0000000..1dbca41 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/constant-values.html @@ -0,0 +1,166 @@ + + + + + + +Constant Field Values + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

<Unnamed>.*

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/deprecated-list.html b/JavaSybaseLink/dist/javadoc/deprecated-list.html new file mode 100644 index 0000000..940764c --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/deprecated-list.html @@ -0,0 +1,123 @@ + + + + + + +Deprecated List + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/help-doc.html b/JavaSybaseLink/dist/javadoc/help-doc.html new file mode 100644 index 0000000..0c0cd9e --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/help-doc.html @@ -0,0 +1,224 @@ + + + + + + +API Help + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+ +This help file applies to API documentation generated using the standard doclet.
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-1.html b/JavaSybaseLink/dist/javadoc/index-files/index-1.html new file mode 100644 index 0000000..e93a6bc --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-1.html @@ -0,0 +1,128 @@ + + + + + + +A-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

A

+
+
addListener(SQLRequestListener) - Method in class StdInputReader
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-2.html b/JavaSybaseLink/dist/javadoc/index-files/index-2.html new file mode 100644 index 0000000..874df38 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-2.html @@ -0,0 +1,130 @@ + + + + + + +C-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

C

+
+
call() - Method in class ExecSQLCallable
+
 
+
connect() - Method in class SybaseDB
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-3.html b/JavaSybaseLink/dist/javadoc/index-files/index-3.html new file mode 100644 index 0000000..cb52f95 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-3.html @@ -0,0 +1,134 @@ + + + + + + +E-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

E

+
+
execSQL(SQLRequest) - Method in class SybaseDB
+
 
+
ExecSQLCallable - Class in <Unnamed>
+
 
+
ExecSQLCallable(Connection, DateFormat, SQLRequest) - Constructor for class ExecSQLCallable
+
 
+
execSQLJsonSimple() - Method in class ExecSQLCallable
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-4.html b/JavaSybaseLink/dist/javadoc/index-files/index-4.html new file mode 100644 index 0000000..398b8d4 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-4.html @@ -0,0 +1,136 @@ + + + + + + +M-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

M

+
+
Main - Class in <Unnamed>
+
 
+
Main(String, Integer, String, String, String, boolean) - Constructor for class Main
+
 
+
main(String[]) - Static method in class Main
+
 
+
MyProperties - Class in <Unnamed>
+
 
+
MyProperties(String) - Constructor for class MyProperties
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-5.html b/JavaSybaseLink/dist/javadoc/index-files/index-5.html new file mode 100644 index 0000000..40e8068 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-5.html @@ -0,0 +1,128 @@ + + + + + + +N-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

N

+
+
NUMBER_OF_THREADS - Static variable in class SybaseDB
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-6.html b/JavaSybaseLink/dist/javadoc/index-files/index-6.html new file mode 100644 index 0000000..cf437eb --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-6.html @@ -0,0 +1,128 @@ + + + + + + +P-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

P

+
+
properties - Variable in class MyProperties
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-7.html b/JavaSybaseLink/dist/javadoc/index-files/index-7.html new file mode 100644 index 0000000..9c0191c --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-7.html @@ -0,0 +1,128 @@ + + + + + + +R-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

R

+
+
removeListener(SQLRequestListener) - Method in class StdInputReader
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-8.html b/JavaSybaseLink/dist/javadoc/index-files/index-8.html new file mode 100644 index 0000000..18c4de0 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-8.html @@ -0,0 +1,146 @@ + + + + + + +S-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

S

+
+
safePrintln(String) - Method in class ExecSQLCallable
+
 
+
sqlRequest(SQLRequest) - Method in class Main
+
 
+
SQLRequest - Class in <Unnamed>
+
 
+
SQLRequest() - Constructor for class SQLRequest
+
 
+
startReadLoop() - Method in class StdInputReader
+
 
+
StdInputReader - Class in <Unnamed>
+
 
+
StdInputReader(boolean) - Constructor for class StdInputReader
+
 
+
SybaseDB - Class in <Unnamed>
+
 
+
SybaseDB(String, Integer, String, String, String) - Constructor for class SybaseDB
+
 
+
SybaseDB(String, Integer, String, String, String, Properties) - Constructor for class SybaseDB
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index-files/index-9.html b/JavaSybaseLink/dist/javadoc/index-files/index-9.html new file mode 100644 index 0000000..de10c5c --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index-files/index-9.html @@ -0,0 +1,130 @@ + + + + + + +T-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A C E M N P R S T  + + +

T

+
+
TYPE_DATE - Static variable in class SybaseDB
+
 
+
TYPE_TIME_STAMP - Static variable in class SybaseDB
+
 
+
+A C E M N P R S T 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/index.html b/JavaSybaseLink/dist/javadoc/index.html new file mode 100644 index 0000000..27036e4 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/index.html @@ -0,0 +1,72 @@ + + + + + + +Generated Documentation (Untitled) + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="ExecSQLCallable.html">Non-frame version</a>.</p> + + + diff --git a/JavaSybaseLink/dist/javadoc/overview-tree.html b/JavaSybaseLink/dist/javadoc/overview-tree.html new file mode 100644 index 0000000..4495a3f --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/overview-tree.html @@ -0,0 +1,137 @@ + + + + + + +Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For All Packages

+
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/package-frame.html b/JavaSybaseLink/dist/javadoc/package-frame.html new file mode 100644 index 0000000..67456ef --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/package-frame.html @@ -0,0 +1,26 @@ + + + + + + +<Unnamed> + + + + + +

<Unnamed>

+
+

Classes

+ +
+ + diff --git a/JavaSybaseLink/dist/javadoc/package-list b/JavaSybaseLink/dist/javadoc/package-list new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/package-list @@ -0,0 +1 @@ + diff --git a/JavaSybaseLink/dist/javadoc/package-summary.html b/JavaSybaseLink/dist/javadoc/package-summary.html new file mode 100644 index 0000000..bf58a4c --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/package-summary.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package <Unnamed>

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/package-tree.html b/JavaSybaseLink/dist/javadoc/package-tree.html new file mode 100644 index 0000000..1ff1845 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/package-tree.html @@ -0,0 +1,137 @@ + + + + + + + Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package <Unnamed>

+
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/package-use.html b/JavaSybaseLink/dist/javadoc/package-use.html new file mode 100644 index 0000000..7e9f1e4 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/package-use.html @@ -0,0 +1,139 @@ + + + + + + +Uses of Package + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/JavaSybaseLink/dist/javadoc/script.js b/JavaSybaseLink/dist/javadoc/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/JavaSybaseLink/dist/javadoc/stylesheet.css b/JavaSybaseLink/dist/javadoc/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/JavaSybaseLink/dist/javadoc/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/JavaSybaseLink/src/ExecSQLCallable.java b/JavaSybaseLink/src/ExecSQLCallable.java index 35be9a6..3b29f2a 100644 --- a/JavaSybaseLink/src/ExecSQLCallable.java +++ b/JavaSybaseLink/src/ExecSQLCallable.java @@ -69,20 +69,23 @@ public String execSQLJsonSimple() for (int c = 1; c< colCount+1; c++) { Object val = rs.getObject(c); - if (val == null) continue; - - int dataType = meta.getColumnType(c); - switch (dataType) - { - case SybaseDB.TYPE_TIME_STAMP: - case SybaseDB.TYPE_DATE: - String my8601formattedDate = df.format(new Date(rs.getTimestamp(c).getTime())); - row.put(columns[c], my8601formattedDate); - break; - default: - row.put(columns[c], rs.getObject(c)); - } - //System.out.println(columns[c] + ": " + dataType); + if (val == null && request.allowNull){ + row.put(columns[c], null); + continue; + } else if (val != null) { + int dataType = meta.getColumnType(c); + switch (dataType) + { + case SybaseDB.TYPE_TIME_STAMP: + case SybaseDB.TYPE_DATE: + String my8601formattedDate = df.format(new Date(rs.getTimestamp(c).getTime())); + row.put(columns[c], my8601formattedDate); + break; + default: + row.put(columns[c], rs.getObject(c)); + } + //System.out.println(columns[c] + ": " + dataType); + } else continue; } } rs.close(); diff --git a/JavaSybaseLink/src/Main.java b/JavaSybaseLink/src/Main.java index 101f423..1285398 100644 --- a/JavaSybaseLink/src/Main.java +++ b/JavaSybaseLink/src/Main.java @@ -16,43 +16,49 @@ public class Main implements SQLRequestListener { String password; SybaseDB db; StdInputReader input; + boolean allownull; public static void main(String[] args) { - Main m; - String pw = ""; - if (args.length != 5 && args.length != 4) - { - System.err.println("Expecting the arguments: host, port, dbname, username, password"); - System.exit(1); - } - if (args.length == 5) - pw = args[4]; - - m = new Main(args[0], Integer.parseInt(args[1]), args[2], args[3], pw); + Main m; + String pw = ""; + boolean allowNull = false; + if (args.length != 6 && args.length != 5 && args.length != 4) + { + System.err.println("Expecting the arguments: host, port, dbname, username, password, allownull"); + System.exit(1); + } + if (args.length > 4) { + pw = args[4]; + } + if (args.length > 5) { + allowNull = Boolean.parseBoolean(args[5]); + } + m = new Main(args[0], Integer.valueOf(Integer.parseInt(args[1])), args[2], args[3], pw, allowNull); } - public Main(String host, Integer port, String dbname, String username, String password) { - this.host = host; - this.port = port; - this.dbname = dbname; - this.username = username; - this.password = password; + public Main(String host, Integer port, String dbname, String username, String password, boolean allowNull) { + this.host = host; + this.port = port; + this.dbname = dbname; + this.username = username; + this.password = password; + this.allownull = allowNull; - input = new StdInputReader(); - input.addListener(this); + input = new StdInputReader(allowNull); + input.addListener(this); - MyProperties props = new MyProperties("sybaseConfig.properties"); - db = new SybaseDB(host, port, dbname, username, password, props.properties); - if (!db.connect()) - System.exit(1); + MyProperties props = new MyProperties("sybaseConfig.properties"); + db = new SybaseDB(host, port, dbname, username, password, props.properties); + if (!db.connect()) + System.exit(1); - // send the connected message. - System.out.println("connected"); + // send the connected message. + System.out.println("connected"); - // blocking call don't do anything under here. - input.startReadLoop(); - } + // blocking call don't do anything under here. + input.startReadLoop(); + } public void sqlRequest(SQLRequest request) { diff --git a/JavaSybaseLink/src/SQLRequest.java b/JavaSybaseLink/src/SQLRequest.java index 2327af7..c10fd59 100644 --- a/JavaSybaseLink/src/SQLRequest.java +++ b/JavaSybaseLink/src/SQLRequest.java @@ -3,8 +3,9 @@ * @author rod */ public class SQLRequest { - int msgId; - String sql; - long sentTime; - long javaStartTime; + int msgId; + String sql; + long sentTime; + long javaStartTime; + boolean allowNull; } diff --git a/JavaSybaseLink/src/StdInputReader.java b/JavaSybaseLink/src/StdInputReader.java index b99bf3e..52b00a2 100644 --- a/JavaSybaseLink/src/StdInputReader.java +++ b/JavaSybaseLink/src/StdInputReader.java @@ -15,10 +15,12 @@ public class StdInputReader { private List listeners = new ArrayList(); private BufferedReader inputBuffer = new BufferedReader(new InputStreamReader(System.in)); - - public StdInputReader() { - - } + private boolean allowNull = false; + + public StdInputReader(boolean allowNull) + { + this.allowNull = allowNull; + } public void startReadLoop() { @@ -43,6 +45,7 @@ private void sendEvent(String sqlRequest) request.msgId = (Integer)val.get("msgId"); request.sql = (String)val.get("sql"); request.javaStartTime = startTime; + request.allowNull = this.allowNull; } catch (Exception e) { request = null; diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..da97eba --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,3 @@ +files.encoding=UTF-8 +site.root.folder= +source.folder= diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..4cefdb2 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.web.clientproject + + + sybase + + + diff --git a/src/SybaseDB.js b/src/SybaseDB.js index 9820b2e..191b4fa 100644 --- a/src/SybaseDB.js +++ b/src/SybaseDB.js @@ -6,8 +6,9 @@ var fs = require("fs"); //so that it can be called properly from parent packages. var PATH_TO_JAVA_BRIDGE1 = process.env.PWD + "/node_modules/sybase/JavaSybaseLink/dist/JavaSybaseLink.jar"; var PATH_TO_JAVA_BRIDGE2 = "./JavaSybaseLink/dist/JavaSybaseLink.jar"; +//If AllaowNull is passed 'TRUE', any column's value with null will be added into JSON response as <'column_name': null> otherwise it will be ignored. -function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBridge) +function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBridge, allowNull) { this.connected = false; this.host = host; @@ -16,9 +17,14 @@ function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBri this.username = username; this.password = password; this.logTiming = (logTiming == true); + if(allowNull === undefined) { + this.allowNull = false; + } else { + this.allowNull = allowNull; + } this.pathToJavaBridge = pathToJavaBridge; - if (this.pathToJavaBridge === undefined) + if (this.pathToJavaBridge === undefined || this.pathToJavaBridge.trim() === '') { if (fs.existsSync(PATH_TO_JAVA_BRIDGE1)) this.pathToJavaBridge = PATH_TO_JAVA_BRIDGE1; @@ -35,7 +41,7 @@ function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBri Sybase.prototype.connect = function(callback) { var that = this; - this.javaDB = spawn('java',["-jar",this.pathToJavaBridge, this.host, this.port, this.dbname, this.username, this.password]); + this.javaDB = spawn('java',["-jar",this.pathToJavaBridge, this.host, this.port, this.dbname, this.username, this.password, this.allowNull]); var hrstart = process.hrtime(); this.javaDB.stdout.once("data", function(data) { diff --git a/test/test.js b/test/test.js index 190cf6f..8f9cadb 100644 --- a/test/test.js +++ b/test/test.js @@ -5,184 +5,184 @@ var P = require("bluebird"); //Configure To Connect To Your database here: var host = '10.0.0.141', - port = 5000, - user = 'sa', - pw = '', - db = "exchange_wl1"; + port = 5000, + user = 'sa', + pw = '', + db = "exchange_wl1"; describe("Node Sybase Bridge", function() { - - var subject; - var connectError; - - before(function(done){ - subject = new Sybase(host, port, db, user, pw, true); - subject.connect(function(err) { - connectError = err; - done(); - }); - }); - - after(function(done) { - subject.disconnect(); - done(); - }); - - it("Connect", function(done) { - expect(connectError).to.equal(null); - expect(subject.isConnected()).to.equal(true); - done(); - }); - - it("Simple Single Array Result", function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - subject.query("select top 1 * from accounts", function(err, data) { - - expect(err).to.equal(null); - - expect(data).to.be.a('array'); - expect(data.length).to.equal(1); - done(); - }); - - }); - - it('Should work with updates', function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - var pquery = P.promisify(subject.query, {context: subject}); - pquery("update accounts set email = 'newemail@gmail.com' where name = 'testuser17'").then(function(results){ - - console.log('updates returned: ' + JSON.stringify(results)); - console.dir(results); - - done(); - }).catch((err)=>{ - done(err); - }); - }); - - it('Should work with inserts', function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - var pquery = P.promisify(subject.query, {context: subject}); - pquery("select top 2 * from app_log\ninsert into app_log (target, date, lvel, message) values ('testing', getdate(), 'ERROR', 'msg')\ninsert into app_log (target, date, lvel, message) values ('testing2', getdate(), 'ERROR', 'msg')\nselect top 2 * from app_log").then(function(results){ - - console.log('inserts returned: ' + JSON.stringify(results)); - console.dir(results); - - done(); - }).catch((err)=>{ - done(err); - }); - }); - - it('Should work with stored procedres', function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - var pquery = P.promisify(subject.query, {context: subject}); - pquery("exec sp_test").then(function(results){ - - console.log('inserts returned: ' + JSON.stringify(results)); - console.dir(results); - - done(); - }).catch((err)=>{ - done(err); - }); - }); - - it("Multiple async Calls (batch)", function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - var pquery = P.promisify(subject.query, {context: subject}); - - var pArray = []; - - for (var i=0; i<5; i++) - { - pArray.push(pquery("select top 1 * from accounts")); - } - - P.all(pArray).then(function(results) { - - console.log(JSON.stringify(results)); - - results.forEach(function(data) { - expect(data).to.be.a('array'); - expect(data.length).to.equal(1); - }); - done(); - - }).catch(function(err) { - done(err); - }); - }); - - it("Batch with one error", function(done) { - - if (!subject.isConnected()) { - expect(connectError).to.equal(null); - done(); - return; - } - - var pquery = P.promisify(subject.query, {context: subject}); - - var pArray = []; - - var badEgg = pquery("select * from tableThatDoesntExist"); - for (var i=0; i<5; i++) - { - pArray.push(pquery("select top 1 * from accounts")); - } - - P.all(pArray).then(function(results) { - - console.log(JSON.stringify(results)); - - results.forEach(function(data) { - expect(data).to.be.a('array'); - expect(data.length).to.equal(1); - }); - - }).catch(function(err) { - done(err); - }); - - badEgg.then(function(results) { - done(new Error("Expected an error from this call.")); - }).catch(function(err) { - //console.log("error:" + err.message); - expect(err.message).to.contain("tableThatDoesntExist"); - done(); - }); - }); + + var subject; + var connectError; + + before(function(done){ + subject = new Sybase(host, port, db, user, pw, '', ' ', true); + subject.connect(function(err) { + connectError = err; + done(); + }); + }); + + after(function(done) { + subject.disconnect(); + done(); + }); + + it("Connect", function(done) { + expect(connectError).to.equal(null); + expect(subject.isConnected()).to.equal(true); + done(); + }); + + it("Simple Single Array Result", function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + subject.query("select top 1 * from accounts", function(err, data) { + + expect(err).to.equal(null); + + expect(data).to.be.a('array'); + expect(data.length).to.equal(1); + done(); + }); + + }); + + it('Should work with updates', function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + var pquery = P.promisify(subject.query, {context: subject}); + pquery("update accounts set email = 'newemail@gmail.com' where name = 'testuser17'").then(function(results){ + + console.log('updates returned: ' + JSON.stringify(results)); + console.dir(results); + + done(); + }).catch((err)=>{ + done(err); + }); + }); + + it('Should work with inserts', function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + var pquery = P.promisify(subject.query, {context: subject}); + pquery("select top 2 * from app_log\ninsert into app_log (target, date, lvel, message) values ('testing', getdate(), 'ERROR', 'msg')\ninsert into app_log (target, date, lvel, message) values ('testing2', getdate(), 'ERROR', 'msg')\nselect top 2 * from app_log").then(function(results){ + + console.log('inserts returned: ' + JSON.stringify(results)); + console.dir(results); + + done(); + }).catch((err)=>{ + done(err); + }); + }); + + it('Should work with stored procedres', function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + var pquery = P.promisify(subject.query, {context: subject}); + pquery("exec sp_test").then(function(results){ + + console.log('inserts returned: ' + JSON.stringify(results)); + console.dir(results); + + done(); + }).catch((err)=>{ + done(err); + }); + }); + + it("Multiple async Calls (batch)", function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + var pquery = P.promisify(subject.query, {context: subject}); + + var pArray = []; + + for (var i=0; i<5; i++) + { + pArray.push(pquery("select top 1 * from accounts")); + } + + P.all(pArray).then(function(results) { + + console.log(JSON.stringify(results)); + + results.forEach(function(data) { + expect(data).to.be.a('array'); + expect(data.length).to.equal(1); + }); + done(); + + }).catch(function(err) { + done(err); + }); + }); + + it("Batch with one error", function(done) { + + if (!subject.isConnected()) { + expect(connectError).to.equal(null); + done(); + return; + } + + var pquery = P.promisify(subject.query, {context: subject}); + + var pArray = []; + + var badEgg = pquery("select * from tableThatDoesntExist"); + for (var i=0; i<5; i++) + { + pArray.push(pquery("select top 1 * from accounts")); + } + + P.all(pArray).then(function(results) { + + console.log(JSON.stringify(results)); + + results.forEach(function(data) { + expect(data).to.be.a('array'); + expect(data.length).to.equal(1); + }); + + }).catch(function(err) { + done(err); + }); + + badEgg.then(function(results) { + done(new Error("Expected an error from this call.")); + }).catch(function(err) { + //console.log("error:" + err.message); + expect(err.message).to.contain("tableThatDoesntExist"); + done(); + }); + }); }); \ No newline at end of file