From 064e481b14d12ef65c4819448baf84258b9989b8 Mon Sep 17 00:00:00 2001 From: jiazhong Date: Wed, 26 Nov 2014 16:27:16 +0800 Subject: [PATCH] fix cube desc issue #111 --- .../java/com/kylinolap/metadata/MetadataManager.java | 7 +++++++ .../java/com/kylinolap/rest/service/CubeService.java | 18 +++++++++++++----- webapp/app/js/controllers/cubeEdit.js | 1 - webapp/app/partials/cubeDesigner/dimensions.html | 12 ++++++------ webapp/app/partials/query/query.html | 4 ++-- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/metadata/src/main/java/com/kylinolap/metadata/MetadataManager.java b/metadata/src/main/java/com/kylinolap/metadata/MetadataManager.java index 3c8ea68..8ce978f 100644 --- a/metadata/src/main/java/com/kylinolap/metadata/MetadataManager.java +++ b/metadata/src/main/java/com/kylinolap/metadata/MetadataManager.java @@ -221,6 +221,13 @@ public CubeDesc createCubeDesc(CubeDesc cubeDesc) throws IOException { return cubeDesc; } + + // remove cubeDesc + public void removeCubeDesc(CubeDesc cubeDesc) throws IOException{ + String path = cubeDesc.getResourcePath(); + getStore().deleteResource(path); + cubeDescMap.remove(cubeDesc.getName()); + } // sync on update private void init(KylinConfig config) throws IOException { diff --git a/server/src/main/java/com/kylinolap/rest/service/CubeService.java b/server/src/main/java/com/kylinolap/rest/service/CubeService.java index a8514f0..e1f56c1 100644 --- a/server/src/main/java/com/kylinolap/rest/service/CubeService.java +++ b/server/src/main/java/com/kylinolap/rest/service/CubeService.java @@ -166,12 +166,18 @@ public CubeInstance createCubeAndDesc(String cubeName, String projectName, CubeD createdDesc = getMetadataManager().createCubeDesc(desc); if (!createdDesc.getError().isEmpty()) { + getMetadataManager().removeCubeDesc(createdDesc); throw new InternalErrorException(createdDesc.getError().get(0)); } - - int cuboidCount = CuboidCLI.simulateCuboidGeneration(createdDesc); - logger.info("New cube " + cubeName + " has " + cuboidCount + " cuboids"); - + + try{ + int cuboidCount = CuboidCLI.simulateCuboidGeneration(createdDesc); + logger.info("New cube " + cubeName + " has " + cuboidCount + " cuboids"); + }catch(Exception e){ + getMetadataManager().removeCubeDesc(createdDesc); + throw new InternalErrorException("Failed to deal with the request.", e); + } + createdCube = getCubeManager().createCube(cubeName, projectName, createdDesc, owner); accessService.init(createdCube, AclPermission.ADMINISTRATION); @@ -194,10 +200,12 @@ public CubeDesc updateCubeAndDesc(CubeInstance cube, CubeDesc desc, String newPr if (!cube.getDescriptor().calculateSignature().equals(cube.getDescriptor().getSignature())) { this.releaseAllSegments(cube); } + CubeDesc updatedCubeDesc = getMetadataManager().updateCubeDesc(desc); + int cuboidCount = CuboidCLI.simulateCuboidGeneration(updatedCubeDesc); logger.info("Updated cube " + cube.getName() + " has " + cuboidCount + " cuboids"); - + if (!getProjectManager().isCubeInProject(newProjectName, cube)) { String owner = SecurityContextHolder.getContext().getAuthentication().getName(); ProjectInstance newProject = getProjectManager().updateCubeToProject(cube.getName(), newProjectName, owner); diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index 6bda6e0..7dd65b4 100644 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -473,7 +473,6 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio function generateDefaultRowkey() { console.log("gen default rowkey"); var tmpAggregationGroups = [] - $scope.cubeMetaFrame.rowkey.aggregation_groups.push([]); angular.forEach($scope.cubeMetaFrame.dimensions, function (dimension, index) { if (dimension.column == '{FK}' && dimension.join && dimension.join.foreign_key.length > 0) { angular.forEach(dimension.join.foreign_key, function (fk, index) { diff --git a/webapp/app/partials/cubeDesigner/dimensions.html b/webapp/app/partials/cubeDesigner/dimensions.html index 85a0ded..c4a6d0b 100644 --- a/webapp/app/partials/cubeDesigner/dimensions.html +++ b/webapp/app/partials/cubeDesigner/dimensions.html @@ -27,7 +27,7 @@ Name Table Name Column Name - Data Type + Join Derived Hierarchy @@ -53,9 +53,9 @@ {{dimension.column}} - - {{dimension.datatype}} - + + + {{dimension.join.type}} @@ -119,12 +119,12 @@

Edit Dimension

-
+
diff --git a/webapp/app/partials/query/query.html b/webapp/app/partials/query/query.html index 6cc2db1..4afa561 100644 --- a/webapp/app/partials/query/query.html +++ b/webapp/app/partials/query/query.html @@ -18,10 +18,10 @@
-
+
-
+