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 = $( '