Skip to content

Commit 03deaed

Browse files
Merge pull request #34 from vinayagasundar/Development
Added Delete Option
2 parents 4d06655 + ae33e79 commit 03deaed

5 files changed

Lines changed: 219 additions & 5 deletions

File tree

debug-db/src/main/assets/debugDbHome/js/app.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ function inflateData(result){
168168
extend: 'selected', // Bind to Selected row
169169
text: 'Edit',
170170
name: 'edit' // do not change name
171+
},
172+
{
173+
extend: 'selected',
174+
text: 'Delete',
175+
name: 'delete'
171176
}
172177
]
173178
})
@@ -184,6 +189,26 @@ function inflateData(result){
184189
//send update table data request to server
185190
updateTableData(data, callback);
186191
});
192+
193+
194+
//attach delete-updated listener
195+
$(tableId).on('delete-row.dt', function (e, updatedRowData, callback) {
196+
var deleteRowDataArray = JSON.parse(updatedRowData);
197+
198+
console.log(deleteRowDataArray);
199+
200+
//add value for each column
201+
var data = columnHeader;
202+
for(var i = 0; i < data.length; i++) {
203+
data[i].value = deleteRowDataArray[i].value;
204+
data[i].dataType = deleteRowDataArray[i].dataType;
205+
206+
}
207+
208+
//send delete table data request to server
209+
deleteTableData(data, callback);
210+
});
211+
187212
// hack to fix alignment issue when scrollX is enabled
188213
$(".dataTables_scrollHeadInner").css({"width":"100%"});
189214
$(".table ").css({"width":"100%"});
@@ -235,6 +260,45 @@ function updateTableData(updatedData, callback) {
235260
})
236261
}
237262

263+
264+
function deleteTableData(deleteData, callback) {
265+
266+
var selectedTableElement = $("#table-list .list-group-item.selected");
267+
var filteredUpdatedData = deleteData.map(function(columnData){
268+
return {
269+
title: columnData.title,
270+
isPrimary: columnData.isPrimary,
271+
value: columnData.value,
272+
dataType: columnData.dataType
273+
}
274+
});
275+
276+
console.log(filteredUpdatedData);
277+
278+
//build request parameters
279+
var requestParameters = {};
280+
requestParameters.dbName = selectedTableElement.attr('data-db-name');
281+
requestParameters.tableName = selectedTableElement.attr('data-table-name');;
282+
requestParameters.deleteData = encodeURIComponent(JSON.stringify(filteredUpdatedData));
283+
284+
//execute request
285+
$.ajax({
286+
url: "deleteTableData",
287+
type: 'GET',
288+
data: requestParameters,
289+
success: function(response) {
290+
response = JSON.parse(response);
291+
if(response.isSuccessful){
292+
console.log("Data deleted successfully");
293+
callback(true);
294+
} else {
295+
console.log("Data delete failed");
296+
callback(false);
297+
}
298+
}
299+
})
300+
}
301+
238302
function showSuccessInfo(message){
239303
var snackbar = document.getElementById("snackbar")
240304
snackbar.className = "show";

debug-db/src/main/assets/debugDbHome/js/dataTables.altEditor.free.js

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,34 @@
412412

413413
data += "<form name='altEditor-form' role='form'>";
414414
for (var i in columnDefs) {
415+
var cellData = adata.data()[0][i];
415416

416-
data += "<div class='form-group'><label for='" + columnDefs[i].title + "'>" + columnDefs[i].title + " : </label><input type='hidden' id='" + columnDefs[i].title + "' name='" + columnDefs[i].title + "' placeholder='" + columnDefs[i].title + "' style='overflow:hidden' class='form-control' value='" + adata.data()[0][i] + "' >" + adata.data()[0][i] + "</input></div>";
417+
var inputType = "text";
418+
switch (cellData.dataType) {
419+
case 'integer':
420+
inputType = "number";
421+
break;
422+
case 'real':
423+
inputType = "number";
424+
break;
425+
case 'boolean':
426+
inputType = "checkbox";
427+
break;
428+
case 'long':
429+
inputType = "number";
430+
break;
431+
case 'float':
432+
inputType = "number";
433+
break;
434+
case 'text':
435+
inputType = "text";
436+
break;
437+
case 'string_set':
438+
inputType = "text";
439+
break;
440+
}
417441

442+
data += "<div class='form-group'><label for='" + columnDefs[i].title + "'>" + columnDefs[i].title + " : </label><input type='hidden' data-type='" + inputType + "' id='" + columnDefs[i].title + "' name='" + columnDefs[i].title + "' placeholder='" + columnDefs[i].title + "' style='overflow:hidden' class='form-control' value='" + cellData.value + "' >" + cellData.value + "</input></div>";
418443
}
419444
data += "</form>";
420445

@@ -434,6 +459,22 @@
434459
var that = this;
435460
var dt = this.s.dt;
436461

462+
var data = [];
463+
464+
$('form[name="altEditor-form"] input').each(function(i) {
465+
var addToList = true;
466+
var value = $(this).val();
467+
value = $(this).val();
468+
469+
console.log("Value : " + value);
470+
if (addToList){
471+
data.push({
472+
"value": value,
473+
"dataType": $(this).attr('data-type')
474+
});
475+
}
476+
});
477+
437478
$('#altEditor-modal .modal-body .alert').remove();
438479

439480
var message = '<div class="alert alert-success" role="alert">\
@@ -442,11 +483,25 @@
442483

443484
$('#altEditor-modal .modal-body').append(message);
444485

445-
dt.row({
446-
selected: true
447-
}).remove();
448486

449-
dt.draw();
487+
that._emitEvent("delete-row", [
488+
JSON.stringify(data),
489+
function(isDeleted) {
490+
//remove existing alert elements
491+
if (isDeleted) {
492+
dt.row({
493+
selected: true
494+
}).remove();
495+
496+
dt.draw();
497+
}
498+
499+
//remove existing alert elements
500+
$('#altEditor-modal').modal('hide');
501+
}
502+
]);
503+
504+
450505

451506
},
452507

