Files
luos/workflow/engine/js/dbConnections/main.js
Luis Fernando Saisa Lopez 59d2912863 BUG 14056 "Oracle Connection Parameters with TNS" SOLVED
- Oracle Connection Parameters with TNS.
- Problema resuelto, en DATABASE CONNECTIONS al hacer click en New, en el dynaform "Add new Database Source" se agrega
  dos campos un dropdown "Select type connection" con dos opciones "NORMAL y TNS" y el campo de tipo "TNS", estos nuevos
  campos se muestran cuando se selecciona la opcion en engine "oracle" si es en otro caso se ocultaran. Tambien se adiciona
  dos nuevos campos en la tabla "DB_SOURCE" que son: "DBS_CONNECTION_TYPE" y "DBS_TNS".
  Cuando se selecciona "oracle" y tipo de conexion "TNS", al llenar los datos al dynaform y hacer click en el boton
  "test connection" realizara la prueba con exito o falla.
  Cuando se selecciona "oracle" y tipo de conexion "NORMAL", al llenar los datos al dynaform y hacer click en el boton
  "test connection" realizara la conexion tal como se hacia anteriomente.
2014-05-16 18:05:34 -04:00

577 lines
16 KiB
JavaScript
Executable File

/*
* Data base connection javascript routines
* @Author Erik Amatu Ortiz <erik@colosa.com>
* @Update date May 20th, 2009
*/
var PROCESS_REQUEST_FILE = '../dbConnections/dbConnectionsAjax';
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, "");
}
var oPanel;
function newDbConnection() {
oPanel = new leimnud.module.panel();
oPanel.options = {
limit :true,
size :{w:450,h:380},
position:{x:0,y:0,center:true},
title :G_STRINGS.ID_DBS_NEW,
theme :"processmaker",
statusBar:false,
control :{resize:false,roll:false,drag:true},
fx :{modal:true,opacity:true,blinkToFront:false,fadeIn:false,drag:true}
};
oPanel.events = {
remove: function() { delete(oPanel); }.extend(this)
};
oPanel.make();
oPanel.loader.show();
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: 'action=newDdConnection'
});
oRPC.callback = function(rpc) {
oPanel.loader.hide();
var scs=rpc.xmlhttp.responseText.extractScript();
oPanel.addContent(rpc.xmlhttp.responseText);
scs.evalScript();
$('form[CREATE]').disabled = true;
}.extend(this);
oRPC.make();
};
var saveDBConnection = function() {
if( getField('DBS_PORT').value.trim() == '' || getField('DBS_PORT').value.trim() == '0' ) {
onChangeType();
}
var type = $('form[DBS_TYPE]').value;
var server = $('form[DBS_SERVER]').value;
var db_name = $('form[DBS_DATABASE_NAME]').value;
var user = $('form[DBS_USERNAME]').value;
var passwd = $('form[DBS_PASSWORD]').value;
var port = $('form[DBS_PORT]').value;
var desc = $('form[DBS_DESCRIPTION]').value;
var enc = $('form[DBS_ENCODE]').value;
var connectionType = getField("DBS_CONNECTION_TYPE").value;
var tns = getField("DBS_TNS").value;
var uri = 'action=saveConnection&type='+type+'&server='+server+'&db_name='+db_name+'&user='+user+'&passwd='+passwd+'&port='+port+'&desc='+desc+'&enc='+enc + "&connectionType=" + connectionType + "&tns=" + tns;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: uri
});
oRPC.callback = function(rpc){
oPanel.clearContent();
oPanel.addContent(rpc.xmlhttp.responseText);
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
async : false,
method: 'POST',
args : 'action=showConnections'
});
oRPC.make();
mainPanel.clearContent();
mainPanel.addContent(oRPC.xmlhttp.responseText);
oPanel.remove();
}.extend(this);
oRPC.make();
};
function saveEditDBConnection()
{
if( getField('DBS_PORT').value.trim() == '' || getField('DBS_PORT').value.trim() == '0' ) {
onChangeType();
}
var dbs_uid = currentEditDBS_UID;
var type = $('form[DBS_TYPE]').value;
var server = $('form[DBS_SERVER]').value;
var db_name = $('form[DBS_DATABASE_NAME]').value;
var user = $('form[DBS_USERNAME]').value;
var passwd = $('form[DBS_PASSWORD]').value;
var port = $('form[DBS_PORT]').value;
var desc = $('form[DBS_DESCRIPTION]').value;
var enc = $('form[DBS_ENCODE]').value;
var connectionType = getField("DBS_CONNECTION_TYPE").value;
var tns = getField("DBS_TNS").value;
var uri = 'action=saveEditConnection&type='+type+'&server='+server+'&db_name='+db_name+'&user='+user+'&passwd='+passwd+'&port='+port+'&dbs_uid='+dbs_uid+'&desc='+desc+'&enc='+enc + "&connectionType=" + connectionType + "&tns=" + tns;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: uri
});
oRPC.callback = function(rpc){
oPanel.clearContent();
oPanel.addContent(rpc.xmlhttp.responseText);
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
async : false,
method: 'POST',
args : 'action=showConnections'
});
oRPC.make();
mainPanel.clearContent();
mainPanel.addContent(oRPC.xmlhttp.responseText);
oPanel.remove();
}.extend(this);
oRPC.make();
}
var currentEditDBS_UID;
function editDbConnection(DBS_UID)
{
currentEditDBS_UID = DBS_UID;
oPanel = new leimnud.module.panel();
oPanel.options = {
limit :true,
size :{w:450,h:380},
position:{x:0,y:0,center:true},
title :G_STRINGS.ID_DBS_EDIT,
theme :"processmaker",
statusBar:false,
control :{resize:false,roll:false,drag:false},
fx :{modal:true,opacity:true,blinkToFront:false,fadeIn:false,drag:false}
};
oPanel.events = {
remove: function() { delete(oPanel); }.extend(this)
};
oPanel.make();
oPanel.loader.show();
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: 'action=editDdConnection&DBS_UID=' + DBS_UID
});
oRPC.callback = function(rpc) {
oPanel.loader.hide();
var scs=rpc.xmlhttp.responseText.extractScript();
oPanel.addContent(rpc.xmlhttp.responseText);
scs.evalScript();
$('form[CREATE]').disabled = true;
}.extend(this);
oRPC.make();
}
function deleteDbConnection(DBS_UID,PRO_UID)
{
isokDependent = ajax_function(PROCESS_REQUEST_FILE,'loadInfoAssigConnecctionDB','DBS_UID='+DBS_UID+'&PRO_UID='+PRO_UID,'POST');
if(!isokDependent){
msgBox(G_STRINGS.ID_DB_CONNECTION_ASSIGN,"alert");
return;
}
new leimnud.module.app.confirm().make({
label:G_STRINGS.ID_MSG_CONFIRM_REMOVE_DBS,
action:function(){
var uri = 'action=deleteDbConnection&dbs_uid='+DBS_UID;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: uri
});
oRPC.callback = function(rpc){
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
async : false,
method: 'POST',
args : 'action=showConnections'
});
oRPC.make();
mainPanel.clearContent();
mainPanel.addContent(oRPC.xmlhttp.responseText);
}.extend(this);
oRPC.make();
}.extend(this)
});
}
function $(id){
return document.getElementById(id);
}
function AJAX()
{
try {
xmlhttp = new XMLHttpRequest();
}
catch(generic_error) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (microsoft_old_error) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (microsoft_error) {
xmlhttp = false;
}
}
}
return xmlhttp;
}
var currentPopupWindow;
function testDBConnection()
{
if(validateFields()) {
var type = $('form[DBS_TYPE]').value;
var server= $('form[DBS_SERVER]').value;
var db_name = $('form[DBS_DATABASE_NAME]').value;
var user = $('form[DBS_USERNAME]').value;
var passwd = $('form[DBS_PASSWORD]').value;
var port = $('form[DBS_PORT]').value;
var connectionType = getField("DBS_CONNECTION_TYPE").value;
var tns = getField("DBS_TNS").value;
if(port.trim() == ''){
port = 'default';
}
var myPanel = new leimnud.module.panel();
currentPopupWindow = myPanel;
myPanel.options = {
limit :true,
size:{w:500,h:400},
position:{center:true},
title: G_STRINGS.DBCONNECTIONS_TEST,
theme: "processmaker",
control: { close: false, roll: false, drag: true, resize: false},
fx: {
shadow :true,
blinkToFront:true,
opacity :true,
drag:true,
modal: true
}
};
myPanel.make();
myPanel.loader.show();
var requestfile = PROCESS_REQUEST_FILE;
var uri = 'action=showTestConnection&type='+type+'&server='+server+'&db_name='+db_name+'&user='+user+'&passwd='+passwd+'&port='+port + "&connectionType=" + connectionType + "&tns=" + tns;
var ajax = AJAX();
ajax.open("POST", requestfile, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
currentPopupWindow.clearContent();
currentPopupWindow.addContent(ajax.responseText);
myPanel.command(myPanel.loader.hide);
testHost(1);
}
}
ajax.send(uri);
}
}
var resultset = true;
var mainRequest;
mainRequestAbort=false;
function testHost(step)
{
mainRequestAbort = false;
$("test_"+step).style.display = "block";
var type = $('form[DBS_TYPE]').value;
var server= $('form[DBS_SERVER]').value;
var db_name = $('form[DBS_DATABASE_NAME]').value;
var user = $('form[DBS_USERNAME]').value;
if($('form[DBS_PASSWORD]').value != '') {
var passwd = $('form[DBS_PASSWORD]').value;
} else {
var passwd = 'none';
}
if($('form[DBS_PORT]').value.trim() != '') {
var port = $('form[DBS_PORT]').value;
} else {
var port = 'none';
}
var connectionType = getField("DBS_CONNECTION_TYPE").value;
var tns = getField("DBS_TNS").value;
var requestfile = PROCESS_REQUEST_FILE;
var uri = 'action=testConnection&step='+step+'&type='+type+'&server='+server+'&db_name='+db_name+'&user='+user+'&port='+port+'&passwd='+passwd + "&connectionType=" + connectionType + "&tns=" + tns;
var ajax = AJAX();
mainRequest = ajax;
ajax.open("POST", requestfile, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
try{
response = ajax.responseText.trim();
oresp = response.split(',');
result = oresp[0].trim();
msg = oresp[1].trim();
if( result == 'SUCCESSFULL' ) {
$('status_'+step).innerHTML = '';
if(msg != '') {
$('status_'+step).innerHTML = '<img src="/images/row_down.png" width="15" height="11" align="left" border="0"/><b>'+G_STRINGS.DBCONNECTIONS_MSGR+'<font color=#000>'+msg+'</b></font><br/>';
}
$('status_'+step).innerHTML += '<img src="/images/ok.png" width="13" height="13" align="left" border="0"/><b>'+G_STRINGS.DBCONNECTIONS_MSGT+' <font color="#749AF9">'+G_STRINGS.DBCONNECTIONS_MSGS+'</b></font>';
}
else {
if( result == 'FAILED' ) {
$('status_'+step).innerHTML = '<img src="/images/alert.gif" width="12" height="12" align="left" border="0"/><b>'+G_STRINGS.DBCONNECTIONS_MSGR+' <font color=red>'+msg+'</b></font><br/>';
$('status_'+step).innerHTML += '<img src="/images/cross.gif" width="12" height="12" align="left" border="0"/><b>'+G_STRINGS.DBCONNECTIONS_MSGT+' <font color=red>'+G_STRINGS.DBCONNECTIONS_MSG2+'</b></font>';
resultset = false;
} else {
alert(response);
return;
}
}
step += 1;
if(!mainRequestAbort) {
testHost(step);
} else {
return;
}
} catch (e) {
if(resultset){
$('form[CREATE]').disabled = false;
}
else {
resultset = true;
$('form[CREATE]').disabled = true;
}
$('bnt_abort').style.display = 'none';
$('bnt_ok').style.display = 'block';
return;
};
} else {
var html = "<img src='/images/activityanimation.gif'><br/><center>"+G_STRINGS.DBCONNECTIONS_MSG3+"....</center>"; //
$('status_'+step).innerHTML = html;
}
}
ajax.send(uri);
}
function abortTestConnection()
{
mainRequestAbort = true;
mainRequest.abort();
currentPopupWindow.clearContent();
currentPopupWindow.addContent("<br/><br/><center><font color=red><b>"+G_STRINGS.DBCONNECTIONS_MSGA+"</b></font></center>");
setTimeout("currentPopupWindow.remove()",2000);
}
function cancelTestConnection()
{
currentPopupWindow.remove();
}
function validateFields()
{
if (FLAG_DBS_TNS == 1) {
var res = true;
var tns = new input(getField("DBS_TNS"));
if($("form[DBS_TNS]").value == "") {
tns.failed();
res = false;
} else {
tns.passed();
}
} else {
if( getField('DBS_PORT').value.trim() == '' || getField('DBS_PORT').value.trim() == '0' ) {
onChangeType();
}
var res = true;
var o = new input(getField('DBS_SERVER'));
if($('form[DBS_SERVER]').value == '') {
//new leimnud.module.app.alert().make({label: G_STRINGS.DBCONNECTIONS_MSG4});
o.failed();
res = false;
} else
o.passed();
var o = new input(getField('DBS_DATABASE_NAME'));
if($('form[DBS_DATABASE_NAME]').value == '') {
//new leimnud.module.app.alert().make({label: G_STRINGS.DBCONNECTIONS_MSG5});
o.failed();
res = false;
} else
o.passed();
var o = new input(getField('DBS_USERNAME'));
if($('form[DBS_USERNAME]').value == '') {
//new leimnud.module.app.alert().make({label: G_STRINGS.DBCONNECTIONS_MSG6});
o.failed();
res = false;
} else
o.passed();
/*var o = new input(getField('DBS_PORT'));
if($('form[DBS_PORT]').value == '') {
o.failed();
res = false;
} else
o.passed();*/
var o = new input(getField('DBS_TYPE'));
if($('form[DBS_TYPE]').value == '0') {
o.failed();
res = false;
} else
o.passed();
oType = getField('DBS_TYPE');
if( oType.value != 'mssql' && oType.value != 'oracle' ){
var o = new input(getField('DBS_ENCODE'));
if($('form[DBS_ENCODE]').value == '0') {
o.failed();
res = false;
} else
o.passed();
}
}
if(!res){
new leimnud.module.app.alert().make({label: G_STRINGS.DBCONNECTIONS_ALERT});
}
return res;
}
var onChangeType = function() {
var oAux = getField('DBS_PORT');
switch(getField('DBS_TYPE').value) {
case 'mysql':
oAux.value = '3306';
break;
case 'pgsql':
oAux.value = '5432';
break;
case 'mssql':
oAux.value = '1433';
break;
case 'oracle':
oAux.value = '1521';
break;
default:
oAux.value = '';
}
};
var FLAG_DBS_TNS = 0;
function showEncodes(pre){
oType = getField('DBS_TYPE');
//if( oType.value != 'mssql' && oType.value != 'oracle' ){
if( oType.value != 'oracle' ){
FLAG_DBS_TNS = 0;
hideRowById("DBS_CONNECTION_TYPE");
getField("DBS_TNS").value = "";
hideRowById("DBS_TNS");
showRowById("DBS_SERVER");
showRowById("DBS_DATABASE_NAME");
showRowById("DBS_USERNAME");
showRowById("DBS_PASSWORD");
showRowById("DBS_PORT");
showRowById('DBS_ENCODE');
var o = new input(getField('DBS_TYPE'));
if($('form[DBS_TYPE]').value == '0') {
o.failed();
res = false;
} else
o.passed();
var o = getField('DBS_TYPE');
var oRPC = new leimnud.module.rpc.xmlhttp({
url : PROCESS_REQUEST_FILE,
args: 'action=showEncodes&engine='+o.value
});
oRPC.callback = function(rpc){
var oEnc = getField('DBS_ENCODE');
response = eval('{'+oRPC.xmlhttp.responseText+'}');
oEnc.options.length = 0;
//set news
for(i=0; i<response.length; i++){
var newOption = new Option(response[i][1], response[i][0]);
oEnc.options[i] = newOption;
}
if(pre != null)
oEnc.value = pre;
var o = new input(getField('DBS_ENCODE'));
if($('form[DBS_ENCODE]').value == '0') {
o.failed();
res = false;
} else
o.passed();
}.extend(this);
oRPC.make();
} else {
hideRowById('DBS_ENCODE');
showRowById("DBS_CONNECTION_TYPE");
showRowById("DBS_SERVER");
showRowById("DBS_DATABASE_NAME");
showRowById("DBS_USERNAME");
showRowById("DBS_PASSWORD");
showRowById("DBS_PORT");
var connectionType = getField("DBS_CONNECTION_TYPE").value;
if (connectionType == "TNS") {
FLAG_DBS_TNS = 1;
document.getElementById("userName").style.display = "none";
removeRequiredById("DBS_USERNAME");
showRowById("DBS_TNS");
hideRowById("DBS_SERVER");
hideRowById("DBS_DATABASE_NAME");
hideRowById("DBS_PORT");
getField("DBS_USERNAME").required = false;
getField("DBS_PASSWORD").required = false;
} else {
FLAG_DBS_TNS = 0;
getField("DBS_TNS").value = "";
hideRowById("DBS_TNS");
document.getElementById("userName").style.display = "inline";
enableRequiredById("DBS_USERNAME");
}
}
}