From 4f67c632d055f825bb5d1c523d4a95daa2960799 Mon Sep 17 00:00:00 2001 From: xseris Date: Thu, 23 Nov 2017 17:36:46 +0100 Subject: [PATCH] delete all projects --- .../project/DeleteAllProjectsCommand.java | 60 +++++++++++++++++++ .../webapp/modules/core/MOD-INF/controller.js | 1 + .../core/scripts/index/open-project-ui.js | 26 ++++++++ 3 files changed, 87 insertions(+) create mode 100644 main/src/com/google/refine/commands/project/DeleteAllProjectsCommand.java diff --git a/main/src/com/google/refine/commands/project/DeleteAllProjectsCommand.java b/main/src/com/google/refine/commands/project/DeleteAllProjectsCommand.java new file mode 100644 index 000000000..ba9c72034 --- /dev/null +++ b/main/src/com/google/refine/commands/project/DeleteAllProjectsCommand.java @@ -0,0 +1,60 @@ +/* + * + * Copyright 2010, Google Inc. 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 Inc. 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 OWNER 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. + * + */ + +package com.google.refine.commands.project; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.google.refine.ProjectManager; +import com.google.refine.commands.Command; + +public class DeleteAllProjectsCommand extends Command { + + @Override + public void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setHeader("Content-Type", "application/json"); + + try { + String projectsParam = request.getParameter("projects"); + + String[] projects = projectsParam.split(","); + if (projects.length > 1) { + for (int i = 1; i < projects.length; i++) { + long projectID = Long.parseLong(projects[i]); + ProjectManager.singleton.deleteProject(projectID); + } + } + respond(response, "{ \"code\" : \"ok\" }"); + + } catch (Exception e) { + respondException(response, e); + } + } +} diff --git a/main/webapp/modules/core/MOD-INF/controller.js b/main/webapp/modules/core/MOD-INF/controller.js index bd72020a9..e65446756 100644 --- a/main/webapp/modules/core/MOD-INF/controller.js +++ b/main/webapp/modules/core/MOD-INF/controller.js @@ -71,6 +71,7 @@ function registerCommands() { RS.registerCommand(module, "set-metaData", new Packages.com.google.refine.commands.project.SetProjectMetadataCommand()); RS.registerCommand(module, "delete-project", new Packages.com.google.refine.commands.project.DeleteProjectCommand()); + RS.registerCommand(module, "delete-all-projects", new Packages.com.google.refine.commands.project.DeleteAllProjectsCommand()); RS.registerCommand(module, "rename-project", new Packages.com.google.refine.commands.project.RenameProjectCommand()); RS.registerCommand(module, "set-project-metadata", new Packages.com.google.refine.commands.project.SetProjectMetadataCommand()); diff --git a/main/webapp/modules/core/scripts/index/open-project-ui.js b/main/webapp/modules/core/scripts/index/open-project-ui.js index 58e46731e..75cd98e29 100644 --- a/main/webapp/modules/core/scripts/index/open-project-ui.js +++ b/main/webapp/modules/core/scripts/index/open-project-ui.js @@ -136,6 +136,8 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) { $("#no-project-message").clone().show().appendTo(container); } else { Refine.selectActionArea('open-project'); + + var table = $( '' + @@ -159,6 +161,30 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) { })() + '
' ).appendTo(container)[0]; + + var allProjIds = ""; + $.each(projects, function(i) { + allProjIds = allProjIds + "," + projects[i].id; + }); + $('').attr("href", "").html($.i18n._('core-index-open')["delete-all-proj"]).addClass("header-delete-all").click(function() { + if (window.confirm($.i18n._('core-index-open')["del-body"]+ "\"?")) { + $.ajax({ + type : "POST", + url : "command/core/delete-all-projects", + data : { + "projects" : allProjIds + }, + dataType : "json", + success : function(data) { + if (data && typeof data.code != 'undefined' && data.code == "ok") { + self._fetchProjects(); + } + } + }); + } + return false; + }).appendTo(table); + var renderProject = function(project) { var tr = table.getElementsByTagName('tbody')[0].insertRow(table.rows.length - 1);