172 lines
8.3 KiB
JavaScript
172 lines
8.3 KiB
JavaScript
/*
|
|
* Copyright (c) 2017, Tony Opara
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* - Redistributions of source code must retain the above copyright notice, this
|
|
* list of conditions and the following disclaimer.
|
|
* - Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* Neither the name of Google nor the names of its contributors may be used to
|
|
* endorse or promote products derived from this software without specific
|
|
* prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
var DatabaseExtension = {};
|
|
|
|
DatabaseExtension.currentConnection = {};
|
|
|
|
DatabaseExtension.handleSavedConnectionClicked = function(menuKey, connectionName) {
|
|
var jdbcConnectionInfo = {};
|
|
jdbcConnectionInfo.connectionName = connectionName;
|
|
|
|
if(menuKey === "edit"){
|
|
DatabaseExtension.handleEditConnectionClicked(connectionName);
|
|
|
|
}else if(menuKey === "delete"){
|
|
DatabaseExtension.handleDeleteConnectionClicked(connectionName);
|
|
|
|
}else if(menuKey === "connect"){
|
|
DatabaseExtension.handleConnectClicked(connectionName);
|
|
}
|
|
|
|
};
|
|
|
|
|
|
DatabaseExtension.handleConnectClicked = function(connectionName) {
|
|
|
|
$.get(
|
|
"command/database/saved-connection" + '?' + $.param({"connectionName": connectionName}),
|
|
null,
|
|
|
|
function(savedDatabaseConfig) {
|
|
|
|
if(savedDatabaseConfig){
|
|
|
|
var savedConfig = savedDatabaseConfig.savedConnections[0];
|
|
var databaseConfig = {};
|
|
databaseConfig.connectionName = savedConfig.connectionName;
|
|
databaseConfig.databaseType = savedConfig.databaseType;
|
|
databaseConfig.databaseServer = savedConfig.databaseHost;
|
|
databaseConfig.databasePort = savedConfig.databasePort;
|
|
databaseConfig.databaseUser = savedConfig.databaseUser;
|
|
databaseConfig.databasePassword = savedConfig.databasePassword;
|
|
databaseConfig.initialDatabase = savedConfig.databaseName;
|
|
databaseConfig.initialSchema = savedConfig.databaseSchema;
|
|
|
|
$.post(
|
|
"command/database/connect",
|
|
databaseConfig,
|
|
|
|
function(databaseInfo) {
|
|
|
|
if(databaseInfo){
|
|
DatabaseExtension.currentConnection.databaseInfo;
|
|
$( "#currentConnectionNameInput" ).val(databaseConfig.connectionName);
|
|
$( "#currentDatabaseTypeInput" ).val(databaseConfig.databaseType);
|
|
$( "#currentDatabaseUserInput" ).val(databaseConfig.databaseUser);
|
|
$( "#currentDatabasePasswordInput" ).val(databaseConfig.databasePassword);
|
|
$( "#currentDatabaseHostInput" ).val(databaseConfig.databaseServer);
|
|
$( "#currentDatabasePortInput" ).val(databaseConfig.databasePort);
|
|
$( "#currentInitialDatabaseInput" ).val(databaseConfig.initialDatabase);
|
|
|
|
var connectionParam = "Connection[" + databaseConfig.connectionName + "] :: "
|
|
+ "jdbc:"
|
|
+ databaseConfig.databaseType + "://"
|
|
+ databaseConfig.databaseServer + ":"
|
|
+ databaseConfig.databasePort + "/"
|
|
+ databaseConfig.initialDatabase;
|
|
|
|
$( "#connectionParameterSpan" ).text(connectionParam);
|
|
$( "#newConnectionDiv" ).hide();
|
|
$( "#sqlEditorDiv" ).show();
|
|
|
|
}else{
|
|
window.alert("Unable to establish connection to database");
|
|
}
|
|
|
|
},
|
|
"json"
|
|
).fail(function( jqXhr, textStatus, errorThrown ){
|
|
alert( textStatus + ':' + errorThrown );
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
"json"
|
|
);
|
|
};
|
|
|
|
DatabaseExtension.handleDeleteConnectionClicked = function(connectionName) {
|
|
$.ajax({
|
|
url: 'command/database/saved-connection' + '?' + $.param({"connectionName": connectionName}),
|
|
type: 'DELETE',
|
|
contentType:'application/json',
|
|
data: null,
|
|
success: function(settings) {
|
|
if(settings){
|
|
|
|
$( "#menuListUl" ).empty();
|
|
var items = [];
|
|
$.each(settings.savedConnections,function(index,savedConnection){
|
|
items.push('<li class="pure-menu-item sc-list"><a href="#" class="pure-menu-link context-menu-one">'
|
|
+ '<span class="context-menu-text" >' + savedConnection.connectionName + '</span>'
|
|
+ '<span class="sc-context-more-vert pull-right"> </span></a></li>');
|
|
})
|
|
|
|
$( "#menuListUl" ).append(items.join(''));
|
|
}
|
|
}
|
|
}).fail(function( jqXhr, textStatus, errorThrown ){
|
|
alert( textStatus + ':' + errorThrown );
|
|
});
|
|
}
|
|
|
|
DatabaseExtension.handleEditConnectionClicked = function(connectionName) {
|
|
|
|
$.get(
|
|
"command/database/saved-connection" + '?' + $.param({"connectionName": connectionName}),
|
|
null,
|
|
function(savedDatabaseConfig) {
|
|
|
|
if(savedDatabaseConfig){
|
|
|
|
var savedConfig = savedDatabaseConfig.savedConnections[0];
|
|
$( "#connectionName" ).val(savedConfig.connectionName);
|
|
$( "#databaseTypeSelect" ).val(savedConfig.databaseType);
|
|
$( "#databaseHost" ).val(savedConfig.databaseHost);
|
|
$( "#databasePort" ).val(savedConfig.databasePort);
|
|
$( "#databaseUser" ).val(savedConfig.databaseUser);
|
|
$( "#databasePassword" ).val(savedConfig.databasePassword);
|
|
$( "#initialDatabase" ).val(savedConfig.databaseName);
|
|
$( "#initialSchema" ).val(savedConfig.databaseSchema);
|
|
$( "#newConnectionControlDiv" ).hide();
|
|
$( "#editConnectionControlDiv" ).show();
|
|
$( "#newConnectionDiv" ).show();
|
|
$('#sqlEditorDiv').hide();
|
|
$("#connectionName").attr('readonly', 'readonly');
|
|
|
|
}
|
|
|
|
},
|
|
"json"
|
|
);
|
|
|
|
}
|