debug-db/src/main/java/com/amitshekhar/server/RequestHandler.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ public void handle(Socket socket) throws IOException {
106106
} else if (route.startsWith("updateTableData")) {
107107
final String response = updateTableDataAndGetResponse(route);
108108
bytes = response.getBytes();
109+
} else if (route.startsWith("deleteTableData")) {
110+
final String response = deleteTableDataAndGetResponse(route);
111+
bytes = response.getBytes();
109112
} else if (route.startsWith("query")) {
110113
final String response = executeQueryAndGetResponse(route);
111114
bytes = response.getBytes();
@@ -278,4 +281,27 @@ private String updateTableDataAndGetResponse(String route) {
278281
}
279282
}
280283

284+
285+
private String deleteTableDataAndGetResponse(String route) {
286+
UpdateRowResponse response;
287+
try {
288+
Uri uri = Uri.parse(URLDecoder.decode(route, "UTF-8"));
289+
String tableName = uri.getQueryParameter("tableName");
290+
String updatedData = uri.getQueryParameter("deleteData");
291+
List<RowDataRequest> rowDataRequests = mGson.fromJson(updatedData, new TypeToken<List<RowDataRequest>>() {
292+
}.getType());
293+
if (Constants.APP_SHARED_PREFERENCES.equals(mSelectedDatabase)) {
294+
response = PrefHelper.deleteRow(mContext, tableName, rowDataRequests);
295+
} else {
296+
response = DatabaseHelper.deleteRow(mDatabase, tableName, rowDataRequests);
297+
}
298+
return mGson.toJson(response);
299+
} catch (Exception e) {
300+
e.printStackTrace();
301+
response = new UpdateRowResponse();
302+
response.isSuccessful = false;
303+
return mGson.toJson(response);
304+
}
305+
}
306+
281307
}

debug-db/src/main/java/com/amitshekhar/utils/DatabaseHelper.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,49 @@ public static UpdateRowResponse updateRow(SQLiteDatabase db, String tableName, L
239239
return updateRowResponse;
240240
}
241241

242+
243+
public static UpdateRowResponse deleteRow(SQLiteDatabase db, String tableName, List<RowDataRequest> rowDataRequests) {
244+
245+
UpdateRowResponse updateRowResponse = new UpdateRowResponse();
246+
247+
if (rowDataRequests == null || tableName == null) {
248+
updateRowResponse.isSuccessful = false;
249+
return updateRowResponse;
250+
}
251+
252+
253+
String whereClause = null;
254+
List<String> whereArgsList = new ArrayList<>();
255+
256+
for (RowDataRequest rowDataRequest : rowDataRequests) {
257+
if (rowDataRequest.isPrimary) {
258+
if (whereClause == null) {
259+
whereClause = rowDataRequest.title + "=? ";
260+
} else {
261+
whereClause = "and " + rowDataRequest.title + "=? ";
262+
}
263+
whereArgsList.add(rowDataRequest.value);
264+
}
265+
}
266+
267+
if (whereArgsList.size() == 0) {
268+
updateRowResponse.isSuccessful = true;
269+
return updateRowResponse;
270+
}
271+
272+
String[] whereArgs = new String[whereArgsList.size()];
273+
274+
for (int i = 0; i < whereArgsList.size(); i++) {
275+
whereArgs[i] = whereArgsList.get(i);
276+
}
277+
278+
db.delete(tableName, whereClause, whereArgs);
279+
updateRowResponse.isSuccessful = true;
280+
return updateRowResponse;
281+
}
282+
283+
284+
242285
public static TableDataResponse exec(SQLiteDatabase database, String sql) {
243286
TableDataResponse tableDataResponse = new TableDataResponse();
244287
tableDataResponse.isSelectQuery = false;

debug-db/src/main/java/com/amitshekhar/utils/PrefHelper.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,4 +198,30 @@ public static UpdateRowResponse updateRow(Context context, String tableName, Lis
198198

199199
return updateRowResponse;
200200
}
201+
202+
203+
public static UpdateRowResponse deleteRow(Context context, String tableName, List<RowDataRequest> rowDataRequests) {
204+
UpdateRowResponse updateRowResponse = new UpdateRowResponse();
205+
206+
if (tableName == null) {
207+
return updateRowResponse;
208+
}
209+
210+
RowDataRequest rowDataKey = rowDataRequests.get(0);
211+
212+
String key = rowDataKey.value;
213+
214+
215+
SharedPreferences preferences = context.getSharedPreferences(tableName, Context.MODE_PRIVATE);
216+
217+
try {
218+
preferences.edit()
219+
.remove(key).apply();
220+
updateRowResponse.isSuccessful = true;
221+
} catch (Exception ex) {
222+
updateRowResponse.isSuccessful = false;
223+
}
224+
225+
return updateRowResponse;
226+
}
201227
}

0 commit comments

Comments
 (0)