You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/06/29 05:48:20 UTC
[13/50] kylin git commit: #1186 #1150 forbid project rename and
remove if it's not empty
#1186 #1150 forbid project rename and remove if it's not empty
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0ab915da
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0ab915da
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0ab915da
Branch: refs/heads/master
Commit: 0ab915dad029440bf8b9c6091958f99d7cadd241
Parents: 70ad90c
Author: Roger Shi <ro...@hotmail.com>
Authored: Sat Jun 17 15:43:36 2017 +0800
Committer: Hongbin Ma <ma...@kyligence.io>
Committed: Sat Jun 17 15:47:29 2017 +0800
----------------------------------------------------------------------
.../rest/controller2/ProjectControllerV2.java | 35 ++++++++++++++++----
.../org/apache/kylin/rest/msg/CnMessage.java | 7 ++++
.../java/org/apache/kylin/rest/msg/Message.java | 8 +++++
3 files changed, 44 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/0ab915da/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
index 52e17b5..5a34807 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/ProjectControllerV2.java
@@ -32,6 +32,8 @@ import org.apache.kylin.rest.msg.MsgPicker;
import org.apache.kylin.rest.request.ProjectRequest;
import org.apache.kylin.rest.response.EnvelopeResponse;
import org.apache.kylin.rest.response.ResponseCode;
+import org.apache.kylin.rest.service.CubeService;
+import org.apache.kylin.rest.service.ModelService;
import org.apache.kylin.rest.service.ProjectService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,6 +62,14 @@ public class ProjectControllerV2 extends BasicController {
@Qualifier("projectService")
private ProjectService projectService;
+ @Autowired
+ @Qualifier("cubeMgmtService")
+ private CubeService cubeService;
+
+ @Autowired
+ @Qualifier("modelMgmtService")
+ private ModelService modelService;
+
@RequestMapping(value = "", method = { RequestMethod.GET }, produces = {
"application/vnd.apache.kylin-v2+json" })
@ResponseBody
@@ -123,21 +133,23 @@ public class ProjectControllerV2 extends BasicController {
ProjectInstance projectDesc = deserializeProjectDescV2(projectRequest);
- ProjectInstance updatedProj = null;
-
ProjectInstance currentProject = projectService.getProjectManager().getProject(formerProjectName);
if (currentProject == null) {
throw new BadRequestException(String.format(msg.getPROJECT_NOT_FOUND(), formerProjectName));
}
- updatedProj = projectService.updateProject(projectDesc, currentProject);
+ // cannot modify project name if it's not empty
+ if (!currentProject.getName().equals(projectDesc.getName()) && !isProjectEmpty(currentProject.getName())) {
+ throw new BadRequestException(msg.getRENAME_PROJECT_NOT_EMPTY());
+ }
+
+ ProjectInstance updatedProj = projectService.updateProject(projectDesc, currentProject);
return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, updatedProj, "");
}
private ProjectInstance deserializeProjectDescV2(ProjectRequest projectRequest) throws IOException {
- ProjectInstance projectDesc = null;
logger.debug("Saving project " + projectRequest.getProjectDescData());
- projectDesc = JsonUtil.readValue(projectRequest.getProjectDescData(), ProjectInstance.class);
+ ProjectInstance projectDesc = JsonUtil.readValue(projectRequest.getProjectDescData(), ProjectInstance.class);
return projectDesc;
}
@@ -145,9 +157,20 @@ public class ProjectControllerV2 extends BasicController {
"application/vnd.apache.kylin-v2+json" })
@ResponseBody
public void deleteProjectV2(@PathVariable String projectName) throws IOException {
-
+ Message msg = MsgPicker.getMsg();
ProjectInstance project = projectService.getProjectManager().getProject(projectName);
+ if (!isProjectEmpty(projectName)) {
+ throw new BadRequestException(msg.getDELETE_PROJECT_NOT_EMPTY());
+ }
+
projectService.deleteProject(projectName, project);
}
+ private boolean isProjectEmpty(String projectName) throws IOException {
+ return cubeService.listAllCubes(projectName).isEmpty()
+ && cubeService.listCubeDrafts(null, null, projectName).isEmpty()
+ && modelService.listAllModels(null, projectName, false).isEmpty()
+ && modelService.listModelDrafts(null, projectName).isEmpty();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/0ab915da/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
index 1c6fb69..a828aa0 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
@@ -245,6 +245,13 @@ public class CnMessage extends Message {
return "找不到项目 '%s'";
}
+ public String getDELETE_PROJECT_NOT_EMPTY() {
+ return "不能删除该项目,如需要删除请先清空其中的Cube和Model";
+ }
+
+ public String getRENAME_PROJECT_NOT_EMPTY() {
+ return "不能重命名该项目,如果要重命名请先清空其中的Cube和Model";
+ }
// Table
public String getHIVE_TABLE_NOT_FOUND() {
return "找不到 Hive 表 '%s'";
http://git-wip-us.apache.org/repos/asf/kylin/blob/0ab915da/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java b/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java
index f4bcda7..9ed38bb 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java
@@ -245,6 +245,14 @@ public class Message {
return "Cannot find project '%s'.";
}
+ public String getDELETE_PROJECT_NOT_EMPTY() {
+ return "Cannot delete non-empty project";
+ }
+
+ public String getRENAME_PROJECT_NOT_EMPTY() {
+ return "Cannot rename non-empty project";
+ }
+
// Table
public String getHIVE_TABLE_NOT_FOUND() {
return "Cannot find Hive table '%s'.";