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/05 05:23:31 UTC

[43/67] [abbrv] kylin git commit: KYLIN-2632 Refactor error msg

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/QueryControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/QueryControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/QueryControllerV2.java
index 7f71801..ab4741d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/QueryControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/QueryControllerV2.java
@@ -31,7 +31,6 @@ import org.apache.kylin.metadata.querymeta.SelectedColumnMeta;
 import org.apache.kylin.rest.controller.BasicController;
 import org.apache.kylin.rest.exception.InternalErrorException;
 import org.apache.kylin.rest.model.Query;
-import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.MetaRequest;
 import org.apache.kylin.rest.request.PrepareSqlRequest;
 import org.apache.kylin.rest.request.SQLRequest;
@@ -48,7 +47,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -72,48 +70,52 @@ public class QueryControllerV2 extends BasicController {
     @Qualifier("queryService")
     private QueryService queryService;
 
-    @RequestMapping(value = "/query", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/query", method = RequestMethod.POST, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse queryV2(@RequestHeader("Accept-Language") String lang, @RequestBody SQLRequest sqlRequest) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse queryV2(@RequestBody SQLRequest sqlRequest) {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, queryService.doQueryWithCache(sqlRequest), "");
     }
 
     // TODO should be just "prepare" a statement, get back expected ResultSetMetaData
 
-    @RequestMapping(value = "/query/prestate", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/query/prestate", method = RequestMethod.POST, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse prepareQueryV2(@RequestHeader("Accept-Language") String lang, @RequestBody PrepareSqlRequest sqlRequest) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse prepareQueryV2(@RequestBody PrepareSqlRequest sqlRequest) {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, queryService.doQueryWithCache(sqlRequest), "");
     }
 
-    @RequestMapping(value = "/saved_queries", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/saved_queries", method = RequestMethod.POST, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void saveQueryV2(@RequestHeader("Accept-Language") String lang, @RequestBody SaveSqlRequest sqlRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void saveQueryV2(@RequestBody SaveSqlRequest sqlRequest) throws IOException {
 
         String creator = SecurityContextHolder.getContext().getAuthentication().getName();
-        Query newQuery = new Query(sqlRequest.getName(), sqlRequest.getProject(), sqlRequest.getSql(), sqlRequest.getDescription());
+        Query newQuery = new Query(sqlRequest.getName(), sqlRequest.getProject(), sqlRequest.getSql(),
+                sqlRequest.getDescription());
 
         queryService.saveQuery(creator, newQuery);
     }
 
-    @RequestMapping(value = "/saved_queries/{id}", method = RequestMethod.DELETE, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/saved_queries/{id}", method = RequestMethod.DELETE, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void removeQueryV2(@RequestHeader("Accept-Language") String lang, @PathVariable String id) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void removeQueryV2(@PathVariable String id) throws IOException {
 
         String creator = SecurityContextHolder.getContext().getAuthentication().getName();
         queryService.removeQuery(creator, id);
     }
 
-    @RequestMapping(value = "/saved_queries/{project}", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/saved_queries/{project}", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getQueriesV2(@RequestHeader("Accept-Language") String lang, @PathVariable String project, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getQueriesV2(@PathVariable String project,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize)
+            throws IOException {
 
         HashMap<String, Object> data = new HashMap<String, Object>();
         String creator = SecurityContextHolder.getContext().getAuthentication().getName();
@@ -141,10 +143,11 @@ public class QueryControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
     }
 
-    @RequestMapping(value = "/query/format/{format}", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/query/format/{format}", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void downloadQueryResultV2(@RequestHeader("Accept-Language") String lang, @PathVariable String format, SQLRequest sqlRequest, HttpServletResponse response) {
-        MsgPicker.setMsg(lang);
+    public void downloadQueryResultV2(@PathVariable String format, SQLRequest sqlRequest,
+            HttpServletResponse response) {
 
         SQLResponse result = queryService.doQueryWithCache(sqlRequest);
         response.setContentType("text/" + format + ";charset=utf-8");
@@ -173,12 +176,13 @@ public class QueryControllerV2 extends BasicController {
         }
     }
 
-    @RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getMetadataV2(@RequestHeader("Accept-Language") String lang, MetaRequest metaRequest) throws SQLException, IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getMetadataV2(MetaRequest metaRequest) throws SQLException, IOException {
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, queryService.getMetadataV2(metaRequest.getProject()), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, queryService.getMetadataV2(metaRequest.getProject()),
+                "");
     }
 
     public void setQueryService(QueryService queryService) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/StreamingControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/StreamingControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/StreamingControllerV2.java
index c5bebf5..5e93e59 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/StreamingControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/StreamingControllerV2.java
@@ -47,7 +47,6 @@ import org.springframework.security.access.AccessDeniedException;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -78,26 +77,35 @@ public class StreamingControllerV2 extends BasicController {
     @Qualifier("tableService")
     private TableService tableService;
 
-    @RequestMapping(value = "/getConfig", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/getConfig", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getStreamingsV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "table", required = false) String table, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getStreamingsV2(@RequestParam(value = "table", required = false) String table,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize)
+            throws IOException {
 
         int offset = pageOffset * pageSize;
         int limit = pageSize;
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, streamingService.getStreamingConfigs(table, limit, offset), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                streamingService.getStreamingConfigs(table, limit, offset), "");
     }
 
-    @RequestMapping(value = "/getKfkConfig", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/getKfkConfig", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getKafkaConfigsV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "kafkaConfigName", required = false) String kafkaConfigName, @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getKafkaConfigsV2(
+            @RequestParam(value = "kafkaConfigName", required = false) String kafkaConfigName,
+            @RequestParam(value = "pageOffset", required = false, defaultValue = "0") Integer pageOffset,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize)
+            throws IOException {
 
         int offset = pageOffset * pageSize;
         int limit = pageSize;
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, kafkaConfigService.getKafkaConfigs(kafkaConfigName, limit, offset), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                kafkaConfigService.getKafkaConfigs(kafkaConfigName, limit, offset), "");
     }
 
     /**
@@ -108,8 +116,7 @@ public class StreamingControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void saveStreamingConfigV2(@RequestHeader("Accept-Language") String lang, @RequestBody StreamingRequest streamingRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void saveStreamingConfigV2(@RequestBody StreamingRequest streamingRequest) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         String project = streamingRequest.getProject();
@@ -161,7 +168,8 @@ public class StreamingControllerV2 extends BasicController {
             if (saveKafkaSuccess == false || saveStreamingSuccess == false) {
 
                 if (saveStreamingSuccess == true) {
-                    StreamingConfig sConfig = streamingService.getStreamingManager().getStreamingConfig(streamingConfig.getName());
+                    StreamingConfig sConfig = streamingService.getStreamingManager()
+                            .getStreamingConfig(streamingConfig.getName());
                     try {
                         streamingService.dropStreamingConfig(sConfig);
                     } catch (IOException e) {
@@ -183,8 +191,7 @@ public class StreamingControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void updateStreamingConfigV2(@RequestHeader("Accept-Language") String lang, @RequestBody StreamingRequest streamingRequest) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void updateStreamingConfigV2(@RequestBody StreamingRequest streamingRequest) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         StreamingConfig streamingConfig = deserializeSchemalDescV2(streamingRequest);
@@ -206,10 +213,10 @@ public class StreamingControllerV2 extends BasicController {
         }
     }
 
-    @RequestMapping(value = "/{configName}", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{configName}", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void deleteConfigV2(@RequestHeader("Accept-Language") String lang, @PathVariable String configName) throws IOException {
-        MsgPicker.setMsg(lang);
+    public void deleteConfigV2(@PathVariable String configName) throws IOException {
         Message msg = MsgPicker.getMsg();
 
         StreamingConfig config = streamingService.getStreamingManager().getStreamingConfig(configName);

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/TableControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/TableControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/TableControllerV2.java
index 4e2506c..c73bca3 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/TableControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/TableControllerV2.java
@@ -37,7 +37,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -65,10 +64,11 @@ public class TableControllerV2 extends BasicController {
 
     @RequestMapping(value = "", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getTableDescV2(@RequestHeader("Accept-Language") String lang, @RequestParam(value = "ext", required = false) boolean withExt, @RequestParam(value = "project", required = true) String project) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getTableDescV2(@RequestParam(value = "ext", required = false) boolean withExt,
+            @RequestParam(value = "project", required = true) String project) throws IOException {
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.getTableDescByProject(project, withExt), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.getTableDescByProject(project, withExt),
+                "");
     }
 
     /**
@@ -78,10 +78,10 @@ public class TableControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/{tableName:.+}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/{tableName:.+}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getTableDescV2(@RequestHeader("Accept-Language") String lang, @PathVariable String tableName) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getTableDescV2(@PathVariable String tableName) {
         Message msg = MsgPicker.getMsg();
 
         TableDesc table = tableService.getTableDescByName(tableName, false);
@@ -90,20 +90,23 @@ public class TableControllerV2 extends BasicController {
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, table, "");
     }
 
-    @RequestMapping(value = "/load", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/load", method = { RequestMethod.POST }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse loadHiveTablesV2(@RequestHeader("Accept-Language") String lang, @RequestBody HiveTableRequestV2 requestV2) throws Exception {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse loadHiveTablesV2(@RequestBody HiveTableRequestV2 requestV2) throws Exception {
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.loadHiveTables(requestV2.getTables(), requestV2.getProject(), requestV2.isNeedProfile()), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                tableService.loadHiveTables(requestV2.getTables(), requestV2.getProject(), requestV2.isNeedProfile()),
+                "");
     }
 
-    @RequestMapping(value = "/load", method = { RequestMethod.DELETE }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/load", method = { RequestMethod.DELETE }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse unLoadHiveTablesV2(@RequestHeader("Accept-Language") String lang, @RequestBody HiveTableRequestV2 requestV2) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse unLoadHiveTablesV2(@RequestBody HiveTableRequestV2 requestV2) throws IOException {
 
-        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.unloadHiveTables(requestV2.getTables(), requestV2.getProject()), "");
+        return new EnvelopeResponse(ResponseCode.CODE_SUCCESS,
+                tableService.unloadHiveTables(requestV2.getTables(), requestV2.getProject()), "");
     }
 
     /**
@@ -113,10 +116,10 @@ public class TableControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/cardinality", method = { RequestMethod.POST }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/cardinality", method = { RequestMethod.POST }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public void generateCardinalityV2(@RequestHeader("Accept-Language") String lang, @RequestBody HiveTableRequestV2 requestV2) throws Exception {
-        MsgPicker.setMsg(lang);
+    public void generateCardinalityV2(@RequestBody HiveTableRequestV2 requestV2) throws Exception {
 
         String submitter = SecurityContextHolder.getContext().getAuthentication().getName();
         String[] tables = requestV2.getTables();
@@ -133,10 +136,10 @@ public class TableControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/hive", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/hive", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    private EnvelopeResponse showHiveDatabasesV2(@RequestHeader("Accept-Language") String lang) throws Exception {
-        MsgPicker.setMsg(lang);
+    private EnvelopeResponse showHiveDatabasesV2() throws Exception {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.getHiveDbNames(), "");
     }
@@ -148,10 +151,10 @@ public class TableControllerV2 extends BasicController {
      * @throws IOException
      */
 
-    @RequestMapping(value = "/hive/{database}", method = { RequestMethod.GET }, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/hive/{database}", method = { RequestMethod.GET }, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    private EnvelopeResponse showHiveTablesV2(@RequestHeader("Accept-Language") String lang, @PathVariable String database) throws Exception {
-        MsgPicker.setMsg(lang);
+    private EnvelopeResponse showHiveTablesV2(@PathVariable String database) throws Exception {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, tableService.getHiveTableNames(database), "");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/server-base/src/main/java/org/apache/kylin/rest/controller2/UserControllerV2.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/UserControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/UserControllerV2.java
index ebf8b36..f75f351 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller2/UserControllerV2.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/UserControllerV2.java
@@ -35,7 +35,6 @@ import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -57,18 +56,19 @@ public class UserControllerV2 extends BasicController {
     @Qualifier("userService")
     UserService userService;
 
-    @RequestMapping(value = "/authentication", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/authentication", method = RequestMethod.POST, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse authenticateV2(@RequestHeader("Accept-Language") String lang) {
-        EnvelopeResponse response = authenticatedUserV2(lang);
+    public EnvelopeResponse authenticateV2() {
+        EnvelopeResponse response = authenticatedUserV2();
         logger.debug("User login: {}", response.data);
         return response;
     }
 
-    @RequestMapping(value = "/authentication", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/authentication", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse authenticatedUserV2(@RequestHeader("Accept-Language") String lang) {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse authenticatedUserV2() {
         Message msg = MsgPicker.getMsg();
 
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
@@ -92,10 +92,10 @@ public class UserControllerV2 extends BasicController {
         throw new BadRequestException(msg.getAUTH_INFO_NOT_FOUND());
     }
 
-    @RequestMapping(value = "/authentication/authorities", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" })
+    @RequestMapping(value = "/authentication/authorities", method = RequestMethod.GET, produces = {
+            "application/vnd.apache.kylin-v2+json" })
     @ResponseBody
-    public EnvelopeResponse getAuthoritiesV2(@RequestHeader("Accept-Language") String lang) throws IOException {
-        MsgPicker.setMsg(lang);
+    public EnvelopeResponse getAuthoritiesV2() throws IOException {
 
         return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, userService.listUserAuthorities(), "");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/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 53cbaba..1c6fb69 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
@@ -21,7 +21,7 @@ package org.apache.kylin.rest.msg;
 /**
  * Created by luwei on 17-4-12.
  */
-public class CnMessage extends Message{
+public class CnMessage extends Message {
 
     private static CnMessage instance = null;
 
@@ -35,4 +35,380 @@ public class CnMessage extends Message{
         }
         return instance;
     }
+
+    // Cube
+    public String getCUBE_NOT_FOUND() {
+        return "找不到 Cube '%s'";
+    }
+
+    public String getSEG_NOT_FOUND() {
+        return "找不到 Segment '%s'";
+    }
+
+    public String getKAFKA_DEP_NOT_FOUND() {
+        return "找不到 Kafka 依赖";
+    }
+
+    public String getBUILD_DRAFT_CUBE() {
+        return "Cube 草稿不能被构建";
+    }
+
+    public String getBUILD_BROKEN_CUBE() {
+        return "损坏的 cube '%s' 不能被构建";
+    }
+
+    public String getINCONSISTENT_CUBE_DESC_SIGNATURE() {
+        return "Inconsistent cube desc signature for '%s', if it's right after an upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures, then reload metadata to take effect.";
+    }
+
+    public String getDELETE_NOT_FIRST_LAST_SEG() {
+        return "非首尾 segment '%s' 不能被删除";
+    }
+
+    public String getDELETE_NOT_READY_SEG() {
+        return "非 READY 状态 segment '%s' 不能被删除, 请先抛弃它正在运行的任务";
+    }
+
+    public String getINVALID_BUILD_TYPE() {
+        return "非法构建类型: '%s'";
+    }
+
+    public String getNO_ACL_ENTRY() {
+        return "找不到对象 '%s' 的授权记录";
+    }
+
+    public String getACL_INFO_NOT_FOUND() {
+        return "找不到对象 '%s' 的授权信息";
+    }
+
+    public String getACL_DOMAIN_NOT_FOUND() {
+        return "找不到授权对象";
+    }
+
+    public String getPARENT_ACL_NOT_FOUND() {
+        return "找不到上级授权";
+    }
+
+    public String getDISABLE_NOT_READY_CUBE() {
+        return "仅 ready 状态的 cube 可以被禁用, '%s' 的状态是 %s";
+    }
+
+    public String getPURGE_NOT_DISABLED_CUBE() {
+        return "仅 disabled 状态的 cube 可以被清空, '%s' 的状态是 %s";
+    }
+
+    public String getCLONE_BROKEN_CUBE() {
+        return "损坏的 cube '%s' 不能被克隆";
+    }
+
+    public String getINVALID_CUBE_NAME() {
+        return "非法 cube 名称 '%s', 仅支持字母, 数字和下划线";
+    }
+
+    public String getCUBE_ALREADY_EXIST() {
+        return "Cube 名称 '%s' 已存在";
+    }
+
+    public String getCUBE_DESC_ALREADY_EXIST() {
+        return "Cube '%s' 已存在";
+    }
+
+    public String getBROKEN_CUBE_DESC() {
+        return "损坏的 Cube 描述 '%s'";
+    }
+
+    public String getENABLE_NOT_DISABLED_CUBE() {
+        return "仅 disabled 状态的 cube 可以被启用, '%s' 的状态是 %s";
+    }
+
+    public String getNO_READY_SEGMENT() {
+        return "Cube '%s' 不包含任何 READY 状态的 segment";
+    }
+
+    public String getENABLE_WITH_RUNNING_JOB() {
+        return "Cube 存在正在运行的任务, 不能被启用";
+    }
+
+    public String getDISCARD_JOB_FIRST() {
+        return "Cube '%s' 存在正在运行或失败的任务, 请抛弃它们后重试";
+    }
+
+    public String getIDENTITY_EXIST_CHILDREN() {
+        return "'%s' 存在下级授权";
+    }
+
+    public String getINVALID_CUBE_DEFINITION() {
+        return "非法 cube 定义";
+    }
+
+    public String getEMPTY_CUBE_NAME() {
+        return "Cube 名称不可为空";
+    }
+
+    public String getUSE_DRAFT_MODEL() {
+        return "不能使用模型草稿 '%s'";
+    }
+
+    public String getINCONSISTENT_CUBE_DESC() {
+        return "Cube 描述 '%s' 与现有不一致, 请清理 cube 或避免更新 cube 描述的关键字段";
+    }
+
+    public String getUPDATE_CUBE_NO_RIGHT() {
+        return "无权限更新此 cube";
+    }
+
+    public String getNOT_STREAMING_CUBE() {
+        return "Cube '%s' 不是实时 cube";
+    }
+
+    public String getCUBE_RENAME() {
+        return "Cube 不能被重命名";
+    }
+
+    // Model
+    public String getINVALID_MODEL_DEFINITION() {
+        return "非法模型定义";
+    }
+
+    public String getEMPTY_MODEL_NAME() {
+        return "模型名称不可为空";
+    }
+
+    public String getINVALID_MODEL_NAME() {
+        return "非法模型名称 '%s', 仅支持字母, 数字和下划线";
+    }
+
+    public String getDUPLICATE_MODEL_NAME() {
+        return "模型名称 '%s' 已存在, 不能被创建";
+    }
+
+    public String getDROP_REFERENCED_MODEL() {
+        return "模型被 Cube '%s' 引用, 不能被删除";
+    }
+
+    public String getUPDATE_MODEL_KEY_FIELD() {
+        return "已使用的维度和度量与现有的连接树不能被修改";
+    }
+
+    public String getBROKEN_MODEL_DESC() {
+        return "损坏的模型描述 '%s'";
+    }
+
+    public String getMODEL_NOT_FOUND() {
+        return "找不到模型 '%s'";
+    }
+
+    public String getEMPTY_PROJECT_NAME() {
+        return "项目名称不可为空";
+    }
+
+    public String getEMPTY_NEW_MODEL_NAME() {
+        return "新模型名称不可为空";
+    }
+
+    public String getUPDATE_MODEL_NO_RIGHT() {
+        return "无权限更新此模型";
+    }
+
+    public String getMODEL_RENAME() {
+        return "模型不能被重命名";
+    }
+
+    // Job
+    public String getILLEGAL_TIME_FILTER() {
+        return "非法时间条件: %s";
+    }
+
+    public String getILLEGAL_EXECUTABLE_STATE() {
+        return "非法状态: %s";
+    }
+
+    public String getILLEGAL_JOB_TYPE() {
+        return "非法任务类型, id: %s.";
+    }
+
+    // Acl
+    public String getUSER_NOT_EXIST() {
+        return "用户 '%s' 不存在, 请确认用户是否曾经登陆";
+    }
+
+    // Project
+    public String getINVALID_PROJECT_NAME() {
+        return "非法项目名词 '%s', 仅支持字母, 数字和下划线";
+    }
+
+    public String getPROJECT_ALREADY_EXIST() {
+        return "项目 '%s' 已存在";
+    }
+
+    public String getPROJECT_NOT_FOUND() {
+        return "找不到项目 '%s'";
+    }
+
+    // Table
+    public String getHIVE_TABLE_NOT_FOUND() {
+        return "找不到 Hive 表 '%s'";
+    }
+
+    public String getTABLE_DESC_NOT_FOUND() {
+        return "找不到表 '%s'";
+    }
+
+    public String getTABLE_IN_USE_BY_MODEL() {
+        return "表已被模型 '%s' 使用";
+    }
+
+    // Cube Desc
+    public String getCUBE_DESC_NOT_FOUND() {
+        return "找不到 cube '%s'";
+    }
+
+    // Streaming
+    public String getINVALID_TABLE_DESC_DEFINITION() {
+        return "非法表定义";
+    }
+
+    public String getINVALID_STREAMING_CONFIG_DEFINITION() {
+        return "非法 StreamingConfig 定义";
+    }
+
+    public String getINVALID_KAFKA_CONFIG_DEFINITION() {
+        return "非法 KafkaConfig 定义";
+    }
+
+    public String getADD_STREAMING_TABLE_FAIL() {
+        return "添加流式表失败";
+    }
+
+    public String getEMPTY_STREAMING_CONFIG_NAME() {
+        return "StreamingConfig 名称不可为空";
+    }
+
+    public String getSTREAMING_CONFIG_ALREADY_EXIST() {
+        return "StreamingConfig '%s' 已存在";
+    }
+
+    public String getSAVE_STREAMING_CONFIG_FAIL() {
+        return "保存 StreamingConfig 失败";
+    }
+
+    public String getKAFKA_CONFIG_ALREADY_EXIST() {
+        return "KafkaConfig '%s' 已存在";
+    }
+
+    public String getCREATE_KAFKA_CONFIG_FAIL() {
+        return "StreamingConfig 已创建, 但 KafkaConfig 创建失败";
+    }
+
+    public String getSAVE_KAFKA_CONFIG_FAIL() {
+        return "KafkaConfig 保存失败";
+    }
+
+    public String getROLLBACK_STREAMING_CONFIG_FAIL() {
+        return "操作失败, 并且回滚已创建的 StreamingConfig 失败";
+    }
+
+    public String getROLLBACK_KAFKA_CONFIG_FAIL() {
+        return "操作失败, 并且回滚已创建的 KafkaConfig 失败";
+    }
+
+    public String getUPDATE_STREAMING_CONFIG_NO_RIGHT() {
+        return "无权限更新此 StreamingConfig";
+    }
+
+    public String getUPDATE_KAFKA_CONFIG_NO_RIGHT() {
+        return "无权限更新此 KafkaConfig";
+    }
+
+    public String getSTREAMING_CONFIG_NOT_FOUND() {
+        return "找不到 StreamingConfig '%s'";
+    }
+
+    // Query
+    public String getQUERY_NOT_ALLOWED() {
+        return "'%s' 模式不支持查询";
+    }
+
+    public String getNOT_SUPPORTED_SQL() {
+        return "不支持的 SQL";
+    }
+
+    public String getTABLE_META_INCONSISTENT() {
+        return "表元数据与JDBC 元数据不一致";
+    }
+
+    public String getCOLUMN_META_INCONSISTENT() {
+        return "列元数据与JDBC 元数据不一致";
+    }
+
+    // Access
+    public String getACL_PERMISSION_REQUIRED() {
+        return "需要授权";
+    }
+
+    public String getSID_REQUIRED() {
+        return "找不到 Sid";
+    }
+
+    public String getREVOKE_ADMIN_PERMISSION() {
+        return "不能取消创建者的管理员权限";
+    }
+
+    public String getACE_ID_REQUIRED() {
+        return "找不到 Ace id";
+    }
+
+    // Admin
+    public String getGET_ENV_CONFIG_FAIL() {
+        return "无法获取 Kylin env Config";
+    }
+
+    // User
+    public String getAUTH_INFO_NOT_FOUND() {
+        return "找不到权限信息";
+    }
+
+    public String getUSER_NOT_FOUND() {
+        return "找不到用户 '%s'";
+    }
+
+    // Diagnosis
+    public String getDIAG_NOT_FOUND() {
+        return "在 %s 找不到 diag.sh";
+    }
+
+    public String getGENERATE_DIAG_PACKAGE_FAIL() {
+        return "无法生成诊断包";
+    }
+
+    public String getDIAG_PACKAGE_NOT_AVAILABLE() {
+        return "诊断包不可用, 路径: %s";
+    }
+
+    public String getDIAG_PACKAGE_NOT_FOUND() {
+        return "找不到诊断包, 路径: %s";
+    }
+
+    // Encoding
+    public String getVALID_ENCODING_NOT_AVAILABLE() {
+        return "无法为数据类型: %s 提供合法的编码";
+    }
+
+    // ExternalFilter
+    public String getFILTER_ALREADY_EXIST() {
+        return "Filter '%s' 已存在";
+    }
+
+    public String getFILTER_NOT_FOUND() {
+        return "找不到 filter '%s'";
+    }
+
+    // Basic
+    public String getHBASE_FAIL() {
+        return "HBase 遇到错误: '%s'";
+    }
+
+    public String getHBASE_FAIL_WITHOUT_DETAIL() {
+        return "HBase 遇到错误";
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/99f08a97/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 3317373..f4bcda7 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
@@ -37,549 +37,378 @@ public class Message {
     }
 
     // Cube
-    private final String CUBE_NOT_FOUND = "Cannot find cube '%s'.";
-    private final String SEG_NOT_FOUND = "Cannot find segment '%s'.";
-    private final String KAFKA_DEP_NOT_FOUND = "Could not find Kafka dependency.";
-    private final String BUILD_DRAFT_CUBE = "Could not build draft cube.";
-    private final String BUILD_BROKEN_CUBE = "Broken cube '%s' can't be built.";
-    private final String INCONSISTENT_CUBE_DESC_SIGNATURE = "Inconsistent cube desc signature for '%s', if it's right after an upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures, then reload metadata to take effect.";
-    private final String DELETE_NOT_FIRST_LAST_SEG = "Cannot delete segment '%s' as it is neither the first nor the last segment.";
-    private final String DELETE_NOT_READY_SEG = "Cannot delete segment '%s' as its status is not READY. Discard the on-going job for it.";
-    private final String INVALID_BUILD_TYPE = "Invalid build type: '%s'.";
-    private final String NO_ACL_ENTRY = "There should have been an Acl entry for ObjectIdentity '%s'.";
-    private final String ACL_INFO_NOT_FOUND = "Unable to find ACL information for object identity '%s'.";
-    private final String ACL_DOMAIN_NOT_FOUND = "Acl domain object required.";
-    private final String PARENT_ACL_NOT_FOUND = "Parent acl required.";
-    private final String DISABLE_NOT_READY_CUBE = "Only ready cube can be disabled, status of '%s' is %s.";
-    private final String PURGE_NOT_DISABLED_CUBE = "Only disabled cube can be purged, status of '%s' is %s.";
-    private final String CLONE_BROKEN_CUBE = "Broken cube '%s' can't be cloned.";
-    private final String INVALID_CUBE_NAME = "Invalid Cube name '%s', only letters, numbers and underline supported.";
-    private final String CUBE_ALREADY_EXIST = "The cube named '%s' already exists.";
-    private final String CUBE_DESC_ALREADY_EXIST = "The cube desc named '%s' already exists.";
-    private final String BROKEN_CUBE_DESC = "Broken cube desc named '%s'.";
-    private final String ENABLE_NOT_DISABLED_CUBE = "Only disabled cube can be enabled, status of '%s' is %s.";
-    private final String NO_READY_SEGMENT = "Cube '%s' doesn't contain any READY segment.";
-    private final String ENABLE_WITH_RUNNING_JOB = "Enable is not allowed with a running job.";
-    private final String DISCARD_JOB_FIRST = "The cube '%s' has running or failed job, please discard it and try again.";
-    private final String IDENTITY_EXIST_CHILDREN = "Children exists for '%s'.";
-    private final String INVALID_CUBE_DEFINITION = "The cube definition is invalid.";
-    private final String EMPTY_CUBE_NAME = "Cube name should not be empty.";
-    private final String USE_DRAFT_MODEL = "Cannot use draft model '%s'.";
-    private final String UNEXPECTED_CUBE_DESC_STATUS = "CubeDesc status should not be %s.";
-    private final String EXPECTED_CUBE_DESC_STATUS = "CubeDesc status should be %s.";
-    private final String CUBE_DESC_RENAME = "Cube Desc renaming is not allowed: desc.getName(): '%s', cubeRequest.getCubeName(): '%s'.";
-    private final String INCONSISTENT_CUBE_DESC = "CubeDesc '%s' is inconsistent with existing. Try purge that cube first or avoid updating key cube desc fields.";
-    private final String UPDATE_CUBE_NO_RIGHT = "You don't have right to update this cube.";
-    private final String NOT_STREAMING_CUBE = "Cube '%s' is not a Streaming Cube.";
-    private final String NO_DRAFT_CUBE_TO_UPDATE = "Cube '%s' has no draft to update.";
-    private final String NON_DRAFT_CUBE_ALREADY_EXIST = "A non-draft cube with name '%s' already exists.";
-    private final String CUBE_RENAME = "Cube renaming is not allowed.";
-    private final String ORIGIN_CUBE_NOT_FOUND = "Origin cube not found.";
-
-    // Model
-    private final String INVALID_MODEL_DEFINITION = "The data model definition is invalid.";
-    private final String EMPTY_MODEL_NAME = "Model name should not be empty.";
-    private final String INVALID_MODEL_NAME = "Invalid Model name '%s', only letters, numbers and underline supported.";
-    private final String UNEXPECTED_MODEL_STATUS = "Model status should not be %s.";
-    private final String EXPECTED_MODEL_STATUS = "Model status should be %s.";
-    private final String DUPLICATE_MODEL_NAME = "Model name '%s' is duplicated, could not be created.";
-    private final String DROP_REFERENCED_MODEL = "Model is referenced by Cube '%s' , could not dropped";
-    private final String UPDATE_MODEL_KEY_FIELD = "Dimensions and measures in use and existing join tree cannot be modified.";
-    private final String BROKEN_MODEL_DESC = "Broken model desc named '%s'.";
-    private final String MODEL_NOT_FOUND = "Data Model with name '%s' not found.";
-    private final String EMPTY_PROJECT_NAME = "Project name should not be empty.";
-    private final String EMPTY_NEW_MODEL_NAME = "New model name should not be empty";
-    private final String UPDATE_MODEL_NO_RIGHT = "You don't have right to update this model.";
-    private final String NO_DRAFT_MODEL_TO_UPDATE = "Model '%s' has no draft to update.";
-    private final String NON_DRAFT_MODEL_ALREADY_EXIST = "A non-draft model with name '%s' already exists.";
-    private final String MODEL_RENAME = "Model renaming is not allowed.";
-    private final String ORIGIN_MODEL_NOT_FOUND = "Origin model not found.";
-
-    // Job
-    private final String ILLEGAL_TIME_FILTER = "Illegal timeFilter for job history: %s.";
-    private final String ILLEGAL_EXECUTABLE_STATE = "Illegal status: %s.";
-    private final String INVALID_JOB_STATE = "Invalid state: %s.";
-    private final String ILLEGAL_JOB_TYPE = "Illegal job type, id: %s.";
-    private final String INVALID_JOB_STEP_STATE = "Invalid state: %s.";
-
-    // Acl
-    private final String USER_NOT_EXIST = "User '%s' does not exist. Please make sure the user has logged in before";
-
-    // Project
-    private final String INVALID_PROJECT_NAME = "Invalid Project name '%s', only letters, numbers and underline supported.";
-    private final String PROJECT_ALREADY_EXIST = "The project named '%s' already exists.";
-    private final String PROJECT_NOT_FOUND = "Cannot find project '%s'.";
-
-    // Table
-    private final String HIVE_TABLE_NOT_FOUND = "Cannot find Hive table '%s'. ";
-    private final String TABLE_DESC_NOT_FOUND = "Cannot find table descriptor '%s'.";
-    private final String TABLE_IN_USE_BY_MODEL = "Table is already in use by models '%s'.";
-
-    // Cube Desc
-    private final String CUBE_DESC_NOT_FOUND = "Cannot find cube desc '%s'.";
-
-    // Streaming
-    private final String INVALID_TABLE_DESC_DEFINITION = "The TableDesc definition is invalid.";
-    private final String INVALID_STREAMING_CONFIG_DEFINITION = "The StreamingConfig definition is invalid.";
-    private final String INVALID_KAFKA_CONFIG_DEFINITION = "The KafkaConfig definition is invalid.";
-    private final String ADD_STREAMING_TABLE_FAIL = "Failed to add streaming table.";
-    private final String EMPTY_STREAMING_CONFIG_NAME = "StreamingConfig name should not be empty.";
-    private final String STREAMING_CONFIG_ALREADY_EXIST = "The streamingConfig named '%s' already exists.";
-    private final String SAVE_STREAMING_CONFIG_FAIL = "Failed to save StreamingConfig.";
-    private final String KAFKA_CONFIG_ALREADY_EXIST = "The kafkaConfig named '%s' already exists.";
-    private final String CREATE_KAFKA_CONFIG_FAIL = "StreamingConfig is created, but failed to create KafkaConfig.";
-    private final String SAVE_KAFKA_CONFIG_FAIL = "Failed to save KafkaConfig.";
-    private final String ROLLBACK_STREAMING_CONFIG_FAIL = "Action failed and failed to rollback the created streaming config.";
-    private final String ROLLBACK_KAFKA_CONFIG_FAIL = "Action failed and failed to rollback the created kafka config.";
-    private final String UPDATE_STREAMING_CONFIG_NO_RIGHT = "You don't have right to update this StreamingConfig.";
-    private final String UPDATE_KAFKA_CONFIG_NO_RIGHT = "You don't have right to update this KafkaConfig.";
-    private final String STREAMING_CONFIG_NOT_FOUND = "StreamingConfig with name '%s' not found.";
-
-    // Query
-    private final String QUERY_NOT_ALLOWED = "Query is not allowed in '%s' mode.";
-    private final String NOT_SUPPORTED_SQL = "Not Supported SQL.";
-    private final String TABLE_META_INCONSISTENT = "Table metadata inconsistent with JDBC meta.";
-    private final String COLUMN_META_INCONSISTENT = "Column metadata inconsistent with JDBC meta.";
-
-    // Access
-    private final String ACL_PERMISSION_REQUIRED = "Acl permission required.";
-    private final String SID_REQUIRED = "Sid required.";
-    private final String REVOKE_ADMIN_PERMISSION = "Can't revoke admin permission of owner.";
-    private final String ACE_ID_REQUIRED = "Ace id required.";
-
-    // Admin
-    private final String GET_ENV_CONFIG_FAIL = "Failed to get Kylin env Config.";
-
-    // User
-    private final String AUTH_INFO_NOT_FOUND = "Can not find authentication information.";
-    private final String USER_NOT_FOUND = "User '%s' not found.";
-
-    // Diagnosis
-    private final String DIAG_NOT_FOUND = "diag.sh not found at %s.";
-    private final String GENERATE_DIAG_PACKAGE_FAIL = "Failed to generate diagnosis package.";
-    private final String DIAG_PACKAGE_NOT_AVAILABLE = "Diagnosis package is not available in directory: %s.";
-    private final String DIAG_PACKAGE_NOT_FOUND = "Diagnosis package not found in directory: %s.";
-
-    // Encoding
-    private final String VALID_ENCODING_NOT_AVAILABLE = "can't provide valid encodings for datatype: %s.";
-
-    // ExternalFilter
-    private final String FILTER_ALREADY_EXIST = "The filter named '%s' already exists.";
-    private final String FILTER_NOT_FOUND = "The filter named '%s' does not exist.";
-
-    // Basic
-    private final String HBASE_FAIL = "HBase failed: '%s'";
-    private final String HBASE_FAIL_WITHOUT_DETAIL = "HBase failed.";
-
     public String getCUBE_NOT_FOUND() {
-        return CUBE_NOT_FOUND;
+        return "Cannot find cube '%s'.";
     }
 
     public String getSEG_NOT_FOUND() {
-        return SEG_NOT_FOUND;
+        return "Cannot find segment '%s'.";
     }
 
     public String getKAFKA_DEP_NOT_FOUND() {
-        return KAFKA_DEP_NOT_FOUND;
+        return "Could not find Kafka dependency.";
     }
 
     public String getBUILD_DRAFT_CUBE() {
-        return BUILD_DRAFT_CUBE;
+        return "Could not build draft cube.";
     }
 
     public String getBUILD_BROKEN_CUBE() {
-        return BUILD_BROKEN_CUBE;
+        return "Broken cube '%s' can't be built.";
     }
 
     public String getINCONSISTENT_CUBE_DESC_SIGNATURE() {
-        return INCONSISTENT_CUBE_DESC_SIGNATURE;
+        return "Inconsistent cube desc signature for '%s', if it's right after an upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures, then reload metadata to take effect.";
     }
 
     public String getDELETE_NOT_FIRST_LAST_SEG() {
-        return DELETE_NOT_FIRST_LAST_SEG;
+        return "Cannot delete segment '%s' as it is neither the first nor the last segment.";
     }
 
     public String getDELETE_NOT_READY_SEG() {
-        return DELETE_NOT_READY_SEG;
+        return "Cannot delete segment '%s' as its status is not READY. Discard the on-going job for it.";
     }
 
     public String getINVALID_BUILD_TYPE() {
-        return INVALID_BUILD_TYPE;
+        return "Invalid build type: '%s'.";
     }
 
     public String getNO_ACL_ENTRY() {
-        return NO_ACL_ENTRY;
+        return "There should have been an Acl entry for ObjectIdentity '%s'.";
     }
 
     public String getACL_INFO_NOT_FOUND() {
-        return ACL_INFO_NOT_FOUND;
+        return "Unable to find ACL information for object identity '%s'.";
     }
 
     public String getACL_DOMAIN_NOT_FOUND() {
-        return ACL_DOMAIN_NOT_FOUND;
+        return "Acl domain object required.";
     }
 
     public String getPARENT_ACL_NOT_FOUND() {
-        return PARENT_ACL_NOT_FOUND;
+        return "Parent acl required.";
     }
 
     public String getDISABLE_NOT_READY_CUBE() {
-        return DISABLE_NOT_READY_CUBE;
+        return "Only ready cube can be disabled, status of '%s' is %s.";
     }
 
     public String getPURGE_NOT_DISABLED_CUBE() {
-        return PURGE_NOT_DISABLED_CUBE;
+        return "Only disabled cube can be purged, status of '%s' is %s.";
     }
 
     public String getCLONE_BROKEN_CUBE() {
-        return CLONE_BROKEN_CUBE;
+        return "Broken cube '%s' can't be cloned.";
     }
 
     public String getINVALID_CUBE_NAME() {
-        return INVALID_CUBE_NAME;
+        return "Invalid Cube name '%s', only letters, numbers and underline supported.";
     }
 
     public String getCUBE_ALREADY_EXIST() {
-        return CUBE_ALREADY_EXIST;
+        return "The cube named '%s' already exists.";
     }
 
     public String getCUBE_DESC_ALREADY_EXIST() {
-        return CUBE_DESC_ALREADY_EXIST;
+        return "The cube desc named '%s' already exists.";
     }
 
     public String getBROKEN_CUBE_DESC() {
-        return BROKEN_CUBE_DESC;
+        return "Broken cube desc named '%s'.";
     }
 
     public String getENABLE_NOT_DISABLED_CUBE() {
-        return ENABLE_NOT_DISABLED_CUBE;
+        return "Only disabled cube can be enabled, status of '%s' is %s.";
     }
 
     public String getNO_READY_SEGMENT() {
-        return NO_READY_SEGMENT;
+        return "Cube '%s' doesn't contain any READY segment.";
     }
 
     public String getENABLE_WITH_RUNNING_JOB() {
-        return ENABLE_WITH_RUNNING_JOB;
+        return "Enable is not allowed with a running job.";
     }
 
     public String getDISCARD_JOB_FIRST() {
-        return DISCARD_JOB_FIRST;
+        return "The cube '%s' has running or failed job, please discard it and try again.";
     }
 
     public String getIDENTITY_EXIST_CHILDREN() {
-        return IDENTITY_EXIST_CHILDREN;
+        return "Children exists for '%s'.";
     }
 
     public String getINVALID_CUBE_DEFINITION() {
-        return INVALID_CUBE_DEFINITION;
+        return "The cube definition is invalid.";
     }
 
     public String getEMPTY_CUBE_NAME() {
-        return EMPTY_CUBE_NAME;
+        return "Cube name should not be empty.";
     }
 
     public String getUSE_DRAFT_MODEL() {
-        return USE_DRAFT_MODEL;
-    }
-
-    public String getUNEXPECTED_CUBE_DESC_STATUS() {
-        return UNEXPECTED_CUBE_DESC_STATUS;
-    }
-
-    public String getEXPECTED_CUBE_DESC_STATUS() {
-        return EXPECTED_CUBE_DESC_STATUS;
-    }
-
-    public String getCUBE_DESC_RENAME() {
-        return CUBE_DESC_RENAME;
+        return "Cannot use draft model '%s'.";
     }
 
     public String getINCONSISTENT_CUBE_DESC() {
-        return INCONSISTENT_CUBE_DESC;
+        return "CubeDesc '%s' is inconsistent with existing. Try purge that cube first or avoid updating key cube desc fields.";
     }
 
     public String getUPDATE_CUBE_NO_RIGHT() {
-        return UPDATE_CUBE_NO_RIGHT;
+        return "You don't have right to update this cube.";
     }
 
     public String getNOT_STREAMING_CUBE() {
-        return NOT_STREAMING_CUBE;
-    }
-
-    public String getNO_DRAFT_CUBE_TO_UPDATE() {
-        return NO_DRAFT_CUBE_TO_UPDATE;
-    }
-
-    public String getNON_DRAFT_CUBE_ALREADY_EXIST() {
-        return NON_DRAFT_CUBE_ALREADY_EXIST;
+        return "Cube '%s' is not a Streaming Cube.";
     }
 
     public String getCUBE_RENAME() {
-        return CUBE_RENAME;
-    }
-
-    public String getORIGIN_CUBE_NOT_FOUND() {
-        return ORIGIN_CUBE_NOT_FOUND;
+        return "Cube renaming is not allowed.";
     }
 
+    // Model
     public String getINVALID_MODEL_DEFINITION() {
-        return INVALID_MODEL_DEFINITION;
+        return "The data model definition is invalid.";
     }
 
     public String getEMPTY_MODEL_NAME() {
-        return EMPTY_MODEL_NAME;
+        return "Model name should not be empty.";
     }
 
     public String getINVALID_MODEL_NAME() {
-        return INVALID_MODEL_NAME;
-    }
-
-    public String getUNEXPECTED_MODEL_STATUS() {
-        return UNEXPECTED_MODEL_STATUS;
-    }
-
-    public String getEXPECTED_MODEL_STATUS() {
-        return EXPECTED_MODEL_STATUS;
+        return "Invalid Model name '%s', only letters, numbers and underline supported.";
     }
 
     public String getDUPLICATE_MODEL_NAME() {
-        return DUPLICATE_MODEL_NAME;
+        return "Model name '%s' is duplicated, could not be created.";
     }
 
     public String getDROP_REFERENCED_MODEL() {
-        return DROP_REFERENCED_MODEL;
+        return "Model is referenced by Cube '%s' , could not dropped";
     }
 
     public String getUPDATE_MODEL_KEY_FIELD() {
-        return UPDATE_MODEL_KEY_FIELD;
+        return "Dimensions and measures in use and existing join tree cannot be modified.";
     }
 
     public String getBROKEN_MODEL_DESC() {
-        return BROKEN_MODEL_DESC;
+        return "Broken model desc named '%s'.";
     }
 
     public String getMODEL_NOT_FOUND() {
-        return MODEL_NOT_FOUND;
+        return "Data Model with name '%s' not found.";
     }
 
     public String getEMPTY_PROJECT_NAME() {
-        return EMPTY_PROJECT_NAME;
+        return "Project name should not be empty.";
     }
 
     public String getEMPTY_NEW_MODEL_NAME() {
-        return EMPTY_NEW_MODEL_NAME;
+        return "New model name should not be empty.";
     }
 
     public String getUPDATE_MODEL_NO_RIGHT() {
-        return UPDATE_MODEL_NO_RIGHT;
-    }
-
-    public String getNO_DRAFT_MODEL_TO_UPDATE() {
-        return NO_DRAFT_MODEL_TO_UPDATE;
-    }
-
-    public String getNON_DRAFT_MODEL_ALREADY_EXIST() {
-        return NON_DRAFT_MODEL_ALREADY_EXIST;
+        return "You don't have right to update this model.";
     }
 
     public String getMODEL_RENAME() {
-        return MODEL_RENAME;
-    }
-
-    public String getORIGIN_MODEL_NOT_FOUND() {
-        return ORIGIN_MODEL_NOT_FOUND;
+        return "Model renaming is not allowed.";
     }
 
+    // Job
     public String getILLEGAL_TIME_FILTER() {
-        return ILLEGAL_TIME_FILTER;
+        return "Illegal timeFilter: %s.";
     }
 
     public String getILLEGAL_EXECUTABLE_STATE() {
-        return ILLEGAL_EXECUTABLE_STATE;
-    }
-
-    public String getINVALID_JOB_STATE() {
-        return INVALID_JOB_STATE;
+        return "Illegal status: %s.";
     }
 
     public String getILLEGAL_JOB_TYPE() {
-        return ILLEGAL_JOB_TYPE;
-    }
-
-    public String getINVALID_JOB_STEP_STATE() {
-        return INVALID_JOB_STEP_STATE;
+        return "Illegal job type, id: %s.";
     }
 
+    // Acl
     public String getUSER_NOT_EXIST() {
-        return USER_NOT_EXIST;
+        return "User '%s' does not exist. Please make sure the user has logged in before";
     }
 
+    // Project
     public String getINVALID_PROJECT_NAME() {
-        return INVALID_PROJECT_NAME;
+        return "Invalid Project name '%s', only letters, numbers and underline supported.";
     }
 
     public String getPROJECT_ALREADY_EXIST() {
-        return PROJECT_ALREADY_EXIST;
+        return "The project named '%s' already exists.";
     }
 
     public String getPROJECT_NOT_FOUND() {
-        return PROJECT_NOT_FOUND;
+        return "Cannot find project '%s'.";
     }
 
+    // Table
     public String getHIVE_TABLE_NOT_FOUND() {
-        return HIVE_TABLE_NOT_FOUND;
+        return "Cannot find Hive table '%s'.";
     }
 
     public String getTABLE_DESC_NOT_FOUND() {
-        return TABLE_DESC_NOT_FOUND;
+        return "Cannot find table descriptor '%s'.";
     }
 
     public String getTABLE_IN_USE_BY_MODEL() {
-        return TABLE_IN_USE_BY_MODEL;
+        return "Table is already in use by models '%s'.";
     }
 
+    // Cube Desc
     public String getCUBE_DESC_NOT_FOUND() {
-        return CUBE_DESC_NOT_FOUND;
+        return "Cannot find cube desc '%s'.";
     }
 
+    // Streaming
     public String getINVALID_TABLE_DESC_DEFINITION() {
-        return INVALID_TABLE_DESC_DEFINITION;
+        return "The TableDesc definition is invalid.";
     }
 
     public String getINVALID_STREAMING_CONFIG_DEFINITION() {
-        return INVALID_STREAMING_CONFIG_DEFINITION;
+        return "The StreamingConfig definition is invalid.";
     }
 
     public String getINVALID_KAFKA_CONFIG_DEFINITION() {
-        return INVALID_KAFKA_CONFIG_DEFINITION;
+        return "The KafkaConfig definition is invalid.";
     }
 
     public String getADD_STREAMING_TABLE_FAIL() {
-        return ADD_STREAMING_TABLE_FAIL;
+        return "Failed to add streaming table.";
     }
 
     public String getEMPTY_STREAMING_CONFIG_NAME() {
-        return EMPTY_STREAMING_CONFIG_NAME;
+        return "StreamingConfig name should not be empty.";
     }
 
     public String getSTREAMING_CONFIG_ALREADY_EXIST() {
-        return STREAMING_CONFIG_ALREADY_EXIST;
+        return "The streamingConfig named '%s' already exists.";
     }
 
     public String getSAVE_STREAMING_CONFIG_FAIL() {
-        return SAVE_STREAMING_CONFIG_FAIL;
+        return "Failed to save StreamingConfig.";
     }
 
     public String getKAFKA_CONFIG_ALREADY_EXIST() {
-        return KAFKA_CONFIG_ALREADY_EXIST;
+        return "The kafkaConfig named '%s' already exists.";
     }
 
     public String getCREATE_KAFKA_CONFIG_FAIL() {
-        return CREATE_KAFKA_CONFIG_FAIL;
+        return "StreamingConfig is created, but failed to create KafkaConfig.";
     }
 
     public String getSAVE_KAFKA_CONFIG_FAIL() {
-        return SAVE_KAFKA_CONFIG_FAIL;
+        return "Failed to save KafkaConfig.";
     }
 
     public String getROLLBACK_STREAMING_CONFIG_FAIL() {
-        return ROLLBACK_STREAMING_CONFIG_FAIL;
+        return "Action failed and failed to rollback the created streaming config.";
     }
 
     public String getROLLBACK_KAFKA_CONFIG_FAIL() {
-        return ROLLBACK_KAFKA_CONFIG_FAIL;
+        return "Action failed and failed to rollback the created kafka config.";
     }
 
     public String getUPDATE_STREAMING_CONFIG_NO_RIGHT() {
-        return UPDATE_STREAMING_CONFIG_NO_RIGHT;
+        return "You don't have right to update this StreamingConfig.";
     }
 
     public String getUPDATE_KAFKA_CONFIG_NO_RIGHT() {
-        return UPDATE_KAFKA_CONFIG_NO_RIGHT;
+        return "You don't have right to update this KafkaConfig.";
     }
 
     public String getSTREAMING_CONFIG_NOT_FOUND() {
-        return STREAMING_CONFIG_NOT_FOUND;
+        return "StreamingConfig with name '%s' not found.";
     }
 
+    // Query
     public String getQUERY_NOT_ALLOWED() {
-        return QUERY_NOT_ALLOWED;
+        return "Query is not allowed in '%s' mode.";
     }
 
     public String getNOT_SUPPORTED_SQL() {
-        return NOT_SUPPORTED_SQL;
+        return "Not Supported SQL.";
     }
 
     public String getTABLE_META_INCONSISTENT() {
-        return TABLE_META_INCONSISTENT;
+        return "Table metadata inconsistent with JDBC meta.";
     }
 
     public String getCOLUMN_META_INCONSISTENT() {
-        return COLUMN_META_INCONSISTENT;
+        return "Column metadata inconsistent with JDBC meta.";
     }
 
+    // Access
     public String getACL_PERMISSION_REQUIRED() {
-        return ACL_PERMISSION_REQUIRED;
+        return "Acl permission required.";
     }
 
     public String getSID_REQUIRED() {
-        return SID_REQUIRED;
+        return "Sid required.";
     }
 
     public String getREVOKE_ADMIN_PERMISSION() {
-        return REVOKE_ADMIN_PERMISSION;
+        return "Can't revoke admin permission of owner.";
     }
 
     public String getACE_ID_REQUIRED() {
-        return ACE_ID_REQUIRED;
+        return "Ace id required.";
     }
 
+    // Admin
     public String getGET_ENV_CONFIG_FAIL() {
-        return GET_ENV_CONFIG_FAIL;
+        return "Failed to get Kylin env Config.";
     }
 
+    // User
     public String getAUTH_INFO_NOT_FOUND() {
-        return AUTH_INFO_NOT_FOUND;
+        return "Can not find authentication information.";
     }
 
     public String getUSER_NOT_FOUND() {
-        return USER_NOT_FOUND;
+        return "User '%s' not found.";
     }
 
+    // Diagnosis
     public String getDIAG_NOT_FOUND() {
-        return DIAG_NOT_FOUND;
+        return "diag.sh not found at %s.";
     }
 
     public String getGENERATE_DIAG_PACKAGE_FAIL() {
-        return GENERATE_DIAG_PACKAGE_FAIL;
+        return "Failed to generate diagnosis package.";
     }
 
     public String getDIAG_PACKAGE_NOT_AVAILABLE() {
-        return DIAG_PACKAGE_NOT_AVAILABLE;
+        return "Diagnosis package is not available in directory: %s.";
     }
 
     public String getDIAG_PACKAGE_NOT_FOUND() {
-        return DIAG_PACKAGE_NOT_FOUND;
+        return "Diagnosis package not found in directory: %s.";
     }
 
+    // Encoding
     public String getVALID_ENCODING_NOT_AVAILABLE() {
-        return VALID_ENCODING_NOT_AVAILABLE;
+        return "Can not provide valid encodings for datatype: %s.";
     }
 
+    // ExternalFilter
     public String getFILTER_ALREADY_EXIST() {
-        return FILTER_ALREADY_EXIST;
+        return "The filter named '%s' already exists.";
     }
 
     public String getFILTER_NOT_FOUND() {
-        return FILTER_NOT_FOUND;
+        return "The filter named '%s' does not exist.";
     }
 
+    // Basic
     public String getHBASE_FAIL() {
-        return HBASE_FAIL;
+        return "HBase failed: '%s'";
     }
 
     public String getHBASE_FAIL_WITHOUT_DETAIL() {
-        return HBASE_FAIL_WITHOUT_DETAIL;
+        return "HBase failed.";
     }
 }
\ No newline at end of file