Skip to content
Snippets Groups Projects
Commit a19b48ce authored by Andreas Schindlbeck's avatar Andreas Schindlbeck
Browse files

Merge origin/master

Conflicts:
	entity/Pers_entity/Pers_entity.aod
	preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
parents c76fa83a d45aee86
No related branches found
No related tags found
No related merge requests found
Showing
with 495 additions and 240 deletions
......@@ -5,13 +5,11 @@ import("system.result");
import("system.neon");
var ret = "";
var orgid = vars.getString("$field.ORG_ID");
if( orgid == "0")
{
ret = "privat";
}
var orgid = vars.getString("$field.ORGID").trim();
if(orgid == "0")
ret = null;
else if(orgid != "")
{
ret = db.cell("select NAME from ORG where ORGID = '" + orgid + "'");
}
ret = db.cell("select RELATIONID from RELATION where ORG_ID = '" + orgid + "' and PERS_ID is NULL");
result.string (ret);
\ No newline at end of file
import("system.logging");
import("system.vars");
import("system.result");
import("system.neon");
var orgid = vars.getString("$field.ORGID");
if((orgid == null || orgid.trim() == "0") && (vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW))
result.string(null);
else
result.string("Org_context");
import("system.vars");
import("system.result");
result.string("PERS join RELATION on (RELATION.PERS_ID = PERS.PERSID)");
\ No newline at end of file
result.string("PERS join RELATION on (RELATION.PERS_ID = PERS.PERSID) join ORG on ORGID = ORG_ID ");
\ No newline at end of file
......@@ -237,6 +237,60 @@
<entry>
<key>Inactive</key>
</entry>
<entry>
<key>Nein</key>
</entry>
<entry>
<key>Bestätigt</key>
</entry>
<entry>
<key>Benutzer</key>
</entry>
<entry>
<key>frei</key>
</entry>
<entry>
<key>Vorläufig</key>
</entry>
<entry>
<key>Ja</key>
</entry>
<entry>
<key>Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Betreff</key>
</entry>
<entry>
<key>Internal (2)</key>
</entry>
<entry>
<key>Company Addresses</key>
</entry>
<entry>
<key>Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Termin</key>
</entry>
<entry>
<key>Außer Haus</key>
</entry>
<entry>
<key>Abgesagt</key>
</entry>
<entry>
<key>Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>yyyyMMdd</key>
</entry>
<entry>
<key>Gebucht</key>
</entry>
<entry>
<key>Ein Gruppentermin kann nur durch den Organisator bearbeitet werden.</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
<sqlModels>
......
......@@ -317,6 +317,61 @@
<key>Inactive</key>
<value>Inaktiv</value>
</entry>
<entry>
<key>Nein</key>
</entry>
<entry>
<key>Bestätigt</key>
</entry>
<entry>
<key>Benutzer</key>
</entry>
<entry>
<key>frei</key>
</entry>
<entry>
<key>Vorläufig</key>
</entry>
<entry>
<key>Ja</key>
</entry>
<entry>
<key>Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Betreff</key>
</entry>
<entry>
<key>Internal (2)</key>
</entry>
<entry>
<key>Company Addresses</key>
<value>Firmenadressen</value>
</entry>
<entry>
<key>Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Termin</key>
</entry>
<entry>
<key>Außer Haus</key>
</entry>
<entry>
<key>Abgesagt</key>
</entry>
<entry>
<key>Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>yyyyMMdd</key>
</entry>
<entry>
<key>Gebucht</key>
</entry>
<entry>
<key>Ein Gruppentermin kann nur durch den Organisator bearbeitet werden.</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -242,6 +242,60 @@
<entry>
<key>Inactive</key>
</entry>
<entry>
<key>Nein</key>
</entry>
<entry>
<key>Bestätigt</key>
</entry>
<entry>
<key>Benutzer</key>
</entry>
<entry>
<key>frei</key>
</entry>
<entry>
<key>Vorläufig</key>
</entry>
<entry>
<key>Ja</key>
</entry>
<entry>
<key>Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Betreff</key>
</entry>
<entry>
<key>Internal (2)</key>
</entry>
<entry>
<key>Company Addresses</key>
</entry>
<entry>
<key>Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>Termin</key>
</entry>
<entry>
<key>Außer Haus</key>
</entry>
<entry>
<key>Abgesagt</key>
</entry>
<entry>
<key>Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie.</key>
</entry>
<entry>
<key>yyyyMMdd</key>
</entry>
<entry>
<key>Gebucht</key>
</entry>
<entry>
<key>Ein Gruppentermin kann nur durch den Organisator bearbeitet werden.</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -9,6 +9,7 @@
<filterview>OrgFilter_view</filterview>
<editview>OrgEdit_view</editview>
<preview>OrgPreview_view</preview>
<lookupview>OrgFilter_view</lookupview>
<entity>Org_entity</entity>
<references>
<neonViewReference>
......
......@@ -36,6 +36,10 @@
<name>12727b21-0359-4430-a9c2-54eb48e2e864</name>
<entityField>CITY</entityField>
</neonTableColumn>
<neonTableColumn>
<name>df4263f3-13db-40e4-8d6c-65b8f6b37512</name>
<entityField>IS_STANDARD</entityField>
</neonTableColumn>
</columns>
</titledListViewTemplate>
</children>
......
......@@ -36,6 +36,10 @@
<name>d8a7a26b-9d7f-44d7-bbb1-b0404d5b8b2f</name>
<entityField>COUNTRY</entityField>
</neonTableColumn>
<neonTableColumn>
<name>33bcfdad-8466-4191-b9e3-7e5d73e384a6</name>
<entityField>IS_STANDARD</entityField>
</neonTableColumn>
</children>
</genericMultipleViewTemplate>
</children>
......
......@@ -10,6 +10,7 @@
<children>
<titledListViewTemplate>
<name>TitledList_template</name>
<highlightingField>IS_STANDARD</highlightingField>
<entityField>#ENTITY</entityField>
<columns>
<neonTableColumn>
......
......@@ -43,10 +43,12 @@
<neonTableColumn>
<name>2cdfaf73-d3ee-4ad8-83ea-f50acba0335a</name>
<entityField>TITLE</entityField>
<collapse v="true" />
</neonTableColumn>
<neonTableColumn>
<name>210cc6ab-5023-4d8a-8f2e-a6cd91d994ef</name>
<entityField>FIRSTNAME</entityField>
<collapse v="true" />
</neonTableColumn>
<neonTableColumn>
<name>187bcb25-db19-4e35-8723-34764166b7bd</name>
......
......@@ -20,6 +20,11 @@
<entityField>PersAddress_dfo</entityField>
<view>AddressList_view</view>
</neonViewReference>
<neonViewReference>
<name>f4f9ba7d-b969-416b-a4c2-0be82ad1c744</name>
<entityField>OrgAddress_dfo</entityField>
<view>AddressList_view</view>
</neonViewReference>
<neonViewReference>
<name>41e3d75c-0456-4140-b651-eb45ffb53a35</name>
<entityField>PersComm_dfo</entityField>
......
......@@ -2,9 +2,9 @@
<preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.0.1">
<name>_____PREFERENCES_PROJECT</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<projectName>xRM-Basic 5</projectName>
<projectName>xRM-Basic-5</projectName>
<jditoMaxContentSize v="57671680" />
<calendarCategories>
<calendarCategoriesEvent>
<entry>
<key>Meeting</key>
<value></value>
......@@ -14,21 +14,7 @@
<value></value>
</entry>
<entry>
<key>Organisatorisch</key>
<value></value>
</entry>
</calendarCategories>
<calendarCategoriesEvent>
<entry>
<key>MeetingEvent</key>
<value></value>
</entry>
<entry>
<key>PrivatEvent</key>
<value></value>
</entry>
<entry>
<key>OrganisatorischEvent</key>
<key>Organisation</key>
<value></value>
</entry>
</calendarCategoriesEvent>
......
function IndexsearchUtils(){
this.getAffectedIdValues = function(fieldname, affectedInfoContainer, updateFn){
var affectedIds;
switch (affectedInfoContainer.action){
case "I":
affectedIds = [affectedInfoContainer.newValues[affectedInfoContainer.columns.indexOf(fieldname)]];
break;
case "U":
affectedIds = updateFn.call(null, changedIdValue);
break;
case "D":
affectedIds = [affectedInfoContainer.oldValues[affectedInfoContainer.columns.indexOf(fieldname)]];
break;
}
return affectedIds || [];
}
this.createAffectedInfoContainer = function(changedIdValue, changedTable, action, columnsFn, oldValueFn, newValueFn){
var res, internalStorage;
internalStorage = {};
res = {
id: changedIdValue
,table: changedTable
,action: action
,columns: null //null for autocomplete in the ADITO-designer
,oldValues: null
,newValues: null
};
Object.defineProperty(res, "columns", {
get: function(){
if (internalStorage["columns"] == undefined)
internalStorage["columns"] = columnsFn.call(null);
return internalStorage["columns"];
}
,set: function (v){
internalStorage["columns"] = v;
}
});
Object.defineProperty(res, "oldValues", {
get: function(){
if (internalStorage["oldValues"] == undefined)
internalStorage["oldValues"] = oldValueFn.call(null);
return internalStorage["oldValues"];
}
,set: function (v){
internalStorage["oldValues"] = v;
}
});
Object.defineProperty(res, "newValues", {
get: function(){
if (internalStorage["newValues"] == undefined)
internalStorage["newValues"] = newValueFn.call(null);
return internalStorage["newValues"];
}
,set: function (v){
internalStorage["newValues"] = v;
}
});
return res;
}
function IndexsearchUtils(){
this.getAffectedIdValues = function(fieldname, affectedInfoContainer, updateFn){
var affectedIds;
switch (affectedInfoContainer.action){
case "I":
affectedIds = [affectedInfoContainer.newValues[affectedInfoContainer.columns.indexOf(fieldname)]];
break;
case "U":
affectedIds = updateFn.call(null, affectedInfoContainer.id);
break;
case "D":
affectedIds = [affectedInfoContainer.oldValues[affectedInfoContainer.columns.indexOf(fieldname)]];
break;
}
return affectedIds || [];
}
this.createAffectedInfoContainer = function(changedIdValue, changedTable, action, columnsFn, oldValueFn, newValueFn){
var res, internalStorage;
internalStorage = {};
res = {
id: changedIdValue
,table: changedTable
,action: action
,columns: null //null for autocomplete in the ADITO-designer
,oldValues: null
,newValues: null
};
Object.defineProperty(res, "columns", {
get: function(){
if (internalStorage["columns"] == undefined)
internalStorage["columns"] = columnsFn.call(null);
return internalStorage["columns"];
}
,set: function (v){
internalStorage["columns"] = v;
}
});
Object.defineProperty(res, "oldValues", {
get: function(){
if (internalStorage["oldValues"] == undefined)
internalStorage["oldValues"] = oldValueFn.call(null);
return internalStorage["oldValues"];
}
,set: function (v){
internalStorage["oldValues"] = v;
}
});
Object.defineProperty(res, "newValues", {
get: function(){
if (internalStorage["newValues"] == undefined)
internalStorage["newValues"] = newValueFn.call(null);
return internalStorage["newValues"];
}
,set: function (v){
internalStorage["newValues"] = v;
}
});
return res;
}
}
\ No newline at end of file
......@@ -5,214 +5,167 @@ import("system.datetime");
import("system.tools");
import("system.SQLTYPES");
import("Util_lib")
/**
*Class containing utilities for SQL
*
*@class
*/
function SqlUtils()
{
var that = this;
function SqlMaskingUtils(){
//TODO: use callbacks for different handling?
/**
* masks the function cast.
* masks the function cast of standard sql
*
* @param {String} pField req
* @param {String} pDatatype req the datatypes, which should be casted to
* (varchar, integer, char, decimal or the SQLTYPES-Constants
* sowie SQLTYPES.DATE)
* @param {Integer|Interger[]} pLength req the length of the data
* decimal: [length, decimals]
* @param {String} pAlias req the database alias
* @param {String} field name of the database field that shall be castet
* @param {String} [targetDatatype] a SQLTYPES-value of the following: SQLTYPES.CHAR, SQLTYPES.VARCHAR, SQLTYPES.INTEGER,
* SQLTYPES.DECIMAL, SQLTYPES.DATE
* @param {int|int[]} targetLength specifies the length of the target data type;
* <br/>- char/varchar: length
* <br/>- decimal: [length, decimals]
* @param {String} [alias=the current alias] the alias where the statement shall be executed (this is needed to determine the database-type)
*
* @return {String}
* @return {String} sql part to be included in sql-statements
*/
this.cast = function(pField, pDatatype, pLength, pAlias)
{
if (pAlias == undefined)
pAlias = vars.getString("$sys.dbalias");
var dbtype = db.getDatabaseType(pAlias);
var func = "";
var datatype = "";
switch(Number(dbtype))
{
case db.DBTYPE_ORACLE10_CLUSTER:
case db.DBTYPE_ORACLE10_THIN:
case db.DBTYPE_ORACLE10_OCI:
func = "cast";
switch(pDatatype)
{
case "char":
case SQLTYPES.CHAR:
datatype = "char";
break;
case "varchar":
this.cast = function (field, targetDatatype, targetLength, alias){
/* Some informations if you want to add supported databaseTypes or dataTypes:
* You should consider using the _mapDefaults function-expression (details in the functions doc)
* However you shouldn't use the function in a "default"-Block of a switch-case because of the following behaviour:
* If a datatype is not supported you just have to NOT specify "sqlDataType" (leave it "undefined") -> an error is then raised
* Therefore you should explicitly define which Data-type is supported and which is not
*/
var dbType, functionName, sqlPart, sqlDataType, _mapDefaults;
if (alias == undefined)
alias = vars.getString("$sys.dbalias");
dbType = db.getDatabaseType(alias);
functionName = "cast";//overwrite this in the "switch (dbType)" if needed with your DBMS
/**
* handles default-scenarios for mapping input-targetDatatype to a string for a sql-statement
* e.g. SQLTYPES.INTEGER --> int
* @param {Number} dataType input as a value of "SQLTYPES." that will be mapped to a string
* @return {String} the mapped dataType for using in a sql-statement
*/
_mapDefaults = function (dataType){
var res;
switch(dataType)
{
case SQLTYPES.CHAR:
res = "char";
break;
case SQLTYPES.VARCHAR:
res = "char";
break;
case SQLTYPES.INTEGER:
res = "int";
break;
case SQLTYPES.DECIMAL:
res = "decimal";
break;
case SQLTYPES.DATE:
res = "date";
break;
}
return res;
}
switch (dbType) {
case db.DBTYPE_DERBY10:
switch(targetDatatype) {
case SQLTYPES.VARCHAR:
datatype = "varchar2";
break;
case "integer":
case SQLTYPES.INTEGER:
datatype = "number(22,0)";
break;
case "decimal":
case SQLTYPES.DECIMAL:
datatype = "decimal";
break;
case SQLTYPES.DATE:
datatype = "date";
// Because of a Derby bug, you can't cast INTEGER into VARCHAR
// Therefor first cast to char then to varchar
// https://issues.apache.org/jira/browse/DERBY-2072
field = "rtrim(" + cast(field, SQLTYPES.CHAR, targetLength, alias) + ")";
sqlDataType = "varchar";
break;
}
break;
case db.DBTYPE_POSTGRESQL8:
func = "cast";
switch(pDatatype)
{
case "char":
case SQLTYPES.CHAR:
datatype = "char";
break;
case "varchar":
case SQLTYPES.VARCHAR:
datatype = "varchar";
//TODO: throw error if(targetLength > 254)? https://db.apache.org/derby/docs/10.14/ref/rrefsqlj13733.html
sqlDataType = "char";
break;
case "integer":
case SQLTYPES.INTEGER:
datatype = "numeric(22,0)";
break;
case "decimal":
case SQLTYPES.DECIMAL:
datatype = "numeric";
break;
case SQLTYPES.DATE:
return pField + "::date";
}
break;
case db.DBTYPE_SQLSERVER2000:
func = "cast";
switch(pDatatype)
{
case "char":
case SQLTYPES.CHAR:
datatype = "char";
break;
case "varchar":
case SQLTYPES.VARCHAR:
datatype = "varchar";
break;
case "integer":
case SQLTYPES.INTEGER:
datatype = "int";
break;
case "decimal":
case SQLTYPES.DECIMAL:
datatype = "decimal";
break;
case SQLTYPES.DATE:
datatype = "date";
sqlDataType = _mapDefaults(dataType);
break;
}
break;
case db.DBTYPE_MYSQL4:
case db.DBTYPE_MARIADB10:
func = "cast";
switch(pDatatype)
{
case "char":
case SQLTYPES.CHAR:
datatype = "char";
break;
case "varchar":
case db.DBTYPE_MYSQL4:
switch(targetDatatype) {
case SQLTYPES.VARCHAR:
datatype = "char";
break;
case "integer":
case SQLTYPES.CHAR:
case SQLTYPES.INTEGER:
datatype = "integer";
break;
case "decimal":
case SQLTYPES.DECIMAL:
datatype = "decimal";
break;
case SQLTYPES.DATE:
datatype = "date";
sqlDataType = _mapDefaults(targetDatatype);
break;
}
break;
case db.DBTYPE_DERBY10:
func = "cast";
if(pLength > 254)
pLength = 254;
case db.DBTYPE_ORACLE10_CLUSTER:
case db.DBTYPE_ORACLE10_THIN:
case db.DBTYPE_ORACLE10_OCI:
switch(pDatatype)
{
case "varchar":
case SQLTYPES.VARCHAR:
// Because of a Derby bug, you can't cast INTEGER into VARCHAR
// Therefor first cast to char then to varchar
// https://issues.apache.org/jira/browse/DERBY-2072
func = "rtrim(" + func;
pField = " cast( " + pField + " as char("+pLength+")) ";
datatype = "varchar";
pLength += ")";
break;
case "char":
case SQLTYPES.CHAR:
datatype = "char";
datatype = "varchar2";
break;
case "integer":
case SQLTYPES.INTEGER:
datatype = "int";
datatype = "number";
targetLength = "10"
break;
case "decimal":
case SQLTYPES.CHAR:
case SQLTYPES.DECIMAL:
datatype = "numeric";
break;
case SQLTYPES.DATE:
datatype = "date";
sqlDataType = _mapDefaults(targetDatatype);
break;
}
break;
case db.DBTYPE_FIREBIRD250:
func = "cast";
case db.DBTYPE_POSTGRESQL8:
switch(pDatatype)
{
case "char":
case SQLTYPES.DATE:
case SQLTYPES.DECIMAL:
case SQLTYPES.INTEGER:
case SQLTYPES.CHAR:
datatype = "char";
break;
case "varchar":
case SQLTYPES.VARCHAR:
datatype = "varchar";
break;
case "integer":
case SQLTYPES.INTEGER:
datatype = "numeric(22,0)";
break;
case "decimal":
case SQLTYPES.DECIMAL:
datatype = "numeric";
sqlDataType = _mapDefaults(targetDatatype);
break;
}
break;
case db.DBTYPE_SQLSERVER2000:
case SQLTYPES.DATE:
datatype = "date";
case SQLTYPES.DECIMAL:
case SQLTYPES.INTEGER:
case SQLTYPES.CHAR:
case SQLTYPES.VARCHAR:
sqlDataType = _mapDefaults(targetDatatype);
break;
}
case db.DBTYPE_FIREBIRD250:
//TODO: firebird support?
break;
}
if(pLength == undefined)
pLength = "";
else if(pLength != "")
if (sqlDataType == undefined) {
throw new Error("sqlDataType");//TODO: add usefull message
}
if(targetLength == undefined)
targetLength = "";
else if(targetLength != "")
{
if(typeof(pLength == "object") && (pLength instanceof Array))
pLength = "(" + pLength.join(", ") + ")";
if(typeof(targetLength == "object") && (targetLength instanceof Array))
targetLength = "(" + targetLength.join(", ") + ")";
else
pLength = "(" + pLength + ")";
targetLength = "(" + targetLength + ")";
}
sqlPart = functionName + "(" + field + " as " + sqlDataType + targetLength + ")";
return sqlPart;
}
}
return func + "(" + pField + " as " + datatype + pLength + ")";
}
/**
*Class containing utilities for SQL
*@deprecated use SqlMaskingUtils
*@class
*/
function LegacySqlUtils()
{
var that = this;
/**
* masks the cast function for lob datatypes(clob, blob)
*
......
<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
<name>_test_clientProcess</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<process>%aditoprj%/process/_test_clientProcess/process.js</process>
<alias>Data_alias</alias>
</process>
import("system.SQLTYPES");
import("system.util");
import("system.logging");
import("system.vars");
import("system.db");
var u = {};
(function (object) {
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
function InvalidCharacterError(message) {
this.message = message;
}
InvalidCharacterError.prototype = new Error;
InvalidCharacterError.prototype.name = 'InvalidCharacterError';
// encoder
// [https://gist.github.com/999166] by [https://github.com/nignag]
object.btoa || (
object.btoa = function (input) {
var str = String(input);
for (
// initialize result and counter
var block, charCode, idx = 0, map = chars, output = '';
// if the next str index does not exist:
// change the mapping table to "="
// check if d has no fractional digits
str.charAt(idx | 0) || (map = '=', idx % 1);
// "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
output += map.charAt(63 & block >> 8 - idx % 1 * 8)
) {
charCode = str.charCodeAt(idx += 3/4);
if (charCode > 0xFF) {
throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
}
block = block << 8 | charCode;
}
return output;
});
// decoder
// [https://gist.github.com/1020396] by [https://github.com/atk]
object.atob || (
object.atob = function (input) {
var str = String(input).replace(/[=]+$/, ''); // #31: ExtendScript bad parse of /=
if (str.length % 4 == 1) {
throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
}
for (
// initialize result and counters
var bc = 0, bs, buffer, idx = 0, output = '';
// get next character
buffer = str.charAt(idx++);
// character found in table? initialize bit storage and add its ascii value;
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
// and if not first of each 4 characters,
// convert the first 8 bits to one ascii character
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
) {
// try to find character in table (0-63, not found => -1)
buffer = chars.indexOf(buffer);
}
return output;
});
}(u));
function uuidToBase64(uuid) {
return hexToBase64(uuid.replace("-", "", "g"));
}
function hexToBase64(hexstring) {
return u.btoa(hexstring.match(/\w{2}/g).map(function(a) {
return String.fromCharCode(parseInt(a, 16));
}).join(""));
}
var id;
id = util.getNewUUID();//b592c499-84d9-4066-b883-0d79b5245bc1
id = "b592c499-84d9-4066-b883-0d79b5245bc1";
id = uuidToBase64(id);
var cols = ["TESTID", "DATA", "USER_NEW", "DATE_NEW"];
var vals = [id, "datahere", vars.get("$sys.user"), vars.get("$sys.staticdate")];
var types = null;
//db.insertData("TEST", cols, types, vals);
var q = ["select " + cols.join(", ") + " from TEST where TESTID = ?", [
[id, SQLTYPES.BINARY]
]];
logging.log("query:" + db.translateStatement(q));
logging.show(db.array(db.ROW, q));
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment