You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/01/10 06:43:29 UTC

[kylin] 04/04: Update pom and add license check

This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5.0.0-alpha
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 5d81d6d97a19e62062e6e10ef2ef40870a5e3641
Author: XiaoxiangYu <xx...@apache.org>
AuthorDate: Tue Jan 10 14:37:54 2023 +0800

    Update pom and add license check
---
 build/conf/kylin-guardian-log4j.xml                |  16 +
 build/conf/kylin-server-log4j.xml                  |  16 +
 build/conf/kylin-tools-diag-log4j.xml              |  16 +
 build/conf/kylin-tools-log4j.xml                   |  16 +
 build/conf/spark-appmaster-log4j.xml               |  16 +
 build/conf/spark-driver-log4j.xml                  |  16 +
 build/conf/spark-executor-cloud-log4j.xml          |  16 +
 build/conf/spark-executor-log4j.xml                |  16 +
 build/conf/spark-streaming-driver-log4j.xml        |  16 +
 build/conf/spark-streaming-executor-log4j.xml      |  16 +
 .../runConfigurations/BootstrapServer_local.xml    |  16 +
 .../BootstrapServer_local_community.xml            |  16 +
 .../BootstrapServer_docker_sandbox_.xml            |  16 +
 .../BootstrapServer_docker_sandbox_ultimate.xml    |  16 +
 kystudio/build/build.js                            |  18 +
 kystudio/build/check-versions.js                   |  18 +
 kystudio/build/dev-client.js                       |  18 +
 kystudio/build/dev-server.js                       |  18 +
 kystudio/build/explore-chinese.js                  |  18 +
 kystudio/build/translate-extract.js                |  18 +
 kystudio/build/utils.js                            |  18 +
 kystudio/build/vue-loader.conf.js                  |  18 +
 kystudio/build/webpack.base.conf.js                |  18 +
 kystudio/build/webpack.dev.conf.js                 |  18 +
 kystudio/build/webpack.prod.conf.js                |  17 +
 kystudio/build/webpack.test.conf.js                |  17 +
 kystudio/config/dev.env.js                         |  18 +
 kystudio/config/explore-chinese.config.js          |  18 +
 kystudio/config/index.js                           |  18 +
 kystudio/config/prod.env.js                        |  17 +
 kystudio/config/test.env.js                        |  17 +
 kystudio/config/translate-extract.config.js        |  17 +
 kystudio/e2e/.npmrc                                |   2 -
 .../\344\273\252\350\241\250\347\233\230.xmind"    | Bin 26500 -> 0 bytes
 .../e2e/e2eCase/\344\273\273\345\212\241.xmind"    | Bin 85260 -> 0 bytes
 ...0\357\274\210\347\224\250ssb\357\274\211.xmind" | Bin 104924 -> 0 bytes
 .../e2e/e2eCase/\346\250\241\345\235\227.xmind"    | Bin 83346 -> 0 bytes
 .../e2e/e2eCase/\346\250\241\345\236\213.xmind"    | Bin 184809 -> 0 bytes
 .../e2e/e2eCase/\347\224\250\346\210\267.xmind"    | Bin 97269 -> 0 bytes
 .../\347\224\250\346\210\267\347\273\204.xmind"    | Bin 43118 -> 0 bytes
 .../e2e/e2eCase/\347\231\273\345\275\225.xmind"    | Bin 49682 -> 0 bytes
 ...\242\345\274\225\345\220\216\357\274\211.xmind" | Bin 23182 -> 0 bytes
 .../e2e/e2eCase/\350\256\276\347\275\256.xmind"    | Bin 119553 -> 0 bytes
 .../e2e/e2eCase/\351\241\271\347\233\256.xmind"    | Bin 141003 -> 0 bytes
 kystudio/e2e/package.json                          |  25 --
 kystudio/e2e/specs/clear/index.spec.js             |  97 -----
 kystudio/e2e/specs/e2e.env                         |  37 --
 kystudio/e2e/specs/index.js                        |  26 --
 .../specs/projectAdmin/happy_path/index.spec.js    |  39 --
 .../projectManagement/happy_path/index.spec.js     |  39 --
 .../projectOperation/happy_path/index.spec.js      |  39 --
 .../specs/projectQuery/happy_path/index.spec.js    |  39 --
 .../e2e/specs/systemAdmin/happy_path/index.spec.js | 415 ---------------------
 kystudio/e2e/specs/systemAdmin/login/login.spec.js | 126 -------
 .../e2e/specs/systemAdmin/logout/logout.spec.js    |  50 ---
 kystudio/e2e/specs/utils/businessHelper.js         | 216 -----------
 kystudio/e2e/specs/utils/domHelper.js              | 306 ---------------
 kystudio/e2e/specs/utils/index.js                  |   2 -
 kystudio/mock/aggregateIndex.js                    |  17 +
 kystudio/src/canvas/TableJoint/handler.js          |  18 +
 kystudio/src/canvas/index.js                       |  18 +
 kystudio/src/canvas/utils/index.js                 |  18 +
 kystudio/src/canvas/utils/style.js                 |  18 +
 .../src/components/admin/Diagnostic/locales.js     |  18 +
 kystudio/src/components/admin/Diagnostic/store.js  |  18 +
 kystudio/src/components/admin/Group/locales.js     |  18 +
 .../src/components/admin/SystemCapacity/locales.js |  18 +
 kystudio/src/components/admin/User/locales.js      |  18 +
 .../src/components/common/DataSourceBar/handler.js |  18 +
 .../src/components/common/DataSourceBar/locales.js |  18 +
 .../common/DataSourceModal/SourceHive/handler.js   |  18 +
 .../common/DataSourceModal/SourceHive/locales.js   |  18 +
 .../common/DataSourceModal/SourceHive/mock.js      |  17 +
 .../DataSourceModal/SourceHiveSetting/handler.js   |  17 +
 .../DataSourceModal/SourceHiveSetting/locales.js   |  17 +
 .../SourceJDBC/SourceAuthorityForm/locales.js      |  17 +
 .../SourceJDBC/SourceGbase/locales.js              |  17 +
 .../common/DataSourceModal/SourceKafka/locales.js  |  17 +
 .../DataSourceModal/SourceKafkaStep2/locales.js    |  17 +
 .../common/DataSourceModal/SourceSelect/locales.js |  17 +
 .../components/common/DataSourceModal/handler.js   |  17 +
 .../components/common/DataSourceModal/locales.js   |  17 +
 .../src/components/common/DataSourceModal/store.js |  17 +
 .../components/common/DropdownFilter/handler.js    |  17 +
 .../components/common/DropdownFilter/locales.js    |  17 +
 .../common/EditProjectConfigDialog/store.js        |  17 +
 .../src/components/common/EmptyData/locales.js     |  17 +
 .../components/common/GlobalDialog/dialog/store.js |  17 +
 .../components/common/GroupEditModal/handler.js    |  17 +
 .../components/common/GroupEditModal/locales.js    |  17 +
 .../src/components/common/GroupEditModal/store.js  |  17 +
 .../components/common/ModelERDiagram/handler.js    |  17 +
 .../components/common/ModelERDiagram/locales.js    |  17 +
 .../common/ModelERDiagramModal/locales.js          |  17 +
 .../components/common/ModelERDiagramModal/store.js |  17 +
 .../components/common/ModelsExportModal/locales.js |  17 +
 .../components/common/ModelsExportModal/store.js   |  17 +
 .../components/common/ModelsImportModal/handler.js |  17 +
 .../components/common/ModelsImportModal/locales.js |  17 +
 .../components/common/ModelsImportModal/store.js   |  17 +
 .../components/common/ProjectEditModal/handler.js  |  17 +
 .../components/common/ProjectEditModal/locales.js  |  17 +
 .../components/common/ProjectEditModal/store.js    |  17 +
 .../components/common/ProjectSidebar/locales.js    |  17 +
 .../components/common/SourceTableModal/handler.js  |  17 +
 .../components/common/SourceTableModal/locales.js  |  17 +
 .../components/common/SourceTableModal/store.js    |  17 +
 .../common/TreeList/__test__/treeList.spec.js      |  17 +
 .../src/components/common/UserEditModal/handler.js |  17 +
 .../src/components/common/UserEditModal/locales.js |  17 +
 .../src/components/common/UserEditModal/store.js   |  17 +
 .../src/components/monitor/batchJobs/handler.js    |  17 +
 .../src/components/monitor/batchJobs/locales.js    |  17 +
 .../components/monitor/streamingJobs/locales.js    |  17 +
 kystudio/src/components/query/handler.js           |  17 +
 .../components/setting/SettingAdvanced/handler.js  |  17 +
 .../components/setting/SettingAdvanced/locales.js  |  17 +
 .../src/components/setting/SettingBasic/handler.js |  17 +
 .../src/components/setting/SettingBasic/locales.js |  17 +
 .../src/components/setting/SettingModel/locales.js |  17 +
 kystudio/src/components/setting/handler.js         |  17 +
 kystudio/src/components/setting/locales.js         |  17 +
 .../studio/StudioModel/AddCCModal/locales.js       |  17 +
 .../studio/StudioModel/AddCCModal/store.js         |  17 +
 .../StudioModel/BatchMeasureModal/locales.js       |  17 +
 .../studio/StudioModel/BatchMeasureModal/store.js  |  17 +
 .../studio/StudioModel/DimensionsModal/locales.js  |  17 +
 .../studio/StudioModel/DimensionsModal/store.js    |  17 +
 .../studio/StudioModel/ModelEdit/config.js         |  17 +
 .../studio/StudioModel/ModelEdit/layout.js         |  17 +
 .../studio/StudioModel/ModelEdit/locales.js        |  17 +
 .../studio/StudioModel/ModelEdit/model.js          |  17 +
 .../studio/StudioModel/ModelEdit/schama.js         |  17 +
 .../studio/StudioModel/ModelEdit/table.js          |  17 +
 .../ModelList/AggregateModal/handler.js            |  17 +
 .../ModelList/AggregateModal/locales.js            |  17 +
 .../StudioModel/ModelList/AggregateModal/mock.js   |  19 +-
 .../StudioModel/ModelList/AggregateModal/store.js  |  17 +
 .../ModelList/ConfirmSegment/locales.js            |  17 +
 .../StudioModel/ModelList/ConfirmSegment/store.js  |  17 +
 .../StudioModel/ModelList/DataFeatures/locales.js  |  17 +
 .../StudioModel/ModelList/GuideModal/locales.js    |  17 +
 .../StudioModel/ModelList/GuideModal/store.js      |  17 +
 .../StudioModel/ModelList/ModelActions/locales.js  |  17 +
 .../StudioModel/ModelList/ModelAddModal/locales.js |  17 +
 .../StudioModel/ModelList/ModelAddModal/store.js   |  19 +-
 .../ModelList/ModelAggregate/handler.js            |  17 +
 .../ModelList/ModelAggregate/locales.js            |  17 +
 .../StudioModel/ModelList/ModelAggregate/mock.js   |  17 +
 .../ModelAggregateView/AggAdvancedModal/locales.js |  17 +
 .../ModelAggregateView/AggAdvancedModal/store.js   |  17 +
 .../ModelList/ModelAggregateView/locales.js        |  17 +
 .../ModelList/ModelBuildModal/locales.js           |  17 +
 .../StudioModel/ModelList/ModelBuildModal/store.js |  17 +
 .../ModelList/ModelCheckData/locales.js            |  17 +
 .../StudioModel/ModelList/ModelCheckData/store.js  |  17 +
 .../ModelList/ModelCloneModal/locales.js           |  17 +
 .../StudioModel/ModelList/ModelCloneModal/store.js |  17 +
 .../StudioModel/ModelList/ModelLayout/locales.js   |  17 +
 .../StudioModel/ModelList/ModelOverview/locales.js |  17 +
 .../ModelList/ModelPartition/locales.js            |  17 +
 .../StudioModel/ModelList/ModelPartition/store.js  |  17 +
 .../ModelList/ModelRenameModal/locales.js          |  17 +
 .../ModelList/ModelRenameModal/store.js            |  17 +
 .../ModelList/ModelSaveConfig/locales.js           |  17 +
 .../StudioModel/ModelList/ModelSaveConfig/store.js |  17 +
 .../ModelList/ModelSegment/SegmentChart/handler.js |  17 +
 .../ModelList/ModelSegment/SegmentChart/locales.js |  18 +-
 .../StudioModel/ModelList/ModelSegment/handler.js  |  17 +
 .../StudioModel/ModelList/ModelSegment/locales.js  |  17 +
 .../ModelList/ModelStreamingJob/locales.js         |  17 +
 .../ModelList/TableIndexView/locales.js            |  17 +
 .../studio/StudioModel/ModelList/locales.js        |  17 +
 .../studio/StudioModel/ModelList/mock.js           |  19 +-
 .../studio/StudioModel/ModelTabs/locales.js        |  17 +
 .../studio/StudioModel/ShowCC/locales.js           |  17 +
 .../components/studio/StudioModel/ShowCC/store.js  |  17 +
 .../StudioModel/SingleDimensionModal/locales.js    |  17 +
 .../StudioModel/SingleDimensionModal/store.js      |  17 +
 .../StudioModel/SubPartitionValues/locales.js      |  17 +
 .../studio/StudioModel/TableIndex/locales.js       |  17 +
 .../studio/StudioModel/TableIndexEdit/locales.js   |  17 +
 .../studio/StudioModel/TableIndexEdit/store.js     |  17 +
 .../studio/StudioModel/TableJoinModal/locales.js   |  17 +
 .../studio/StudioModel/TableJoinModal/store.js     |  18 +-
 .../studio/StudioSource/KafkaCluster/locales.js    |  17 +
 .../StudioSource/SourceManagement/locales.js       |  17 +
 .../studio/StudioSource/SourceManagement/mock.js   |  17 +
 .../studio/StudioSource/TableColumns/locales.js    |  17 +
 .../studio/StudioSource/TableDataLoad/handler.js   |  17 +
 .../studio/StudioSource/TableDataLoad/locales.js   |  17 +
 .../studio/StudioSource/TableExtInfo/locales.js    |  17 +
 .../studio/StudioSource/TableReload/locales.js     |  17 +
 .../studio/StudioSource/TableReload/store.js       |  17 +
 .../studio/StudioSource/TableSamples/locales.js    |  17 +
 .../studio/StudioSource/TableStatistics/locales.js |  17 +
 .../src/components/studio/StudioSource/handler.js  |  17 +
 .../src/components/studio/StudioSource/locales.js  |  17 +
 .../studio/snapshot/SnapshotModel/handler.js       |  17 +
 .../studio/snapshot/SnapshotModel/locales.js       |  17 +
 .../studio/snapshot/SnapshotModel/store.js         |  17 +
 kystudio/src/components/studio/snapshot/locales.js |  17 +
 kystudio/src/config/index.js                       |  17 +
 kystudio/src/config/model.js                       |  17 +
 kystudio/src/config/projectCfgs.js                 |  17 +
 kystudio/src/config/spec.js                        |  17 +
 kystudio/src/directive/index.js                    |  17 +
 kystudio/src/filter/index.js                       |  17 +
 kystudio/src/locale/en.js                          |  18 +-
 kystudio/src/main.js                               |  17 +
 kystudio/src/router/index.js                       |  17 +
 kystudio/src/router/routerGuard.js                 |  17 +
 kystudio/src/service/api.js                        |  18 +
 kystudio/src/service/config.js                     |  17 +
 kystudio/src/service/datasource.js                 |  17 +
 kystudio/src/service/kafka.js                      |  17 +
 kystudio/src/service/message.js                    |  17 +
 kystudio/src/service/model.js                      |  17 +
 kystudio/src/service/monitor.js                    |  17 +
 kystudio/src/service/project.js                    |  17 +
 kystudio/src/service/system.js                     |  17 +
 kystudio/src/service/user.js                       |  17 +
 kystudio/src/store/capacity.js                     |  17 +
 kystudio/src/store/config.js                       |  17 +
 kystudio/src/store/datasource.js                   |  17 +
 kystudio/src/store/index.js                        |  18 +-
 kystudio/src/store/kafka.js                        |  19 +-
 kystudio/src/store/model.js                        |  17 +
 kystudio/src/store/monitor.js                      |  17 +
 kystudio/src/store/project.js                      |  17 +
 kystudio/src/store/system.js                       |  17 +
 kystudio/src/store/types.js                        |  17 +
 kystudio/src/store/user.js                         |  17 +
 kystudio/src/util/UtilTable.js                     |  17 +
 kystudio/src/util/autoLayout/TreeLayout.js         |  17 +
 kystudio/src/util/autoLayout/index.js              |  17 +
 kystudio/src/util/business.js                      |  17 +
 kystudio/src/util/charts.js                        |  17 +
 kystudio/src/util/dataGenerator.js                 |  17 +
 kystudio/src/util/dataHelper.js                    |  17 +
 kystudio/src/util/datasourceDataHandler.js         |  17 +
 kystudio/src/util/domHelper.js                     |  17 +
 kystudio/src/util/event.js                         |  17 +
 kystudio/src/util/index.js                         |  17 +
 kystudio/src/util/object.js                        |  17 +
 kystudio/src/util/plumb.js                         |  17 +
 kystudio/src/util/polyfill.js                      |  17 +
 kystudio/src/util/specParser.js                    |  17 +
 kystudio/src/util/validate.js                      |  17 +
 kystudio/src/util/vuex-router-sync.js              |  17 +
 kystudio/test/common/directive.js                  |  18 +
 kystudio/test/common/spec_common.js                |  18 +
 kystudio/test/jest.conf.js                         |  18 +
 kystudio/test/setup.js                             |  18 +
 pom.xml                                            | 311 ++++++++++++++-
 src/common-booter/pom.xml                          |  16 +
 src/common-booter/src/main/resources/assembly.xml  |  16 +
 src/common-booter/src/main/resources/log4j2.xml    |  16 +
 src/common-server/pom.xml                          |  16 +
 .../metadata/query/QueryHistoryProjectInfo.java    |  17 +
 src/data-loading-booter/pom.xml                    |  16 +
 .../src/main/resources/assembly.xml                |  16 +
 .../src/main/resources/log4j2.xml                  |  16 +
 src/data-loading-server/pom.xml                    |  16 +
 src/datasource-sdk/pom.xml                         |  16 +
 .../src/main/resources/datasource/mssql.xml        |  15 +
 .../src/main/resources/datasource/snowflake.xml    |  15 +
 .../src/main/resources/datasource/sqldw.xml        |  15 +
 src/docker/all_in_one/scripts/install_mysql.sh     |  17 +
 src/integration-service/pom.xml                    |  16 +
 src/jdbc/pom.xml                                   |  17 +
 src/job-service/pom.xml                            |  16 +
 src/kylin-it/pom.xml                               |  19 +-
 src/metadata-server/pom.xml                        |  16 +
 src/query-booter/pom.xml                           |  16 +
 src/query-booter/src/main/resources/assembly.xml   |  16 +
 src/query-booter/src/main/resources/log4j2.xml     |  16 +
 src/query-common/pom.xml                           |  16 +
 src/query-server/pom.xml                           |  16 +
 src/second-storage/clickhouse-it/pom.xml           |  16 +
 src/second-storage/clickhouse/pom.xml              |  16 +
 src/second-storage/core-ui/pom.xml                 |  16 +
 src/second-storage/core/pom.xml                    |  16 +
 src/server/src/main/resources/log4j2.xml           |  16 +
 .../datasources/v2/pushdown/PushQuery.scala        |  17 +
 .../v2/pushdown/sql/PushDownAggUtils.scala         |  17 +
 .../datasources/v2/pushdown/sql/SQLBuilder.scala   |  17 +
 .../v2/pushdown/sql/SingleSQLStatement.scala       |  17 +
 .../jdbc/v2/ShardJDBCWithoutShardSuite.scala       |  17 +
 src/spark-project/spark-ddl-plugin/pom.xml         |  16 +
 src/streaming-service/pom.xml                      |  16 +
 .../bisync/tds/tableau.connector.template.xml      |  16 +
 .../main/resources/bisync/tds/tableau.mappings.xml |  30 +-
 .../main/resources/bisync/tds/tableau.template.xml |  30 +-
 294 files changed, 4835 insertions(+), 1499 deletions(-)

diff --git a/build/conf/kylin-guardian-log4j.xml b/build/conf/kylin-guardian-log4j.xml
index 23f80a95eb..d488226bfb 100644
--- a/build/conf/kylin-guardian-log4j.xml
+++ b/build/conf/kylin-guardian-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingFile name="file" fileName="${env:KYLIN_HOME}/logs/guardian.log" append="true"
diff --git a/build/conf/kylin-server-log4j.xml b/build/conf/kylin-server-log4j.xml
index 64632fe7b2..701e8071fc 100644
--- a/build/conf/kylin-server-log4j.xml
+++ b/build/conf/kylin-server-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingRandomAccessFile name="server" fileName="${env:KYLIN_HOME}/logs/kylin.log" append="true"
diff --git a/build/conf/kylin-tools-diag-log4j.xml b/build/conf/kylin-tools-diag-log4j.xml
index 06b179fd9b..11ab7976ec 100644
--- a/build/conf/kylin-tools-diag-log4j.xml
+++ b/build/conf/kylin-tools-diag-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingFile name="file" fileName="${env:KYLIN_HOME}/logs/diag.log" append="true"
diff --git a/build/conf/kylin-tools-log4j.xml b/build/conf/kylin-tools-log4j.xml
index 7148525108..5f605b7da5 100644
--- a/build/conf/kylin-tools-log4j.xml
+++ b/build/conf/kylin-tools-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_ERR">
diff --git a/build/conf/spark-appmaster-log4j.xml b/build/conf/spark-appmaster-log4j.xml
index 8879c7c673..bd64793e07 100644
--- a/build/conf/spark-appmaster-log4j.xml
+++ b/build/conf/spark-appmaster-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT" layout="org.apache.spark.log4j.SensitivePatternLayout">
diff --git a/build/conf/spark-driver-log4j.xml b/build/conf/spark-driver-log4j.xml
index 73a51209dc..04a771ae1f 100644
--- a/build/conf/spark-driver-log4j.xml
+++ b/build/conf/spark-driver-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <DriverHdfsAppender name="hdfs"
diff --git a/build/conf/spark-executor-cloud-log4j.xml b/build/conf/spark-executor-cloud-log4j.xml
index 7745172c9d..f48a06ff14 100644
--- a/build/conf/spark-executor-cloud-log4j.xml
+++ b/build/conf/spark-executor-cloud-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/build/conf/spark-executor-log4j.xml b/build/conf/spark-executor-log4j.xml
index 75aa012406..dbf67e411d 100644
--- a/build/conf/spark-executor-log4j.xml
+++ b/build/conf/spark-executor-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/build/conf/spark-streaming-driver-log4j.xml b/build/conf/spark-streaming-driver-log4j.xml
index f335e821f7..ab9e0d744c 100644
--- a/build/conf/spark-streaming-driver-log4j.xml
+++ b/build/conf/spark-streaming-driver-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <DriverHdfsRollingAppender name="hdfs"
diff --git a/build/conf/spark-streaming-executor-log4j.xml b/build/conf/spark-streaming-executor-log4j.xml
index 33bbf0b5e2..aaa8b51bd6 100644
--- a/build/conf/spark-streaming-executor-log4j.xml
+++ b/build/conf/spark-streaming-executor-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/dev-support/local/runConfigurations/BootstrapServer_local.xml b/dev-support/local/runConfigurations/BootstrapServer_local.xml
index e0407591f7..9faf2377d8 100644
--- a/dev-support/local/runConfigurations/BootstrapServer_local.xml
+++ b/dev-support/local/runConfigurations/BootstrapServer_local.xml
@@ -1,4 +1,20 @@
 <component name="ProjectRunConfigurationManager">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
   <configuration name="BootstrapServer[Local]" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
     <module name="kylin-server" />
     <extension name="net.ashald.envfile">
diff --git a/dev-support/local/runConfigurations/BootstrapServer_local_community.xml b/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
index ea711f31be..59a844565e 100644
--- a/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
+++ b/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
@@ -1,4 +1,20 @@
 <component name="ProjectRunConfigurationManager">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
   <configuration name="BootstrapServer[Local]" type="Application" factoryName="Application">
     <module name="kylin-server" />
     <extension name="coverage">
diff --git a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
index 26ab445159..555eb814b5 100644
--- a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
+++ b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
@@ -1,4 +1,20 @@
 <component name="ProjectRunConfigurationManager">
+  <!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  -->
   <configuration default="false" name="BootstrapServer[docker-sandbox]" type="Application" factoryName="Application">
     <envs>
       <env name="KYLIN_HOME" value="$PROJECT_DIR" />
diff --git a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
index 5032f1101f..41d7f9c580 100644
--- a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
+++ b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
@@ -1,4 +1,20 @@
 <component name="ProjectRunConfigurationManager">
+  <!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  -->
   <configuration default="false" name="BootstrapServer[docker-sandbox]" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
     <module name="kylin-server" />
     <extension name="coverage">
diff --git a/kystudio/build/build.js b/kystudio/build/build.js
index 6b8add100c..11dcda3c7a 100644
--- a/kystudio/build/build.js
+++ b/kystudio/build/build.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require('./check-versions')()
 
 process.env.NODE_ENV = 'production'
diff --git a/kystudio/build/check-versions.js b/kystudio/build/check-versions.js
index 6548ba18e1..b695bad72b 100644
--- a/kystudio/build/check-versions.js
+++ b/kystudio/build/check-versions.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var chalk = require('chalk')
 var semver = require('semver')
 var packageConfig = require('../package.json')
diff --git a/kystudio/build/dev-client.js b/kystudio/build/dev-client.js
index 18aa1e2195..dc5b5a6c08 100644
--- a/kystudio/build/dev-client.js
+++ b/kystudio/build/dev-client.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 /* eslint-disable */
 require('eventsource-polyfill')
 var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
diff --git a/kystudio/build/dev-server.js b/kystudio/build/dev-server.js
index 0a1a406c02..cd3d52030b 100644
--- a/kystudio/build/dev-server.js
+++ b/kystudio/build/dev-server.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require('./check-versions')()
 
 var config = require('../config')
diff --git a/kystudio/build/explore-chinese.js b/kystudio/build/explore-chinese.js
index fac3b422ab..ed89223aab 100644
--- a/kystudio/build/explore-chinese.js
+++ b/kystudio/build/explore-chinese.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 const fs = require('fs');
 const path = require('path');
 const npmPath = process.env.PWD;
diff --git a/kystudio/build/translate-extract.js b/kystudio/build/translate-extract.js
index ed5caf7cf7..18a5e7d5b4 100644
--- a/kystudio/build/translate-extract.js
+++ b/kystudio/build/translate-extract.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 const fs = require('fs');
 const path = require('path');
 const npmPath = process.env.PWD;
diff --git a/kystudio/build/utils.js b/kystudio/build/utils.js
index 3f2ef2a54b..c179f116e3 100644
--- a/kystudio/build/utils.js
+++ b/kystudio/build/utils.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var path = require('path')
 var config = require('../config')
 var ExtractTextPlugin = require('extract-text-webpack-plugin')
diff --git a/kystudio/build/vue-loader.conf.js b/kystudio/build/vue-loader.conf.js
index a86af01c9e..386d6a3106 100644
--- a/kystudio/build/vue-loader.conf.js
+++ b/kystudio/build/vue-loader.conf.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var utils = require('./utils')
 var config = require('../config')
 var isProduction = process.env.NODE_ENV === 'production'
diff --git a/kystudio/build/webpack.base.conf.js b/kystudio/build/webpack.base.conf.js
index a1532d7b9b..085edc1688 100644
--- a/kystudio/build/webpack.base.conf.js
+++ b/kystudio/build/webpack.base.conf.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var path = require('path')
 var utils = require('./utils')
 var config = require('../config')
diff --git a/kystudio/build/webpack.dev.conf.js b/kystudio/build/webpack.dev.conf.js
index 3cd70fb601..0908bfbdf4 100644
--- a/kystudio/build/webpack.dev.conf.js
+++ b/kystudio/build/webpack.dev.conf.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var utils = require('./utils')
 var webpack = require('webpack')
 var config = require('../config')
diff --git a/kystudio/build/webpack.prod.conf.js b/kystudio/build/webpack.prod.conf.js
index bdf167b96b..2d4f82daa3 100644
--- a/kystudio/build/webpack.prod.conf.js
+++ b/kystudio/build/webpack.prod.conf.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 var path = require('path')
 var utils = require('./utils')
 var webpack = require('webpack')
diff --git a/kystudio/build/webpack.test.conf.js b/kystudio/build/webpack.test.conf.js
index 8e4385cff6..e7331ea0df 100644
--- a/kystudio/build/webpack.test.conf.js
+++ b/kystudio/build/webpack.test.conf.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 // This is the webpack config used for unit tests.
 
 var utils = require('./utils')
diff --git a/kystudio/config/dev.env.js b/kystudio/config/dev.env.js
index efead7c840..8e839e1634 100644
--- a/kystudio/config/dev.env.js
+++ b/kystudio/config/dev.env.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 var merge = require('webpack-merge')
 var prodEnv = require('./prod.env')
 
diff --git a/kystudio/config/explore-chinese.config.js b/kystudio/config/explore-chinese.config.js
index 7ae60c3dbd..2165614864 100644
--- a/kystudio/config/explore-chinese.config.js
+++ b/kystudio/config/explore-chinese.config.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 module.exports = {
   excludes: [
     /locale\/zh-CN\.js/,
diff --git a/kystudio/config/index.js b/kystudio/config/index.js
index 7fc759633b..56ee1c98bd 100644
--- a/kystudio/config/index.js
+++ b/kystudio/config/index.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 // see http://vuejs-templates.github.io/webpack for documentation.
 var path = require('path')
 // var cmdArg = process.argv.splice(2) && process.argv.splice(2)[0] || ''
diff --git a/kystudio/config/prod.env.js b/kystudio/config/prod.env.js
index 773d263d31..79f6ff0c19 100644
--- a/kystudio/config/prod.env.js
+++ b/kystudio/config/prod.env.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 module.exports = {
   NODE_ENV: '"production"'
 }
diff --git a/kystudio/config/test.env.js b/kystudio/config/test.env.js
index 89f90deb22..9e293b38ff 100644
--- a/kystudio/config/test.env.js
+++ b/kystudio/config/test.env.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 var merge = require('webpack-merge')
 var devEnv = require('./dev.env')
 
diff --git a/kystudio/config/translate-extract.config.js b/kystudio/config/translate-extract.config.js
index 69892b1036..32d6b2c4df 100644
--- a/kystudio/config/translate-extract.config.js
+++ b/kystudio/config/translate-extract.config.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 module.exports = {
   bundles: {
     查询: /\/query\//,
diff --git a/kystudio/e2e/.npmrc b/kystudio/e2e/.npmrc
deleted file mode 100644
index b24216ceba..0000000000
--- a/kystudio/e2e/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
-geckodriver_cdnurl=https://npm.taobao.org/mirrors/geckodriver
\ No newline at end of file
diff --git "a/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind" "b/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind"
deleted file mode 100644
index 6859ae1695..0000000000
Binary files "a/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind" "b/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind"
deleted file mode 100644
index 866d9f6a86..0000000000
Binary files "a/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind" "b/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind"
deleted file mode 100644
index a5bc55cd0b..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind" "b/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind"
deleted file mode 100644
index 2b7ebdbb1a..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind" "b/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind"
deleted file mode 100644
index 002234c4a6..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind" "b/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind"
deleted file mode 100644
index dc2c6b743b..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind" "b/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind"
deleted file mode 100644
index 2cdf1d2e5f..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind" "b/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind"
deleted file mode 100644
index 6f0bfe0f14..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind" "b/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind"
deleted file mode 100644
index 7c900b5ca0..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind" "b/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind"
deleted file mode 100644
index d16fa12ddb..0000000000
Binary files "a/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind" "b/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind"
deleted file mode 100644
index dc374a24db..0000000000
Binary files "a/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind" and /dev/null differ
diff --git a/kystudio/e2e/package.json b/kystudio/e2e/package.json
deleted file mode 100644
index ed90d0624c..0000000000
--- a/kystudio/e2e/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "name": "kystudio_e2e",
-  "version": "1.0.0",
-  "description": "Next generation of Kylin by VUE",
-  "author": "luojie",
-  "private": true,
-  "scripts": {
-    "e2e": "npm run e2e:chrome && npm run e2e:firefox",
-    "e2e:chrome": "BROWSER_ENV=chrome mocha ./specs",
-    "e2e:chrome-debug": "BROWSER_ENV=chrome mocha ./specs --inspect-brk",
-    "e2e:firefox": "BROWSER_ENV=firefox mocha ./specs"
-  },
-  "dependencies": {
-    "chromedriver": "77.0.0",
-    "dotenv": "^8.2.0",
-    "geckodriver": "^1.19.1",
-    "mocha": "^7.1.1",
-    "selenium-webdriver": "^4.0.0-alpha.7"
-  },
-  "devDependencies": {},
-  "engines": {
-    "node": ">= 4.0.0",
-    "npm": ">= 3.0.0"
-  }
-}
diff --git a/kystudio/e2e/specs/clear/index.spec.js b/kystudio/e2e/specs/clear/index.spec.js
deleted file mode 100644
index 06e29c0d94..0000000000
--- a/kystudio/e2e/specs/clear/index.spec.js
+++ /dev/null
@@ -1,97 +0,0 @@
-const { Builder, By, until, Key } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout, delUser } = require('../utils/businessHelper')
-const { changeFormInput, clearFormInput } = require('../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN,
-  PASSWORD_ADMIN_NEW,
-  PROJECT_NAME,
-  USERNAME_PROJECT_ADMIN,
-  USERNAME_PROJECT_MANAGEMENT,
-  USERNAME_PROJECT_OPERATION,
-  USERNAME_PROJECT_QUERY
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员进入系统', async function () {
-  this.timeout(60000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('删除自动化测试创建的用户', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-    // 统一调用登录
-    await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN_NEW);
-    await driver.sleep(2000)
-
-    await driver.findElement(By.css('.entry-admin')).click()
-    // await driver.sleep(1000)
-    await driver.wait(until.elementLocated(By.css('.el-menu-item .el-icon-ksd-table_admin')), 10000)
-    // 点击菜单 用户
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-table_admin')).click()
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 admin', async () => {
-    await delUser(driver, USERNAME_PROJECT_ADMIN, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 management', async () => {
-    await delUser(driver, USERNAME_PROJECT_MANAGEMENT, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 operation', async () => {
-    await delUser(driver, USERNAME_PROJECT_OPERATION, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 query', async () => {
-    await delUser(driver, USERNAME_PROJECT_QUERY, 2)
-    await driver.sleep(2000)
-  })
-
-  /* it('删除模型', async () => {
-
-  }) */
-
-  it('删除项目', async () => {
-    // 点击菜单 项目
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-project_list')).click()
-    await driver.sleep(2000)
-
-    await changeFormInput(driver, '.show-search-btn', PROJECT_NAME)
-    await driver.sleep(1000)
-
-    const actions = driver.actions({bridge: true})
-    await actions.click(await driver.findElement(By.css('.show-search-btn input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(2000)
-    await driver.findElement(By.css('.el-icon-ksd-table_others')).click()
-    
-    let moreBtnEl = await driver.findElement(By.css('.el-icon-ksd-table_others'))
-    let dropdownMenuId = await moreBtnEl.getAttribute('aria-controls')
-  
-    await driver.actions().move({ origin: moreBtnEl }).perform()
-    await driver.sleep(1000)
-
-    await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-    await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(4)`)).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=删除项目] .el-message-box__btns .el-button--primary'))), 10000)
-    await driver.findElement(By.css('div[aria-label=删除项目] .el-message-box__btns .el-button--primary')).click()
-    await driver.sleep(2000)
-  })
-})
diff --git a/kystudio/e2e/specs/e2e.env b/kystudio/e2e/specs/e2e.env
deleted file mode 100644
index 75c3c60cf9..0000000000
--- a/kystudio/e2e/specs/e2e.env
+++ /dev/null
@@ -1,37 +0,0 @@
-# Basic Configuration
-LAUNCH_URL=http://localhost:9090
-
-# Test User
-USERNAME_ADMIN=ADMIN
-PASSWORD_ADMIN=KYLIN
-PASSWORD_ADMIN_NEW=Qqq111,,,
-
-USERNAME_PROJECT_ADMIN=fe_it_project_admin
-PASSWORD_PROJECT_ADMIN=qqq111,,,
-
-USERNAME_PROJECT_MANAGEMENT=fe_it_project_management
-PASSWORD_PROJECT_MANAGEMENT=qqq111,,,
-
-USERNAME_PROJECT_OPERATION=fe_it_project_operation
-PASSWORD_PROJECT_OPERATION=qqq111,,,
-
-USERNAME_PROJECT_QUERY=fe_it_project_query
-PASSWORD_PROJECT_QUERY=qqq111,,,
-
-# Test Project
-PROJECT_NAME=learn_kylin_frontend_it
-
-# Test Model
-MODEL_NAME=FE_IT_AUTO_MODEL
-
-# dimensions
-
-# measure
-MEASURE1=M1
-MEASURE2=M2
-MEASURE3=M3
-MEASURE4=M4
-
-# CC
-CC1=CC1
-CC2=CC2
\ No newline at end of file
diff --git a/kystudio/e2e/specs/index.js b/kystudio/e2e/specs/index.js
deleted file mode 100644
index 6a87ad8c33..0000000000
--- a/kystudio/e2e/specs/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-const dotenv = require('dotenv')
-
-const e2ePath = path.resolve('./specs/e2e.env')
-const e2ePathLocal = path.resolve('./specs/e2e.env.local')
-
-if (fs.existsSync(e2ePath)) {
-  dotenv.config({ path: e2ePath })
-}
-
-if (fs.existsSync(e2ePathLocal)) {
-  dotenv.config({ path: e2ePathLocal })
-}
-
-// require('./systemAdmin/login/login.spec')
-// require('./systemAdmin/logout/logout.spec')
-// 在系统 admin 的 case 中建项目、建模型、建项目的 4 个角色的用户
-require('./systemAdmin/happy_path/index.spec')
-// 分别用上一个 case 创建的角色进行登录
-// require('./projectAdmin/happy_path/index.spec')
-// require('./projectManagement/happy_path/index.spec')
-// require('./projectOperation/happy_path/index.spec')
-// require('./projectQuery/happy_path/index.spec')
-// 删除前面几个 case 中创建的 用户、模型、项目
-// require('./clear/index.spec')
diff --git a/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js b/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js
deleted file mode 100644
index d2bd7ab1ad..0000000000
--- a/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_ADMIN,
-  PASSWORD_PROJECT_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目管理员', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目管理员登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_ADMIN, PASSWORD_PROJECT_ADMIN);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_ADMIN)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js b/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js
deleted file mode 100644
index 957a33e740..0000000000
--- a/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_MANAGEMENT,
-  PASSWORD_PROJECT_MANAGEMENT
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 management', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 management 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_MANAGEMENT, PASSWORD_PROJECT_MANAGEMENT);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_MANAGEMENT)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js b/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js
deleted file mode 100644
index 8d588f9690..0000000000
--- a/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_OPERATION,
-  PASSWORD_PROJECT_OPERATION
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 operation', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 operation 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_OPERATION, PASSWORD_PROJECT_OPERATION);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_OPERATION)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js b/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js
deleted file mode 100644
index 8349b60c83..0000000000
--- a/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_QUERY,
-  PASSWORD_PROJECT_QUERY
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 operation', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 operation 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_QUERY, PASSWORD_PROJECT_QUERY);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_QUERY)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js b/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js
deleted file mode 100644
index 87c5c5fe14..0000000000
--- a/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js
+++ /dev/null
@@ -1,415 +0,0 @@
-const { Builder, By, until, Key } = require('selenium-webdriver')
-const { login, logout, addTableLink, addMeasure } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea, changeFormSelect, dragAndDrop } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN,
-  PROJECT_NAME,
-  MODEL_NAME
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员创建项目', async function () {
-  this.timeout(60000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect({ width: 1580, height: 828 })
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  // 修改默认密码
-  // it('修改默认密码', async () => {
-  //   // 统一调用登录
-  //   await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN);
-  //   await driver.sleep(3000)
-
-  //   try {
-  //     await driver.wait(until.elementIsVisible(driver.findElement(By.css('.user-edit-modal'))), 10000)
-  //   } catch (e){
-  //     return true
-  //   }
-  //   // 修改密码的弹窗
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_oldPassword', PASSWORD_ADMIN)
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_newPassword', PASSWORD_ADMIN_NEW)
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_confirmPwd', PASSWORD_ADMIN_NEW)
-  //   await driver.sleep(1000)
-  //   await driver.findElement(By.css('.user-edit-modal .el-dialog__footer .el-button--primary')).click()
-  //   await driver.sleep(4000)
-  // })
-
-  // it('登出,让修改的密码生效', async () => {
-  //   // 执行登出,让修改后的账密状态更新
-  //   await logout(driver)
-  //   await driver.sleep(2000)
-  // })
-
-  // 创建项目
-  it('创建项目', async () => {
-    // 统一调用登录
-    await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN)
-    try {
-      await driver.findElement(By.css('.linsencebox .el-dialog__footer .el-button:nth-child(2)')).click() // 防止有过期弹窗出现时,第一次点不不到添加项目按钮
-      await driver.sleep(1000)
-    } catch (e) {}
-    await driver.wait(until.elementLocated(By.css('.topbar .add-project-btn')), 3000)
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.topbar .add-project-btn')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.project-edit-modal'))), 10000)
-    changeFormInput(driver, '.project-edit-modal .js_projectname', PROJECT_NAME)
-    changeFormTextarea(driver, '.project-edit-modal .js_project_desc', 'this is it test auto create project')
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-edit-modal .el-dialog__footer .js_addproject_submit')).click()
-
-    // 接口有时候是 3 秒等待
-    await driver.sleep(3000)
-    // 添加完成后,进入的是数据源页面
-    // assert.equal(await driver.getCurrentUrl(), `${LAUNCH_URL}/#/studio/source`);
-    // await driver.sleep(2000)
-  })
-
-  // 加载数据源
-  it('加载数据源', async () => {
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.data-source-bar .btn-group .el-button--primary'))), 10000)
-    await driver.findElement(By.css('.data-source-bar .btn-group .el-button--primary')).click()
-    // until 弹窗出来后 点击 hive
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.data-srouce-modal'))), 10000)
-    await driver.findElement(By.css('.data-srouce-modal .source-new .datasouce .el-icon-ksd-hive')).click()
-    await driver.sleep(1000)
-
-    // 点击下一步按钮
-    await driver.findElement(By.css('.data-srouce-modal .el-dialog__footer .el-button--primary')).click()
-    await driver.sleep(3000)
-    // 搜索 ssb
-    // await changeFormInput(driver, '.source-hive .list .el-input', 'SSB')
-    // const actions = driver.actions({bridge: true})
-    // await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    // await driver.sleep(1000)
-    // 找到 ssb,点击选中所有
-    // await hoverOn(driver, By.css('.guide-ssb'))
-    // await driver.findElement(By.css('.guide-ssb .select-all')).click()
-    // 收起default(里面有SSB表)展开 ssb
-    // try {
-    //   await driver.findElement(By.css('.guide-default')).click()
-    //   await driver.sleep(1000)
-    // } catch (e) {}
-    // await driver.findElement(By.css('.guide-ssb')).click()
-    // await driver.sleep(1000)
-    // await driver.findElement(By.css('.ssb-more')).click()
-    // await driver.sleep(1000)
-    // 先搜索,再选中table SSB['CUSTOMER', 'DATES', 'PART', 'P_LINEORDER', 'SUPPLIER', 'LINEORDER']
-    const actions = driver.actions({bridge: true})
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.CUSTOMER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.CUSTOMER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.DATES')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.DATES')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.PART')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.PART')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.P_LINEORDER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.P_LINEORDER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.LINEORDER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.LINEORDER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.SUPPLIER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.SUPPLIER')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.data-srouce-modal .el-dialog__footer .el-button--primary')).click()
-    await driver.sleep(3000)
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.data-srouce-modal'))))
-  })
-
-  // 设置默认数据库
-  it('配置默认数据库', async () => {
-    // 点击菜单设置
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.data-srouce-modal'))), 20000)
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-setting')).click()
-
-    // 点击高级设置的 tab
-    await driver.wait(until.elementLocated(By.id('tab-advanceSetting')), 3000)
-    await driver.findElement(By.id('tab-advanceSetting')).click()
-
-    // 选择 下拉里的 ssb
-    await driver.wait(until.elementLocated(By.css('.js_defautDB_block')), 3000)
-    await changeFormSelect(driver, '.js_defautDB_block .js_select', '.js_defautDB_select .el-select-dropdown__list', 2)
-    await driver.sleep(1000)
-    // 点击提交
-    await driver.findElement(By.css('#pane-advanceSetting .js_defautDB_block .block-foot .el-button--default')).click()
-    // 点击二次确认弹窗的按钮
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=修改默认数据库]'))), 10000)
-    await driver.findElement(By.css('div[aria-label=修改默认数据库] .el-message-box__btns .el-button--primary')).click()
-    await driver.sleep(3000)
-  })
-  // 建模
-  it('在项目 PROJECT_NAME 下建模', async () => {
-    // 回到dashboard页面
-    // await driver.findElement(By.css('.entry-admin')).click()
-    // await driver.sleep(3000)
-    // 切换到 PROJECT_NAME 项目下
-    // await changeToCurProject(driver, PROJECT_NAME)
-    // await driver.sleep(2000)
-
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('studio')), 10000)
-    await driver.findElement(By.id('studio')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('studio')).findElement(By.css('.el-menu .el-menu-item:nth-child(2)')).click()
-    await driver.sleep(2000)
-
-    // 新建模型
-    await driver.wait(until.elementLocated(By.id('addModel')), 10000)
-    await driver.findElement(By.id('addModel')).findElement(By.css('.el-button:nth-child(1)')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.js_add-model'))))
-    await changeFormInput(driver, '.js_add-model .el-form-item:nth-child(1) .el-input', MODEL_NAME)
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.js_add-model .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(2000)
-    // 如果有引导遮罩,点击关闭
-    let mask = null
-    try {
-      mask = await driver.findElement(By.css('.model-guide-mask'))
-    } catch (e) {}
-    if (mask) {
-      await driver.findElement(By.css('.model-guide-mask .dim-meas-block .el-button')).click()
-      await driver.sleep(1000)
-    }
-
-    // 拖入事实表
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbp_lineorder', '.model-edit-outer', 800, 200)
-    await driver.sleep(1000)
-    // 切换事实表
-    await driver.findElement(By.css('.model-edit-outer .table-box .el-icon-ksd-table_setting')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.model-edit-outer .fast-action-box .switch')).click()
-    await driver.sleep(1000)
-
-    // 拖入lookup 表
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbdates', '.model-edit-outer', 400, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbcustomer', '.model-edit-outer', 650, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbsupplier', '.model-edit-outer', 900, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbpart', '.model-edit-outer', 1150, 519)
-    await driver.sleep(1000)
-
-    // 连接表关系
-    await addTableLink(driver, '.js_p_lineorder', '.js_dates', 6, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_customer', 3, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_supplier', 5, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_part', 4, 1)
-
-    // 批量选维度
-    await driver.findElement(By.css('.model-edit-outer .panel-dimension .el-icon-ksd-backup')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.dimension-modal'))))
-    // 添加维度
-    // 'P_LINEORDER.LO_ORDERDATE',
-    // 'P_LINEORDER.LO_CUSTKEY',
-    // 'P_LINEORDER.LO_SUPPKEY',
-    // 'P_LINEORDER.LO_PARTKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_ORDERDATE .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_CUSTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_SUPPKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_PARTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .table-header')).click()
-    await driver.sleep(1000)
-    // 'DATES.D_DATEKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .el-table .guide-DATESD_DATEKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .table-header')).click()
-    await driver.sleep(1000)
-    // 'CUSTOMER.C_CUSTKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .el-table .guide-CUSTOMERC_CUSTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .table-header')).click()
-    await driver.sleep(1000)
-    // 'SUPPLIER.S_SUPPKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .el-table .guide-SUPPLIERS_SUPPKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .table-header')).click()
-    await driver.sleep(1000)
-    // 'PART.P_PARTKEY'
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .el-table .guide-PARTP_PARTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.dimension-modal'))))
-
-    // 添加度量
-    // [{
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.LO_REVENUE'
-    // }, {
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.LO_SUPPLYCOST'
-    // }, {
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.V_REVENUE'
-    // }, {
-    //   expression: 'COUNT_DISTINCT',
-    //   parameter: 'P_LINEORDER.LO_LINENUMBER'
-    // }]
-    await driver.findElement(By.css('.tool-icon-group .tool-icon:nth-child(1)')).click()
-    await driver.sleep(1000)
-    await addMeasure(driver, 'testMeasure1', 'SUM(column)', 'LO_REVENUE')
-    await addMeasure(driver, 'testMeasure2', 'SUM(column)', 'LO_SUPPLYCOST')
-    await addMeasure(driver, 'testMeasure3', 'SUM(column)', 'V_REVENUE')
-    await addMeasure(driver, 'testMeasure4', 'COUNT_DISTINCT', 'LO_LINENUMBER')
-
-    // 保存模型
-    await driver.findElement(By.css('.mode-edit-tabs .footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.model-partition-dialog'))))
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column-format', '.js_partition-column-format .el-select-dropdown__list', 6)
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column', '.js_partition-column .el-select-dropdown__list', 6)
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column-format', '.js_partition-column-format .el-select-dropdown__list', 1)
-    await driver.findElement(By.css('.model-partition-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.model-partition-dialog'))))
-
-    // 跳转去模型list页面,并展开至添加聚合组tab
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.add-index-confirm-dialog'))))
-    await driver.findElement(By.css('.add-index-confirm-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(3000)
-  })
-
-  // 建索引
-  it('在项目 PROJECT_NAME 下的模型 MODEL_NAME 建索引', async () => {
-    // 如果有引导遮罩,点击忽略
-    let mask = null
-    try {
-      mask = await driver.findElement(By.css('.model-guide-mask'))
-    } catch (e) {}
-    if (mask) {
-      await driver.findElement(By.css('.model-guide-mask .index-block .btn-group .el-button:nth-child(1)')).click()
-      await driver.sleep(1000)
-    }
-    // // 临时处理:展开第一个模型
-    // await driver.findElement(By.css('.model_list_table .el-icon-caret-right')).click()
-    // await driver.sleep(1000)
-    // await driver.findElement(By.id('tab-third')).click()
-    // await driver.sleep(2000)
-
-    // 添加聚合组
-    await driver.findElement(By.css('.model-aggregate-view .el-icon-ksd-project_add')).click()
-    await driver.sleep(1000)
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.aggregate-modal'))))
-    // 包含维度
-    await driver.findElement(By.css('.aggregate-modal .add-includes-btn')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.edit-includes-dimensions'))))
-    await driver.findElement(By.css('.edit-includes-dimensions .table-header .el-checkbox')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.edit-includes-dimensions .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(1000)
-    // 必需维度
-    await changeFormSelect(driver, '.aggregate-modal .mandatory-select', '.js_mandatory-select', 4)
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 层级维度
-    await changeFormSelect(driver, '.aggregate-modal .hierarchy-select', '.js_hierarchy-select', [3, 7, 6])
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 联合维度
-    await changeFormSelect(driver, '.aggregate-modal .joint-select', '.js_joint-select', [3, 2])
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 保存聚合组
-    await driver.findElement(By.css('.aggregate-modal .dialog-footer .right .el-button:nth-child(3)')).click()
-    await driver.sleep(3000)
-    // 构建索引
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.model-build'))))
-    await driver.findElement(By.css('.model-build .el-icon-ksd-data_range_search')).click()
-    // await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.dialog-footer .el-button.is-disabled'))))
-    await driver.sleep(2000)
-    await driver.findElement(By.css('.model-build .dialog-footer .el-button:nth-child(2)')).click()
-    await driver.sleep(4000)
-    // 跳转到job页面
-    await driver.wait(until.elementLocated(By.id('monitor')), 10000)
-    await driver.findElement(By.id('monitor')).click()
-    await driver.findElement(By.id('monitor')).findElement(By.css('.el-menu .el-menu-item:nth-child(1)')).click()
-    await driver.sleep(2000)
-  })
-
-  // 查询
-  it('查询一条 sql', async () => {
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('query')), 10000)
-    await driver.findElement(By.id('query')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('query')).findElement(By.css('.el-menu .el-menu-item:nth-child(1)')).click()
-    await driver.sleep(2000)
-    await changeFormTextarea(driver, '.query_panel_box', 'select sum(lo_revenue) as revenue from ssb.lineorder left join ssb.dates on lo_orderdate = d_datekey where d_year = 1993 and lo_discount between 1 and 3 and lo_quantity < 25')
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.query_panel_box .operator .el-form-item:last-child .el-button')).click()
-    await driver.sleep(3000)
-  })
-
-  it('清除模型项目退出登录', async () => {
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('studio')), 10000)
-    await driver.findElement(By.id('studio')).findElement(By.css('.el-menu .el-menu-item:nth-child(2)')).click()
-    await driver.sleep(2000)
-    // 删除模型
-    await driver.findElement(By.css('.model_list_table .el-icon-ksd-table_others')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.specialDropdown .el-dropdown-menu__item:nth-child(7')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.el-message-box'))))
-    await driver.findElement(By.css('.el-message-box .el-message-box__btns .el-button:nth-child(2)')).click()
-    await driver.sleep(1000)
-    // 跳转系统管理页面
-    await driver.findElement(By.css('.entry-admin')).click()
-    await driver.sleep(4000)
-    // 搜索项目删除项目
-    await changeFormInput(driver, '.show-search-btn', PROJECT_NAME)
-    await driver.sleep(1000)
-    const actions = driver.actions({bridge: true})
-    await actions.click(await driver.findElement(By.css('.show-search-btn'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-table .el-icon-ksd-table_others')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-dropdown .el-dropdown-menu__item:nth-child(4)')).click()
-    await driver.sleep(1000)
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.el-message-box'))))
-    await driver.findElement(By.css('.el-message-box .el-message-box__btns .el-button:nth-child(2)')).click()
-    await driver.sleep(3000)
-    // 登出
-    await logout(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/login/login.spec.js b/kystudio/e2e/specs/systemAdmin/login/login.spec.js
deleted file mode 100644
index d79d34aae2..0000000000
--- a/kystudio/e2e/specs/systemAdmin/login/login.spec.js
+++ /dev/null
@@ -1,126 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-// const { clearFormInput } = require('../../utils/domHelper')
-const { closeLicenseBox, waitingForPageClean } = require('../../utils/businessHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员登录', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  // 异常用例
-  it('空的表单登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1840, 828)
-
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-    await driver.sleep(1000)
-
-    const usernameString = await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) .el-form-item__error')).getText()
-    assert.equal(usernameString, '请输入用户名')
-
-    const passwordString = await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) .el-form-item__error')).getText()
-    assert.equal(passwordString, '请输入密码')
-  })
-
-  /* it('错误的用户名', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys('error_error_error')
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('找不到用户'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码一次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误。'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码二次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误。'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码三次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误,请在30秒后再次重试'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  }) */
-
-  it('用户管理员登录', async () => {
-    // 前面的多次尝试错误,会锁住 30 秒,保险起见,等待 31 秒后进行登录
-    // await driver.sleep(31000)
-    await waitingForPageClean(driver)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(PASSWORD_ADMIN)
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementLocated(By.css('.topbar .limit-user-name')), 10000)
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_ADMIN)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js b/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js
deleted file mode 100644
index 08d44c738c..0000000000
--- a/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { clearFormInput } = require('../../utils/domHelper')
-const { closeLicenseBox, waitingForPageClean } = require('../../utils/businessHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('登出', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('用户管理员登出', async () => {
-    // 登录的用例在其他用例之前都要执行了
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-    await waitingForPageClean(driver)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(PASSWORD_ADMIN)
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    // 从登录页进来到登出需要等待下
-    await driver.sleep(3000)
-    const usernameEl = await driver.findElement(By.css('.topbar .user-msg-dropdown .el-dropdown-link'))
-    const dropdownMenuId = await usernameEl.getAttribute('aria-controls')
-    await driver.actions().move({ origin: usernameEl }).perform()
-    await driver.sleep(1000)
-
-    await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-    await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(3)`)).click()
-
-    await driver.wait(until.elementLocated(By.css('.el-message-box')), 10000)
-    await driver.findElement(By.css(`.el-message-box .el-button--primary`)).click()
-
-    await driver.wait(until.elementLocated(By.css('.login-form')), 10000)
-  })
-})
diff --git a/kystudio/e2e/specs/utils/businessHelper.js b/kystudio/e2e/specs/utils/businessHelper.js
deleted file mode 100644
index b5c086ab75..0000000000
--- a/kystudio/e2e/specs/utils/businessHelper.js
+++ /dev/null
@@ -1,216 +0,0 @@
-const { until, By, Key } = require('selenium-webdriver')
-const { waitingForStable, clearFormInput, changeFormInput, changeFormSelect, dragAndDrop } = require('../utils/domHelper')
-
-exports.closeLicenseBox = async function closeLicenseBox (driver) {
-  try {
-    await driver.findElement(By.css('.el-dialog__wrapper.linsencebox')).click()
-  } catch (e) {}
-}
-
-exports.waitingForPageClean = async function waitingForPageClean (driver) {
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-message-box__wrapper'))
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 10000)
-      } catch (e) {}
-    }
-  } catch (e) {}
-
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-dialog__wrapper'))
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 10000)
-      } catch (e) {}
-    }
-  } catch (e) {}
-}
-
-// 封装的登录
-exports.login = async function login(driver, username, password) {
-  await driver.wait(until.elementLocated(By.css('.login-form .el-button--primary')), 10000)
-  await driver.findElement(By.css('.ke-it-cn')).click()
-  // 浏览器会自动填入 admin,所以要先置空用户名的输入框
-  await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-  await driver.sleep(2000)
-  await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(username)
-  await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(password)
-  await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-  await driver.wait(until.elementLocated(By.css('.topbar .limit-user-name')), 10000)
-}
-
-// 封装的登出
-exports.logout = async function logout(driver) {
-  const usernameEl = await driver.findElement(By.css('.topbar .user-msg-dropdown .el-dropdown-link'))
-  const dropdownMenuId = await usernameEl.getAttribute('aria-controls')
-  await driver.actions().move({ origin: usernameEl }).perform()
-  await driver.sleep(1000)
-
-  await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-  await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(3)`)).click()
-
-  await driver.wait(until.elementLocated(By.css('.el-message-box')), 10000)
-  await driver.findElement(By.css(`.el-message-box .el-button--primary`)).click()
-
-  await driver.wait(until.elementLocated(By.css('.login-form')), 10000)
-}
-
-exports.addUser = async function addUser (driver, username, pwd) {
-  await driver.sleep(2000)
-  await driver.findElement(By.css('.security-user .el-row .el-button--primary')).click()
-  await driver.sleep(1000)
-
-  changeFormInput(driver, '.user-edit-modal .js_username', username)
-  await driver.sleep(1000)
-  changeFormInput(driver, '.user-edit-modal .js_password', pwd)
-  await driver.sleep(1000)
-  changeFormInput(driver, '.user-edit-modal .js_confirmPwd', pwd)
-  await driver.sleep(1000)
-  await driver.findElement(By.css('.user-edit-modal .el-dialog__footer .el-button--primary')).click()
-  await driver.sleep(5000)
-}
-
-exports.delUser = async function delUser (driver, username, idx) {
-  // 先清空搜索
-  await clearFormInput(driver, '.show-search-btn input')
-  await driver.sleep(1000)
-
-  // 精确搜索想要删除的用户,保证列表只有一条记录
-  await changeFormInput(driver, '.show-search-btn', username)
-  await driver.sleep(1000)
-
-  const actions = driver.actions({bridge: true})
-  // 执行回车搜索
-  await actions.click(await driver.findElement(By.css('.show-search-btn input'))).sendKeys(Key.ENTER).perform()
-
-  await driver.sleep(2000)
-  // 点击右侧更多按钮
-  await driver.findElement(By.css('.el-icon-ksd-table_others')).click()
-  let moreBtnEl = await driver.findElement(By.css('.el-icon-ksd-table_others'))
-  // 更多按钮上的 aria-controls 属性对应的就是 dropdown 的下拉 div 的id
-  let dropdownMenuId = await moreBtnEl.getAttribute('aria-controls')
-  
-  await driver.actions().move({ origin: moreBtnEl }).perform()
-  await driver.sleep(1000)
-
-  await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-  await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(${idx})`)).click()
-
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=删除用户] .el-message-box__btns .el-button--primary'))), 10000)
-  await driver.findElement(By.css('div[aria-label=删除用户] .el-message-box__btns .el-button--primary')).click()
-  await driver.sleep(2000)
-}
-
-exports.searchCurProject = async function searchCurProject (driver, projectname) {
-  await changeFormInput(driver, '#project-list .show-search-btn', projectname)
-  await driver.sleep(1000)
-
-  const actions = driver.actions({bridge: true})
-  // 执行回车搜索
-  await actions.click(await driver.findElement(By.css('#project-list .show-search-btn input'))).sendKeys(Key.ENTER).perform()
-  await driver.sleep(2000)
-}
-
-exports.setUserToProject = async function setUserToProject (driver, username, lineIdx, typeIdx) {
-  // 选 principal
-  const userSel = `.author_dialog .user-group-select:nth-child(${lineIdx}) .user-select`
-  await changeFormSelect(driver, userSel, `.js_principal${lineIdx - 2}`, 1)
-  await driver.sleep(1000)
-
-  // 选具体的人,需要先搜这个人,然后匹配出下拉第几位
-  const user = `.author_dialog .user-group-select:nth-child(${lineIdx}) .name-select${lineIdx - 2}`
-  await changeFormInput(driver, user, username)
-  await driver.sleep(1000)
-  let userIdx = 0
-  let userList = await driver.findElements(By.css(`.js_author-select${lineIdx - 2} .el-select-dropdown__item`))
-  for (let i = 0; i < userList.length; i++) {
-    let item = userList[i]
-    let text = await item.getText()
-    if (text === username) {
-      userIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, user, `.js_author-select${lineIdx - 2}`, userIdx + 1, true)
-  await driver.sleep(1000)
-
-  // 选具体的权限
-  const typeSel = `.author_dialog .user-group-select:nth-child(${lineIdx}) .type-select${lineIdx - 2}`
-  await changeFormSelect(driver, typeSel, `.js_access_type_sel${lineIdx - 2}`, typeIdx)
-  await driver.sleep(1000)
-}
-
-exports.changeToCurProject = async function changeToCurProject (driver, projectName) {
-  const projectSelect = '.topbar .project_select'
-  // await clearFormInput(driver, `${projectSelect} input`)
-  // await changeFormInput(driver, projectSelect, projectName)
-  await driver.findElement(By.css(`${projectSelect} .el-input`)).click()
-  await driver.sleep(1000)
-  let projectIdx = 0
-  let projectList = await driver.findElements(By.css(`.project-select_dropdown .el-select-dropdown__item`))
-  for (let i = 0; i < projectList.length; i++) {
-    let item = projectList[i]
-    let text = await item.getText()
-    if (text === projectName) {
-      projectIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, projectSelect, '.project-select_dropdown', projectIdx + 1, true)
-  await driver.sleep(1000)
-}
-
-exports.addTableLink = async function addTableLink (driver, fTable, pTable, fColumnIdx, pColumnIdx) {
-  await dragAndDrop(driver, `.model-edit-outer ${fTable} .column-list-box ul li:nth-child(1)`, `.model-edit-outer ${pTable} .column-list-box`)
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('.links-dialog'))))
-  // 选择SSB.P_LINEORDER LEFT join SSB.DATES, LO_ORDERDATE = D_DATEKEY
-  await changeFormSelect(driver, '.links-dialog .link-type', '.js_link-type .el-select-dropdown__list', 2)
-  await changeFormSelect(driver, '.links-dialog .foreign-select', '.js_foreign-select .el-select-dropdown__list', fColumnIdx)
-  await changeFormSelect(driver, '.links-dialog .join-type', '.js_join-type .el-select-dropdown__list', 1)
-  await changeFormSelect(driver, '.links-dialog .primary-select', '.js_primary-select .el-select-dropdown__list', pColumnIdx)
-  await driver.findElement(By.css('.links-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-  await driver.sleep(1000)
-}
-
-exports.addMeasure = async function addMeasure (driver, measureName, expression, parameter) {
-  await driver.findElement(By.css('.model-edit-outer .panel-measure .el-icon-ksd-project_add')).click()
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('.add-measure-modal'))))
-  await changeFormInput(driver, '.measure-name-input', measureName)
-
-  const expressionSelect = '.add-measure-modal .measure-expression-select'
-  await driver.findElement(By.css(expressionSelect + ' .el-input')).click()
-  await driver.sleep(1000)
-  let expressionIdx = 0
-  let expressionList = await driver.findElements(By.css(`.js_measure-expression .el-select-dropdown__item`))
-  for (let i = 0; i < expressionList.length; i++) {
-    let item = expressionList[i]
-    let text = await item.getText()
-    if (text === expression) {
-      expressionIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, expressionSelect, '.js_measure-expression', expressionIdx + 1, true)
-  await driver.sleep(1000)
-
-  const parameterSelect = '.add-measure-modal .parameter-select'
-  await driver.findElement(By.css(parameterSelect + ' .el-input')).click()
-  await driver.sleep(1000)
-  let parameterIdx = 0
-  let parameterList = await driver.findElements(By.css(`.js_parameter-select .el-select-dropdown__item`))
-  for (let i = 0; i < parameterList.length; i++) {
-    let item = parameterList[i]
-    let text = await item.getText()
-    if (text.indexOf(parameter) !== -1) {
-      parameterIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, parameterSelect, '.js_parameter-select', parameterIdx + 1, true)
-  await driver.sleep(1000)
-
-  await driver.findElement(By.css('.add-measure-modal  .el-dialog__footer .el-button:nth-child(2)')).click()
-  await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.add-measure-modal '))))
-}
\ No newline at end of file
diff --git a/kystudio/e2e/specs/utils/domHelper.js b/kystudio/e2e/specs/utils/domHelper.js
deleted file mode 100644
index b74076045e..0000000000
--- a/kystudio/e2e/specs/utils/domHelper.js
+++ /dev/null
@@ -1,306 +0,0 @@
-const { By, until } = require('selenium-webdriver');
-
-/**
- * Hover在某个元素上
- * @param {WebDriver} driver WebDriver对象
- * @param {Locator} locator Hover元素的选择器
- */
-async function hoverOn(driver, locator) {
-  try {
-    await driver.wait(until.elementLocated(locator), 1000);
-  } catch (e) {}
-
-  const el = await driver.findElement(locator);
-  await driver.actions().move({ origin: el }).perform();
-}
-
-/**
- * 等待页面上所有的对话框和消息框消失
- * @param {WebDriver} driver WebDriver对象
- */
-async function waitingForPageClean(driver) {
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-message-box__wrapper'));
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 1000);
-      } catch (e) {}
-    }
-  } catch (e) {}
-
-  try {
-    const dialogWrappers = await driver.findElements(By.css('.el-dialog__wrapper'));
-    for (const dialogWrapper of dialogWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(dialogWrapper), 1000);
-      } catch (e) {}
-    }
-  } catch (e) {}
-}
-
-/**
- * 等待页面稳定500ms
- * @param {WebDriver} driver WebDriver对象
- */
-async function waitingForStable(driver) {
-  await driver.sleep(500);
-}
-
-/**
- * Author: jie.luo
- * 等待容器的loading消失
- * @param {WebDriver} driver WebDriver对象
- * @param {String} loadingParentClass loading容器类字符串
- */
-async function waitingForLoading(driver, loadingParentClass) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${loadingParentClass} > div > div > div.el-loading-spinner`)), 1000);
-  } catch (e) {}
-  try {
-    await driver.wait(until.stalenessOf(await driver.findElement(By.css(`${loadingParentClass} > div > div > div.el-loading-spinner`))), 1000);
-  } catch (e) {}
-}
-
-/**
- * Author: jie.luo
- * JS辅助:清除表单输入框的值
- * @param {WebDriver} driver WebDriver对象
- * @param {String} selector 输入框的选择器字符串
- */
-async function clearFormInput(driver, selector) {
-  await driver.executeScript(`
-    var input = document.querySelector("${selector}");
-    input.value = "";
-    // dispatchEvent触发的是原生的event,不是react event。此处有待出解决方案。
-    // input.dispatchEvent(new Event("change"));
-  `);
-}
-
-/**
- * JS辅助:在浏览器端打印内容
- * @param {WebDriver} driver WebDriver对象
- * @param  {...any} args 打印内容
- */
-async function logInBrowser(driver, ...args) {
-  const messages = args.map(arg => {
-    switch (typeof arg) {
-      case 'object': return `JSON.parse(JSON.stringify(${arg}))`;
-      case 'string': return `'${arg}'`;
-      default: return arg.toString();
-    }
-  });
-  const scripts = messages.join(', ');
-  await driver.executeScript(`
-    console.log(${scripts});
-  `);
-}
-
-/**
- * JS辅助:在浏览器端监听打印鼠标按下、移动、抬起事件
- * @param {WebDriver} driver WebDriver对象
- */
-async function traceMouseEvents(driver) {
-  await driver.executeScript(`
-    try {
-      if (!handleMouseDown) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseDown = function handleMouseDown(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseMove) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseMove = function handleMouseMove(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseUp) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseUp = function handleMouseUp(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    window.removeEventListener('mousedown', handleMouseDown);
-    window.removeEventListener('mousemove', handleMouseMove);
-    window.removeEventListener('mouseup', handleMouseUp);
-    window.addEventListener('mousedown', handleMouseDown);
-    window.addEventListener('mousemove', handleMouseMove);
-    window.addEventListener('mouseup', handleMouseUp);
-  `);
-}
-
-/**
- * JS辅助:在浏览器端停止监听鼠标按下、移动、抬起事件
- * @param {WebDriver} driver WebDriver对象
- */
-async function stopMouseEvents(driver) {
-  await driver.executeScript(`
-    try {
-      if (!handleMouseDown) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseDown = function handleMouseDown(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseMove) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseMove = function handleMouseMove(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseUp) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseUp = function handleMouseUp(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    window.removeEventListener('mousedown', handleMouseDown);
-    window.removeEventListener('mousemove', handleMouseMove);
-    window.removeEventListener('mouseup', handleMouseUp);
-  `);
-}
-
-/**
- * JS辅助:拖拽目标元素放置在容器上
- * @param {WebDriver} driver WebDriver对象
- * @param {String} dragSelector 拖拽元素的选择器字符串
- * @param {String} dropSelector 放置拖拽元素容器的选择器字符串
- */
-async function dragAndDrop(driver, dragSelector, dropSelector, clientX = 0, clientY = 0) {
-  await driver.executeScript(`
-    function customEvent(typeOfEvent, x, y) {
-      var event = document.createEvent("CustomEvent");
-      event.initCustomEvent(typeOfEvent, true, true, null);
-      event.dataTransfer = {
-          data: {},
-          setData: function (key, value) {
-              this.data[key] = value;
-          },
-          getData: function (key) {
-              return this.data[key];
-          }
-      };
-      event.clientX = x;
-      event.clientY = y;
-      return event;
-    }
-    function dispatchEvent(element, event, transferData) {
-      if (transferData !== undefined) {
-          event.dataTransfer = transferData;
-      }
-      if (element.dispatchEvent) {
-          element.dispatchEvent(event);
-      } else if (element.fireEvent) {
-          element.fireEvent("on" + event.type, event);
-      }
-    }
-    (function() {
-      var dragEl = document.querySelector('${dragSelector}');
-      var dropEl = document.querySelector('${dropSelector}');
-      var dragStartEvent = customEvent('dragstart');
-      dispatchEvent(dragEl, dragStartEvent);
-      var dropEvent = customEvent('drop', ${clientX}, ${clientY});
-      dispatchEvent(dropEl, dropEvent, dragStartEvent.dataTransfer);
-      var dragEndEvent = customEvent('dragend');
-      dispatchEvent(dragEl, dragEndEvent, dropEvent.dataTransfer);
-    })()
-  `);
-}
-
-async function changeFormSelect(driver, selector, popoverSelector, optionIdx, isFilter) {
-  if (!isFilter) {
-    try {
-      await driver.wait(until.elementLocated(By.css(`${selector} .el-input`)), 10000);
-    } catch (e) {}
-    await driver.findElement(By.css(`${selector} .el-input`)).click();
-    await driver.sleep(1000)
-  }
-  if (optionIdx instanceof Array) {
-    for (const idx of optionIdx) {
-      await driver.wait(until.elementIsVisible(await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${idx})`))), 1000);
-      await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${idx})`)).click();
-    }
-    try {
-      await driver.findElement(By.css(`${popoverSelector} .el-kylin-more`)).click();
-    } catch (e) {}
-  } else {
-    await driver.wait(until.elementIsVisible(await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${optionIdx})`))), 2000);
-    await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${optionIdx})`)).click();
-  }
-}
-
-async function changeFormInput(driver, selector, value) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} input`)), 1000);
-  } catch (e) {}
-  await clearFormInput(driver, `${selector} input`);
-  await driver.findElement(By.css(`${selector} input`)).sendKeys(value);
-}
-
-async function changeFormTextarea(driver, selector, value) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} textarea`)), 1000);
-  } catch (e) {}
-  await clearFormInput(driver, `${selector} textarea`);
-  await driver.findElement(By.css(`${selector} textarea`)).sendKeys(value);
-}
-
-async function changeFormCascader(driver, selector, optionsIdx) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} input`)), 1000);
-  } catch (e) {}
-  await driver.findElement(By.css(`${selector} input`)).click();
-
-  for (let i = 0; i < optionsIdx.length; i += 1) {
-    const optionIdx = optionsIdx[i];
-    try {
-      await driver.sleep(1000);
-      await driver.wait(until.elementLocated(By.css(`${selector} .el-cascader-menu:nth-child(${i + 1}) .el-cascader-menu__item:nth-child(${optionIdx})`)), 1000);
-    } catch (e) {}
-    await driver.findElement(By.css(`${selector} .el-cascader-menu:nth-child(${i + 1}) .el-cascader-menu__item:nth-child(${optionIdx})`)).click();
-  }
-}
-
-exports.waitingForLoading = waitingForLoading;
-exports.waitingForStable = waitingForStable;
-exports.waitingForPageClean = waitingForPageClean;
-
-exports.hoverOn = hoverOn;
-exports.dragAndDrop = dragAndDrop;
-exports.clearFormInput = clearFormInput;
-exports.changeFormInput = changeFormInput;
-exports.changeFormTextarea = changeFormTextarea;
-exports.changeFormSelect = changeFormSelect;
-exports.changeFormCascader = changeFormCascader;
-
-exports.logInBrowser = logInBrowser;
-exports.traceMouseEvents = traceMouseEvents;
-exports.stopMouseEvents = stopMouseEvents;
\ No newline at end of file
diff --git a/kystudio/e2e/specs/utils/index.js b/kystudio/e2e/specs/utils/index.js
deleted file mode 100644
index db080634af..0000000000
--- a/kystudio/e2e/specs/utils/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.domHelper = require('./domHelper')
-exports.businessHelper = require('./businessHelper')
diff --git a/kystudio/mock/aggregateIndex.js b/kystudio/mock/aggregateIndex.js
index 8af70522e6..f62345ce6f 100644
--- a/kystudio/mock/aggregateIndex.js
+++ b/kystudio/mock/aggregateIndex.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 let nodeTotalCount = 0
 
 function getAggregateData () {
diff --git a/kystudio/src/canvas/TableJoint/handler.js b/kystudio/src/canvas/TableJoint/handler.js
index df58e5b88f..80ced01b70 100644
--- a/kystudio/src/canvas/TableJoint/handler.js
+++ b/kystudio/src/canvas/TableJoint/handler.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 function getPoints (position, node) {
   switch (position) {
     case 'top': return { x: node.x + node.width / 2, y: node.y }
diff --git a/kystudio/src/canvas/index.js b/kystudio/src/canvas/index.js
index 29eeabff7c..fe780d7a72 100644
--- a/kystudio/src/canvas/index.js
+++ b/kystudio/src/canvas/index.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import Stage from './Stage/Stage'
 import ModelTable from './ModelTable/ModelTable'
 import TableJoint from './TableJoint/TableJoint'
diff --git a/kystudio/src/canvas/utils/index.js b/kystudio/src/canvas/utils/index.js
index 93dc870dea..5a39910994 100644
--- a/kystudio/src/canvas/utils/index.js
+++ b/kystudio/src/canvas/utils/index.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import * as style from './style'
 
 export {
diff --git a/kystudio/src/canvas/utils/style.js b/kystudio/src/canvas/utils/style.js
index 47263a1171..f7521d0936 100644
--- a/kystudio/src/canvas/utils/style.js
+++ b/kystudio/src/canvas/utils/style.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export function withoutPaddings (sizeType, boxSize, paddings) {
   let paddingSize = 0
 
diff --git a/kystudio/src/components/admin/Diagnostic/locales.js b/kystudio/src/components/admin/Diagnostic/locales.js
index 86374ae905..4aa0b48320 100644
--- a/kystudio/src/components/admin/Diagnostic/locales.js
+++ b/kystudio/src/components/admin/Diagnostic/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   'en': {
     dialogTitle: 'Diagnosis',
diff --git a/kystudio/src/components/admin/Diagnostic/store.js b/kystudio/src/components/admin/Diagnostic/store.js
index edfacda84f..a848d0fd4c 100644
--- a/kystudio/src/components/admin/Diagnostic/store.js
+++ b/kystudio/src/components/admin/Diagnostic/store.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import api from '../../../service/api'
 import { apiUrl } from '../../../config/index'
 import { handleError } from '../../../util/business'
diff --git a/kystudio/src/components/admin/Group/locales.js b/kystudio/src/components/admin/Group/locales.js
index 49bfd12875..c93a89ed92 100644
--- a/kystudio/src/components/admin/Group/locales.js
+++ b/kystudio/src/components/admin/Group/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   en: {
     newGroup: 'Add User Group',
diff --git a/kystudio/src/components/admin/SystemCapacity/locales.js b/kystudio/src/components/admin/SystemCapacity/locales.js
index adfe60e9c3..a8991f3dd5 100644
--- a/kystudio/src/components/admin/SystemCapacity/locales.js
+++ b/kystudio/src/components/admin/SystemCapacity/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   'en': {
     usedNodes: 'Node Used',
diff --git a/kystudio/src/components/admin/User/locales.js b/kystudio/src/components/admin/User/locales.js
index 978bf09f07..ad597f32a4 100644
--- a/kystudio/src/components/admin/User/locales.js
+++ b/kystudio/src/components/admin/User/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   en: {
     back: 'Back',
diff --git a/kystudio/src/components/common/DataSourceBar/handler.js b/kystudio/src/components/common/DataSourceBar/handler.js
index 06aa9acef5..9668c26067 100644
--- a/kystudio/src/components/common/DataSourceBar/handler.js
+++ b/kystudio/src/components/common/DataSourceBar/handler.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import { sourceTypes, sourceNameMapping, pageSizeMapping, columnTypeIcon } from '../../../config'
 import { transToServerGmtTime } from '../../../util'
 export const render = {
diff --git a/kystudio/src/components/common/DataSourceBar/locales.js b/kystudio/src/components/common/DataSourceBar/locales.js
index 01ca76d98c..159ddbe06c 100644
--- a/kystudio/src/components/common/DataSourceBar/locales.js
+++ b/kystudio/src/components/common/DataSourceBar/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   'en': {
     searchTable: 'Search Database/Table',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceHive/handler.js b/kystudio/src/components/common/DataSourceModal/SourceHive/handler.js
index 8cc749fa63..3bec7056bb 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceHive/handler.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceHive/handler.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import { pageSizeMapping } from '../../../../config'
 
 export function getDatabaseTablesTree (databases) {
diff --git a/kystudio/src/components/common/DataSourceModal/SourceHive/locales.js b/kystudio/src/components/common/DataSourceModal/SourceHive/locales.js
index a3bbcd679e..254648f51d 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceHive/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceHive/locales.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 export default {
   'en': {
     dialogHiveTreeLoading: 'loading',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceHive/mock.js b/kystudio/src/components/common/DataSourceModal/SourceHive/mock.js
index 1a1700a1dd..72294a0e5d 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceHive/mock.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceHive/mock.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   data: {
     code: '000',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/handler.js b/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/handler.js
index 7b41ae6843..f0a9be8d24 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/handler.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { editTypes } from '../handler'
 
 export const fieldVisiableMaps = {
diff --git a/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/locales.js b/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/locales.js
index 826464bbfd..3343c5b9a2 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceHiveSetting/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     type: 'Source Type',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceAuthorityForm/locales.js b/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceAuthorityForm/locales.js
index d488b71b03..cc0e711799 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceAuthorityForm/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceAuthorityForm/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     connectionString: 'JDBC Connection String',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceGbase/locales.js b/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceGbase/locales.js
index 30fc8d810f..f7f1f96f70 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceGbase/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceJDBC/SourceGbase/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     alreadySyncTips: 'The data source info could be modified in Basic Settings.'
diff --git a/kystudio/src/components/common/DataSourceModal/SourceKafka/locales.js b/kystudio/src/components/common/DataSourceModal/SourceKafka/locales.js
index 8c0571355b..3a41c8944b 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceKafka/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceKafka/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     inputClusterInfo: 'Kafka Cluster',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceKafkaStep2/locales.js b/kystudio/src/components/common/DataSourceModal/SourceKafkaStep2/locales.js
index c7d06f080a..e4973c1b71 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceKafkaStep2/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceKafkaStep2/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     tableName: 'Database and Table Name',
diff --git a/kystudio/src/components/common/DataSourceModal/SourceSelect/locales.js b/kystudio/src/components/common/DataSourceModal/SourceSelect/locales.js
index bd365540bb..28b89565e5 100644
--- a/kystudio/src/components/common/DataSourceModal/SourceSelect/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/SourceSelect/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dataSourceTypeCheckTip: 'Select Data Source',
diff --git a/kystudio/src/components/common/DataSourceModal/handler.js b/kystudio/src/components/common/DataSourceModal/handler.js
index 18c9e23008..f4fa516163 100644
--- a/kystudio/src/components/common/DataSourceModal/handler.js
+++ b/kystudio/src/components/common/DataSourceModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { sourceTypes } from '../../../config'
 import { collectObject } from '../../../util'
 export const editTypes = {
diff --git a/kystudio/src/components/common/DataSourceModal/locales.js b/kystudio/src/components/common/DataSourceModal/locales.js
index 5a29c47147..c3d286dc9c 100644
--- a/kystudio/src/components/common/DataSourceModal/locales.js
+++ b/kystudio/src/components/common/DataSourceModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     selectSource: 'Add New Source',
diff --git a/kystudio/src/components/common/DataSourceModal/store.js b/kystudio/src/components/common/DataSourceModal/store.js
index 9f76fa1f12..803c0fb109 100644
--- a/kystudio/src/components/common/DataSourceModal/store.js
+++ b/kystudio/src/components/common/DataSourceModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { set } from '../../../util/object'
 import { sourceTypes } from '../../../config'
 export const types = {
diff --git a/kystudio/src/components/common/DropdownFilter/handler.js b/kystudio/src/components/common/DropdownFilter/handler.js
index c77f1963c8..5ba01677fa 100644
--- a/kystudio/src/components/common/DropdownFilter/handler.js
+++ b/kystudio/src/components/common/DropdownFilter/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export function getPickerOptions () {
   return [
     {
diff --git a/kystudio/src/components/common/DropdownFilter/locales.js b/kystudio/src/components/common/DropdownFilter/locales.js
index 71dab10437..95607a9a65 100644
--- a/kystudio/src/components/common/DropdownFilter/locales.js
+++ b/kystudio/src/components/common/DropdownFilter/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     clearSelectItems: 'Clear selected items',
diff --git a/kystudio/src/components/common/EditProjectConfigDialog/store.js b/kystudio/src/components/common/EditProjectConfigDialog/store.js
index cec430ec73..a402325827 100644
--- a/kystudio/src/components/common/EditProjectConfigDialog/store.js
+++ b/kystudio/src/components/common/EditProjectConfigDialog/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/common/EmptyData/locales.js b/kystudio/src/components/common/EmptyData/locales.js
index ee31734d74..604e261ceb 100644
--- a/kystudio/src/components/common/EmptyData/locales.js
+++ b/kystudio/src/components/common/EmptyData/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     content: 'No Data'
diff --git a/kystudio/src/components/common/GlobalDialog/dialog/store.js b/kystudio/src/components/common/GlobalDialog/dialog/store.js
index 2654bb5432..3a7aacb4a0 100644
--- a/kystudio/src/components/common/GlobalDialog/dialog/store.js
+++ b/kystudio/src/components/common/GlobalDialog/dialog/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/common/GroupEditModal/handler.js b/kystudio/src/components/common/GroupEditModal/handler.js
index 02601aac8a..76418549a4 100644
--- a/kystudio/src/components/common/GroupEditModal/handler.js
+++ b/kystudio/src/components/common/GroupEditModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const fieldVisiableMaps = {
   'new': ['group_name'],
   'assign': ['users']
diff --git a/kystudio/src/components/common/GroupEditModal/locales.js b/kystudio/src/components/common/GroupEditModal/locales.js
index 2bc4633ea7..88c8c43079 100644
--- a/kystudio/src/components/common/GroupEditModal/locales.js
+++ b/kystudio/src/components/common/GroupEditModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     createGroup: 'Add User Group',
diff --git a/kystudio/src/components/common/GroupEditModal/store.js b/kystudio/src/components/common/GroupEditModal/store.js
index 64dbca1be7..cee8d73075 100644
--- a/kystudio/src/components/common/GroupEditModal/store.js
+++ b/kystudio/src/components/common/GroupEditModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/common/ModelERDiagram/handler.js b/kystudio/src/components/common/ModelERDiagram/handler.js
index 633e964255..f30e0c3153 100644
--- a/kystudio/src/components/common/ModelERDiagram/handler.js
+++ b/kystudio/src/components/common/ModelERDiagram/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const configs = {
   TABLE_WIDTH: 200,
   TABLE_HEIGHT: 28
diff --git a/kystudio/src/components/common/ModelERDiagram/locales.js b/kystudio/src/components/common/ModelERDiagram/locales.js
index 6b1eee27fd..0dc4283fbd 100644
--- a/kystudio/src/components/common/ModelERDiagram/locales.js
+++ b/kystudio/src/components/common/ModelERDiagram/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     factTable: 'Fact Table',
diff --git a/kystudio/src/components/common/ModelERDiagramModal/locales.js b/kystudio/src/components/common/ModelERDiagramModal/locales.js
index b926ffc103..b13085b78c 100644
--- a/kystudio/src/components/common/ModelERDiagramModal/locales.js
+++ b/kystudio/src/components/common/ModelERDiagramModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     erDiagram: 'ER Diagram'
diff --git a/kystudio/src/components/common/ModelERDiagramModal/store.js b/kystudio/src/components/common/ModelERDiagramModal/store.js
index 0c49f4982f..da4007f83d 100644
--- a/kystudio/src/components/common/ModelERDiagramModal/store.js
+++ b/kystudio/src/components/common/ModelERDiagramModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import * as actionTypes from '../../../store/types'
 
 export function getInitialState () {
diff --git a/kystudio/src/components/common/ModelsExportModal/locales.js b/kystudio/src/components/common/ModelsExportModal/locales.js
index fac6fc0ea2..2e7cb497ae 100644
--- a/kystudio/src/components/common/ModelsExportModal/locales.js
+++ b/kystudio/src/components/common/ModelsExportModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     exportModel: 'Export Model',
diff --git a/kystudio/src/components/common/ModelsExportModal/store.js b/kystudio/src/components/common/ModelsExportModal/store.js
index e8f6ccdf52..1d6a99aa18 100644
--- a/kystudio/src/components/common/ModelsExportModal/store.js
+++ b/kystudio/src/components/common/ModelsExportModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import * as actionTypes from '../../../store/types'
 import api from '../../../service/api'
 import { handleSuccessAsync, handleError } from '../../../util'
diff --git a/kystudio/src/components/common/ModelsImportModal/handler.js b/kystudio/src/components/common/ModelsImportModal/handler.js
index 47cfc3400e..209edf0b63 100644
--- a/kystudio/src/components/common/ModelsImportModal/handler.js
+++ b/kystudio/src/components/common/ModelsImportModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const conflictTypes = {
   DUPLICATE_MODEL_NAME: 'DUPLICATE_MODEL_NAME',
   TABLE_NOT_EXISTED: 'TABLE_NOT_EXISTED',
diff --git a/kystudio/src/components/common/ModelsImportModal/locales.js b/kystudio/src/components/common/ModelsImportModal/locales.js
index 5ddbeb2673..035207e60c 100644
--- a/kystudio/src/components/common/ModelsImportModal/locales.js
+++ b/kystudio/src/components/common/ModelsImportModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     importModelsMetadata: 'Import Model',
diff --git a/kystudio/src/components/common/ModelsImportModal/store.js b/kystudio/src/components/common/ModelsImportModal/store.js
index 0b89ad2712..3cedc1c5ed 100644
--- a/kystudio/src/components/common/ModelsImportModal/store.js
+++ b/kystudio/src/components/common/ModelsImportModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import * as actionTypes from '../../../store/types'
 import api from '../../../service/api'
 import { importableConflictTypes, brokenConflictTypes, conflictTypes } from './handler'
diff --git a/kystudio/src/components/common/ProjectEditModal/handler.js b/kystudio/src/components/common/ProjectEditModal/handler.js
index 06f35ff11f..6b7340f22a 100644
--- a/kystudio/src/components/common/ProjectEditModal/handler.js
+++ b/kystudio/src/components/common/ProjectEditModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { fromArrToObj } from '../../../util'
 
 export const fieldVisiableMaps = {
diff --git a/kystudio/src/components/common/ProjectEditModal/locales.js b/kystudio/src/components/common/ProjectEditModal/locales.js
index 266534c662..eee5cd1682 100644
--- a/kystudio/src/components/common/ProjectEditModal/locales.js
+++ b/kystudio/src/components/common/ProjectEditModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     project: 'Project',
diff --git a/kystudio/src/components/common/ProjectEditModal/store.js b/kystudio/src/components/common/ProjectEditModal/store.js
index b4818f302f..9a7f0456f3 100644
--- a/kystudio/src/components/common/ProjectEditModal/store.js
+++ b/kystudio/src/components/common/ProjectEditModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { fromObjToArr } from '../../../util'
 
 const types = {
diff --git a/kystudio/src/components/common/ProjectSidebar/locales.js b/kystudio/src/components/common/ProjectSidebar/locales.js
index b491f405b3..052decbaf1 100644
--- a/kystudio/src/components/common/ProjectSidebar/locales.js
+++ b/kystudio/src/components/common/ProjectSidebar/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     projectName: 'Project Name',
diff --git a/kystudio/src/components/common/SourceTableModal/handler.js b/kystudio/src/components/common/SourceTableModal/handler.js
index ce0d3a86bc..97b279e909 100644
--- a/kystudio/src/components/common/SourceTableModal/handler.js
+++ b/kystudio/src/components/common/SourceTableModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { transToUTCMs } from '../../../util'
 
 export const editTypes = {
diff --git a/kystudio/src/components/common/SourceTableModal/locales.js b/kystudio/src/components/common/SourceTableModal/locales.js
index 7d9baf2661..d07195fa31 100644
--- a/kystudio/src/components/common/SourceTableModal/locales.js
+++ b/kystudio/src/components/common/SourceTableModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     incrementalLoading: 'Incremental Load',
diff --git a/kystudio/src/components/common/SourceTableModal/store.js b/kystudio/src/components/common/SourceTableModal/store.js
index 22858fe98c..c0cf5012c6 100644
--- a/kystudio/src/components/common/SourceTableModal/store.js
+++ b/kystudio/src/components/common/SourceTableModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { getGmtDateFromUtcLike } from '../../../util'
 
 const types = {
diff --git a/kystudio/src/components/common/TreeList/__test__/treeList.spec.js b/kystudio/src/components/common/TreeList/__test__/treeList.spec.js
index 0df175ba62..14be0a48d9 100644
--- a/kystudio/src/components/common/TreeList/__test__/treeList.spec.js
+++ b/kystudio/src/components/common/TreeList/__test__/treeList.spec.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { mount } from '@vue/test-utils'
 import TreeList from '../index.vue'
 import { localVue } from '../../../../../test/common/spec_common'
diff --git a/kystudio/src/components/common/UserEditModal/handler.js b/kystudio/src/components/common/UserEditModal/handler.js
index 402bafa18f..ac85f306ee 100644
--- a/kystudio/src/components/common/UserEditModal/handler.js
+++ b/kystudio/src/components/common/UserEditModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const fieldVisiableMaps = {
   'new': ['username', 'password', 'confirmPassword', 'admin'],
   'password': ['username', 'oldPassword', 'newPassword', 'confirmPassword'],
diff --git a/kystudio/src/components/common/UserEditModal/locales.js b/kystudio/src/components/common/UserEditModal/locales.js
index c4b3051c30..35a43a7ddd 100644
--- a/kystudio/src/components/common/UserEditModal/locales.js
+++ b/kystudio/src/components/common/UserEditModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     addUser: 'Add User',
diff --git a/kystudio/src/components/common/UserEditModal/store.js b/kystudio/src/components/common/UserEditModal/store.js
index dd28c73423..f0c55d4c06 100644
--- a/kystudio/src/components/common/UserEditModal/store.js
+++ b/kystudio/src/components/common/UserEditModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/monitor/batchJobs/handler.js b/kystudio/src/components/monitor/batchJobs/handler.js
index 0b27635e13..581bf32e64 100644
--- a/kystudio/src/components/monitor/batchJobs/handler.js
+++ b/kystudio/src/components/monitor/batchJobs/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 
 export function getStepLineName (that, name) {
diff --git a/kystudio/src/components/monitor/batchJobs/locales.js b/kystudio/src/components/monitor/batchJobs/locales.js
index d88c38ea8f..22e2ed347b 100644
--- a/kystudio/src/components/monitor/batchJobs/locales.js
+++ b/kystudio/src/components/monitor/batchJobs/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dataRange: 'Data Range',
diff --git a/kystudio/src/components/monitor/streamingJobs/locales.js b/kystudio/src/components/monitor/streamingJobs/locales.js
index e4770afe59..c4302ea73c 100644
--- a/kystudio/src/components/monitor/streamingJobs/locales.js
+++ b/kystudio/src/components/monitor/streamingJobs/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     adminTips: 'Admin user can view all job information via Select All option in the project list.',
diff --git a/kystudio/src/components/query/handler.js b/kystudio/src/components/query/handler.js
index 491e846dfa..2a6964da2a 100644
--- a/kystudio/src/components/query/handler.js
+++ b/kystudio/src/components/query/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export function getOptions (that) {
   if (that.charts.type === 'lineChart') {
     return initLineChart(that)
diff --git a/kystudio/src/components/setting/SettingAdvanced/handler.js b/kystudio/src/components/setting/SettingAdvanced/handler.js
index 3ab1a8c307..ab90493938 100644
--- a/kystudio/src/components/setting/SettingAdvanced/handler.js
+++ b/kystudio/src/components/setting/SettingAdvanced/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { objectArraySort } from 'util'
 export const validate = {
   'positiveNumber' (rule, value, callback) {
diff --git a/kystudio/src/components/setting/SettingAdvanced/locales.js b/kystudio/src/components/setting/SettingAdvanced/locales.js
index 0afc2e478e..01246adfce 100644
--- a/kystudio/src/components/setting/SettingAdvanced/locales.js
+++ b/kystudio/src/components/setting/SettingAdvanced/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     acceThreshold: 'Accelerating Notification',
diff --git a/kystudio/src/components/setting/SettingBasic/handler.js b/kystudio/src/components/setting/SettingBasic/handler.js
index 5fbbce315a..ce99f163c9 100644
--- a/kystudio/src/components/setting/SettingBasic/handler.js
+++ b/kystudio/src/components/setting/SettingBasic/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const projectTypeIcons = {
   MANUAL_MAINTAIN: 'el-icon-ksd-expert_mode_small'
 }
diff --git a/kystudio/src/components/setting/SettingBasic/locales.js b/kystudio/src/components/setting/SettingBasic/locales.js
index 8325ffca1b..2a63364f41 100644
--- a/kystudio/src/components/setting/SettingBasic/locales.js
+++ b/kystudio/src/components/setting/SettingBasic/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     basicInfo: 'General Information',
diff --git a/kystudio/src/components/setting/SettingModel/locales.js b/kystudio/src/components/setting/SettingModel/locales.js
index 5391bd8455..19a6ae0af0 100644
--- a/kystudio/src/components/setting/SettingModel/locales.js
+++ b/kystudio/src/components/setting/SettingModel/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     modifyTime: 'Last Updated Time',
diff --git a/kystudio/src/components/setting/handler.js b/kystudio/src/components/setting/handler.js
index 7c6b90e3c4..e92ef53168 100644
--- a/kystudio/src/components/setting/handler.js
+++ b/kystudio/src/components/setting/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const viewTypes = {
   BASIC: 'basicSetting',
   ADVANCED: 'advanceSetting',
diff --git a/kystudio/src/components/setting/locales.js b/kystudio/src/components/setting/locales.js
index f2c85a91d4..523e0c3cee 100644
--- a/kystudio/src/components/setting/locales.js
+++ b/kystudio/src/components/setting/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     basic: 'Basic Settings',
diff --git a/kystudio/src/components/studio/StudioModel/AddCCModal/locales.js b/kystudio/src/components/studio/StudioModel/AddCCModal/locales.js
index e437f7077b..5529a68a36 100644
--- a/kystudio/src/components/studio/StudioModel/AddCCModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/AddCCModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     editCCTip: 'Please be aware that the modified expression would be effective until all the related indexes have been built.'
diff --git a/kystudio/src/components/studio/StudioModel/AddCCModal/store.js b/kystudio/src/components/studio/StudioModel/AddCCModal/store.js
index 3d22d86793..9ee89147c9 100644
--- a/kystudio/src/components/studio/StudioModel/AddCCModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/AddCCModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/BatchMeasureModal/locales.js b/kystudio/src/components/studio/StudioModel/BatchMeasureModal/locales.js
index d23c7c774d..ebf0afb675 100644
--- a/kystudio/src/components/studio/StudioModel/BatchMeasureModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/BatchMeasureModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     batchMeasure: 'Quick Add Measure',
diff --git a/kystudio/src/components/studio/StudioModel/BatchMeasureModal/store.js b/kystudio/src/components/studio/StudioModel/BatchMeasureModal/store.js
index f1cd516c6a..920df3d633 100644
--- a/kystudio/src/components/studio/StudioModel/BatchMeasureModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/BatchMeasureModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/DimensionsModal/locales.js b/kystudio/src/components/studio/StudioModel/DimensionsModal/locales.js
index d001604ca6..059b7187f1 100644
--- a/kystudio/src/components/studio/StudioModel/DimensionsModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/DimensionsModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     totalSelect: 'Select Dimensions:',
diff --git a/kystudio/src/components/studio/StudioModel/DimensionsModal/store.js b/kystudio/src/components/studio/StudioModel/DimensionsModal/store.js
index 5f32971959..cfe6ff39d6 100644
--- a/kystudio/src/components/studio/StudioModel/DimensionsModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/DimensionsModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/config.js b/kystudio/src/components/studio/StudioModel/ModelEdit/config.js
index 73c7ff9c42..f57a85053f 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/config.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/config.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 let baseIndex = 100
 let rootBox = '.model-edit-outer'
 export const modelRenderConfig = {
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/layout.js b/kystudio/src/components/studio/StudioModel/ModelEdit/layout.js
index 47d56336cd..5b76672aa0 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/layout.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/layout.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { modelRenderConfig } from './config'
 class Tree {
   constructor (options) {
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/locales.js b/kystudio/src/components/studio/StudioModel/ModelEdit/locales.js
index c7eb10343c..ab15827dbc 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     'adddimension': 'Add Dimension',
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/model.js b/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
index 50967a90ac..4d00a92363 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Schama from './schama'
 import NTable from './table.js'
 import { parsePath, sampleGuid, indexOfObjWithSomeKey, indexOfObjWithSomeKeys, objectClone } from '../../../../util'
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js b/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
index 48c6719907..d11cdfd4bc 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import store from '../../../../store'
 import { jsPlumbTool } from '../../../../util/plumb'
 import { sampleGuid, indexOfObjWithSomeKeys, objectClone } from '../../../../util'
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/table.js b/kystudio/src/components/studio/StudioModel/ModelEdit/table.js
index 31f81517c4..571912c4c0 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/table.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/table.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { objectClone, sampleGuid } from 'util/index'
 import { modelRenderConfig } from './config'
 let zIndex = 10
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/handler.js b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/handler.js
index d369637c58..7e793cf499 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/handler.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const editTypes = {
   EDIT: 'edit'
 }
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/locales.js
index a9c81bec64..17c8aabdcc 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     'editAggregateGroup': 'Edit Aggregate Group',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/mock.js b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/mock.js
index 61b57bdd00..4d63728b67 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/mock.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/mock.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 /* eslint-disable */
 export default {
   "uuid": "89af4ee2-2cdb-4b07-b39e-4c29856309aa",
@@ -730,4 +747,4 @@ export default {
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/store.js
index c9385f6ca9..47fc314ce3 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/AggregateModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { handleSuccessAsync, getFullMapping } from 'util'
 
 const types = {
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/locales.js
index df1bae7c40..37bd93486a 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     storageSize: 'Storage Size',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/store.js
index 3e547e24b5..a045c708a3 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ConfirmSegment/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/DataFeatures/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/DataFeatures/locales.js
index 6dc03b784f..e3b4ab0977 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/DataFeatures/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/DataFeatures/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dataFeatures: 'Statistics',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/locales.js
index 15a3a922d5..294606d631 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dimMeasTitle: 'Dimensions and Measures Settings',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/store.js
index a792abf351..7bdcaffe84 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/GuideModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelActions/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelActions/locales.js
index 805f28fdb0..e5d13e8b61 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelActions/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelActions/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     authorityDetails: 'The details of authority',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/locales.js
index ed6f50cd2c..69c8a2d903 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     pleaseInputDesc: 'Please enter here. Use Control / Command + Enter to start a new line.'
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/store.js
index 61855bcbfa..9c91ac6559 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAddModal/store.js
@@ -1,4 +1,21 @@
-const types = {
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
   SET_MODAL_FORM: 'SET_MODAL_FORM',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/handler.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/handler.js
index cf4a33fc42..22cae5bbd5 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/handler.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import emptyCuboidsUrl from './empty.png'
 import brokenCuboidsUrl from './broken.png'
 
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/locales.js
index 078b753175..8fbf9eca4f 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     aggregateGroup: 'Aggregate Group',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/mock.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/mock.js
index d6e654ba70..00641cc8e1 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/mock.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/mock.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const aggregateGroups = [
   {
     includes: ['KYLIN_ACCOUNT.ACCOUNT_ID', 'KYLIN_SALES.SELLER_ID'],
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/locales.js
index 1877d9ca65..cbd39376a8 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     select: 'Selected',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/store.js
index 5d1ad164c3..f927ddf137 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/AggAdvancedModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/locales.js
index c0d3c38312..4319b87cd1 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregateView/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     viewAll: 'View all',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/locales.js
index fb51daa5a9..3bbc5e8fd5 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dataRangeValValid: 'Please enter build date range',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/store.js
index f8be166c17..92d97361fa 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelBuildModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/locales.js
index 8e9d2516ce..852b96855e 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {'modelDataCheck': 'Data Check'}
 }
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/store.js
index 5ada188e09..a8f2dc8a4a 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelCheckData/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/locales.js
index e207114a20..63bbc146a3 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     modelClone: 'Model Clone',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/store.js
index 7b2f9d63a5..f2a47f90b6 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelCloneModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelLayout/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelLayout/locales.js
index 9baecd054e..16080d8e9d 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelLayout/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelLayout/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     overview: 'Overview',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelOverview/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelOverview/locales.js
index ac201f8e3a..3035fbab87 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelOverview/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelOverview/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     erDiagram: 'ER Diagram',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/locales.js
index 4b6b845f5a..33fefd386d 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     partitionSet: 'Partition Setting',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/store.js
index 9d3037aa77..39455ffda2 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelPartition/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/locales.js
index 8f0372bd3f..adec73a2ec 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     modelRename: 'Model Rename',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/store.js
index 7b2f9d63a5..f2a47f90b6 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelRenameModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/locales.js
index d149c64e0b..48b1edc8f7 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     partitionSet: 'Partition Setting',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/store.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/store.js
index 79a4b132fa..a21f456a05 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/store.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSaveConfig/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/handler.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/handler.js
index 94d3fce644..090a3f436f 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/handler.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const MILLISECOND = 'millisecond'
 const SECOND = 'second'
 const MINUTE = 'minute'
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/locales.js
index 8106e35f77..04fa9d9fca 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/SegmentChart/locales.js
@@ -1,4 +1,20 @@
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     fullLoad: 'Full Load'
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/handler.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/handler.js
index ca1a29c23f..2e3d736d64 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/handler.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export function formatSegments (that, segments) {
   return segments.map(segment => {
     const isFullLoad = segment.segRange.date_range_start === 0 && segment.segRange.date_range_end === 9223372036854776000
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/locales.js
index 2b4737b243..e99ee44680 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelSegment/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     autoMerge: 'Auto-Merge',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelStreamingJob/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/ModelStreamingJob/locales.js
index 8365fc6040..75b88cb516 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelStreamingJob/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelStreamingJob/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     streaming: 'Streaming',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/TableIndexView/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/TableIndexView/locales.js
index 801087df24..2757c16fc0 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/TableIndexView/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/TableIndexView/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     viewAll: 'View all',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/locales.js b/kystudio/src/components/studio/StudioModel/ModelList/locales.js
index 6381a14a60..f2199a2359 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     capbility: 'Favorite Rate',
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/mock.js b/kystudio/src/components/studio/StudioModel/ModelList/mock.js
index 17f89e36bd..19403b427d 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/mock.js
+++ b/kystudio/src/components/studio/StudioModel/ModelList/mock.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const mockSQL = `SELECT
 KYLIN_CAL_DT.CAL_DT as KYLIN_CAL_DT_CAL_DT
 ,KYLIN_ACCOUNT.ACCOUNT_ID as KYLIN_ACCOUNT_ACCOUNT_ID
@@ -6,7 +23,7 @@ KYLIN_CAL_DT.CAL_DT as KYLIN_CAL_DT_CAL_DT
 ,KYLIN_SALES.SELLER_ID as KYLIN_SALES_SELLER_ID
 ,KYLIN_SALES.PRICE as KYLIN_SALES_PRICE
 ,KYLIN_SALES.ITEM_COUNT as KYLIN_SALES_ITEM_COUNT
-FROM DEFAULT.KYLIN_SALES as KYLIN_SALES 
+FROM DEFAULT.KYLIN_SALES as KYLIN_SALES
 INNER JOIN DEFAULT.KYLIN_ACCOUNT as KYLIN_ACCOUNT
 ON KYLIN_SALES.SELLER_ID = KYLIN_ACCOUNT.ACCOUNT_ID
 INNER JOIN DEFAULT.KYLIN_CAL_DT as KYLIN_CAL_DT
diff --git a/kystudio/src/components/studio/StudioModel/ModelTabs/locales.js b/kystudio/src/components/studio/StudioModel/ModelTabs/locales.js
index 9a544c8924..58cc219a83 100644
--- a/kystudio/src/components/studio/StudioModel/ModelTabs/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ModelTabs/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     modelName: 'Model name',
diff --git a/kystudio/src/components/studio/StudioModel/ShowCC/locales.js b/kystudio/src/components/studio/StudioModel/ShowCC/locales.js
index 2f45ea8fbc..8ba71f6a0a 100644
--- a/kystudio/src/components/studio/StudioModel/ShowCC/locales.js
+++ b/kystudio/src/components/studio/StudioModel/ShowCC/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {computedDetail: 'Computed Column Detail', columnName: 'Column Name', expression: 'Expression', returnType: 'Return Type'}
 }
diff --git a/kystudio/src/components/studio/StudioModel/ShowCC/store.js b/kystudio/src/components/studio/StudioModel/ShowCC/store.js
index 6eda2acc8d..c851fc2832 100644
--- a/kystudio/src/components/studio/StudioModel/ShowCC/store.js
+++ b/kystudio/src/components/studio/StudioModel/ShowCC/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/SingleDimensionModal/locales.js b/kystudio/src/components/studio/StudioModel/SingleDimensionModal/locales.js
index bbc1fcea95..3a4b10028b 100644
--- a/kystudio/src/components/studio/StudioModel/SingleDimensionModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/SingleDimensionModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     columns: 'Columns',
diff --git a/kystudio/src/components/studio/StudioModel/SingleDimensionModal/store.js b/kystudio/src/components/studio/StudioModel/SingleDimensionModal/store.js
index b0aba1a2ec..1e59720fc0 100644
--- a/kystudio/src/components/studio/StudioModel/SingleDimensionModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/SingleDimensionModal/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioModel/SubPartitionValues/locales.js b/kystudio/src/components/studio/StudioModel/SubPartitionValues/locales.js
index 5ea1bf5146..7ec2f98fe8 100644
--- a/kystudio/src/components/studio/StudioModel/SubPartitionValues/locales.js
+++ b/kystudio/src/components/studio/StudioModel/SubPartitionValues/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     subParValuesTitle: 'Subpartition Values',
diff --git a/kystudio/src/components/studio/StudioModel/TableIndex/locales.js b/kystudio/src/components/studio/StudioModel/TableIndex/locales.js
index e31286c54a..53746d2a74 100644
--- a/kystudio/src/components/studio/StudioModel/TableIndex/locales.js
+++ b/kystudio/src/components/studio/StudioModel/TableIndex/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   en: {
     noSupportRawTable: 'Only KAP PLUS Provides Raw Table',
diff --git a/kystudio/src/components/studio/StudioModel/TableIndexEdit/locales.js b/kystudio/src/components/studio/StudioModel/TableIndexEdit/locales.js
index c7fa4338a4..589740d1ee 100644
--- a/kystudio/src/components/studio/StudioModel/TableIndexEdit/locales.js
+++ b/kystudio/src/components/studio/StudioModel/TableIndexEdit/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     addTableIndexTitle: 'Add Table Index',
diff --git a/kystudio/src/components/studio/StudioModel/TableIndexEdit/store.js b/kystudio/src/components/studio/StudioModel/TableIndexEdit/store.js
index bedfe56a6f..d66bb25658 100644
--- a/kystudio/src/components/studio/StudioModel/TableIndexEdit/store.js
+++ b/kystudio/src/components/studio/StudioModel/TableIndexEdit/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { handleSuccessAsync } from 'util'
 
 const types = {
diff --git a/kystudio/src/components/studio/StudioModel/TableJoinModal/locales.js b/kystudio/src/components/studio/StudioModel/TableJoinModal/locales.js
index 0f5cd1b9c1..4a3be6c36a 100644
--- a/kystudio/src/components/studio/StudioModel/TableJoinModal/locales.js
+++ b/kystudio/src/components/studio/StudioModel/TableJoinModal/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     addJoinCondition: 'Add Join Relationship',
diff --git a/kystudio/src/components/studio/StudioModel/TableJoinModal/store.js b/kystudio/src/components/studio/StudioModel/TableJoinModal/store.js
index d642c50c34..26f93a356a 100644
--- a/kystudio/src/components/studio/StudioModel/TableJoinModal/store.js
+++ b/kystudio/src/components/studio/StudioModel/TableJoinModal/store.js
@@ -1,4 +1,20 @@
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioSource/KafkaCluster/locales.js b/kystudio/src/components/studio/StudioSource/KafkaCluster/locales.js
index d9935a4945..519e9e8846 100644
--- a/kystudio/src/components/studio/StudioSource/KafkaCluster/locales.js
+++ b/kystudio/src/components/studio/StudioSource/KafkaCluster/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     host: 'Host',
diff --git a/kystudio/src/components/studio/StudioSource/SourceManagement/locales.js b/kystudio/src/components/studio/StudioSource/SourceManagement/locales.js
index 0b11998ff9..fcf20351a1 100644
--- a/kystudio/src/components/studio/StudioSource/SourceManagement/locales.js
+++ b/kystudio/src/components/studio/StudioSource/SourceManagement/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     sourceManagement: 'Data Source Management',
diff --git a/kystudio/src/components/studio/StudioSource/SourceManagement/mock.js b/kystudio/src/components/studio/StudioSource/SourceManagement/mock.js
index 3c3cfe6150..cea2605db4 100644
--- a/kystudio/src/components/studio/StudioSource/SourceManagement/mock.js
+++ b/kystudio/src/components/studio/StudioSource/SourceManagement/mock.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const mockDatasourceArray = [
   {
     name: 'Default',
diff --git a/kystudio/src/components/studio/StudioSource/TableColumns/locales.js b/kystudio/src/components/studio/StudioSource/TableColumns/locales.js
index 95781e2a3f..0a88d54754 100644
--- a/kystudio/src/components/studio/StudioSource/TableColumns/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableColumns/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     total: 'Sampling Records: ',
diff --git a/kystudio/src/components/studio/StudioSource/TableDataLoad/handler.js b/kystudio/src/components/studio/StudioSource/TableDataLoad/handler.js
index d1043bb503..e30c7e0734 100644
--- a/kystudio/src/components/studio/StudioSource/TableDataLoad/handler.js
+++ b/kystudio/src/components/studio/StudioSource/TableDataLoad/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export function _getPartitionInfo (project, table, partitionColumn, format) {
   return {
     project: project.name,
diff --git a/kystudio/src/components/studio/StudioSource/TableDataLoad/locales.js b/kystudio/src/components/studio/StudioSource/TableDataLoad/locales.js
index 27592989c7..852b2ce498 100644
--- a/kystudio/src/components/studio/StudioSource/TableDataLoad/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableDataLoad/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     tableName: 'Table Name:',
diff --git a/kystudio/src/components/studio/StudioSource/TableExtInfo/locales.js b/kystudio/src/components/studio/StudioSource/TableExtInfo/locales.js
index 0bc8b7c0b0..7c6399182e 100644
--- a/kystudio/src/components/studio/StudioSource/TableExtInfo/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableExtInfo/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
   }
diff --git a/kystudio/src/components/studio/StudioSource/TableReload/locales.js b/kystudio/src/components/studio/StudioSource/TableReload/locales.js
index ae150b4c8c..ad3aa6ce5b 100644
--- a/kystudio/src/components/studio/StudioSource/TableReload/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableReload/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     dialogTitle: 'Reload Table Metadata',
diff --git a/kystudio/src/components/studio/StudioSource/TableReload/store.js b/kystudio/src/components/studio/StudioSource/TableReload/store.js
index 0ec83601e9..8a7471d803 100644
--- a/kystudio/src/components/studio/StudioSource/TableReload/store.js
+++ b/kystudio/src/components/studio/StudioSource/TableReload/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/StudioSource/TableSamples/locales.js b/kystudio/src/components/studio/StudioSource/TableSamples/locales.js
index 8235093203..ae8a9a5971 100644
--- a/kystudio/src/components/studio/StudioSource/TableSamples/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableSamples/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     version: 'Version:',
diff --git a/kystudio/src/components/studio/StudioSource/TableStatistics/locales.js b/kystudio/src/components/studio/StudioSource/TableStatistics/locales.js
index f9d257c54b..e9856a1adb 100644
--- a/kystudio/src/components/studio/StudioSource/TableStatistics/locales.js
+++ b/kystudio/src/components/studio/StudioSource/TableStatistics/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     total: 'Total Rows:'
diff --git a/kystudio/src/components/studio/StudioSource/handler.js b/kystudio/src/components/studio/StudioSource/handler.js
index 6dd090b5d8..f09c972112 100644
--- a/kystudio/src/components/studio/StudioSource/handler.js
+++ b/kystudio/src/components/studio/StudioSource/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const viewTypes = {
   DATA_LOAD: 'data-load',
   COLUMNS: 'columns',
diff --git a/kystudio/src/components/studio/StudioSource/locales.js b/kystudio/src/components/studio/StudioSource/locales.js
index 5f4efe061f..b7c4c10e96 100644
--- a/kystudio/src/components/studio/StudioSource/locales.js
+++ b/kystudio/src/components/studio/StudioSource/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     updateAt: 'Last updated time:',
diff --git a/kystudio/src/components/studio/snapshot/SnapshotModel/handler.js b/kystudio/src/components/studio/snapshot/SnapshotModel/handler.js
index df3a5e0fbb..8102ed0cb6 100644
--- a/kystudio/src/components/studio/snapshot/SnapshotModel/handler.js
+++ b/kystudio/src/components/studio/snapshot/SnapshotModel/handler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { pageSizeMapping } from 'config'
 
 export function getDatabaseTablesTree (databases) {
diff --git a/kystudio/src/components/studio/snapshot/SnapshotModel/locales.js b/kystudio/src/components/studio/snapshot/SnapshotModel/locales.js
index a60d9a1757..0272592584 100644
--- a/kystudio/src/components/studio/snapshot/SnapshotModel/locales.js
+++ b/kystudio/src/components/studio/snapshot/SnapshotModel/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     addSnapshotTitle: 'Add Snapshot',
diff --git a/kystudio/src/components/studio/snapshot/SnapshotModel/store.js b/kystudio/src/components/studio/snapshot/SnapshotModel/store.js
index 3e63c54ad3..14abfa405a 100644
--- a/kystudio/src/components/studio/snapshot/SnapshotModel/store.js
+++ b/kystudio/src/components/studio/snapshot/SnapshotModel/store.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 const types = {
   SHOW_MODAL: 'SHOW_MODAL',
   HIDE_MODAL: 'HIDE_MODAL',
diff --git a/kystudio/src/components/studio/snapshot/locales.js b/kystudio/src/components/studio/snapshot/locales.js
index 88b73e4344..ebe874e03a 100644
--- a/kystudio/src/components/studio/snapshot/locales.js
+++ b/kystudio/src/components/studio/snapshot/locales.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default {
   'en': {
     snapshotList: 'Snapshot List',
diff --git a/kystudio/src/config/index.js b/kystudio/src/config/index.js
index bce95126b1..87a78c9fd8 100644
--- a/kystudio/src/config/index.js
+++ b/kystudio/src/config/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 // 全局配置
 import { getFullMapping } from '../util'
 
diff --git a/kystudio/src/config/model.js b/kystudio/src/config/model.js
index e0fd3421cf..85d35ad500 100644
--- a/kystudio/src/config/model.js
+++ b/kystudio/src/config/model.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const BuildIndexStatus = {
   'NORM_BUILD': 'NORM_BUILD',
   'NO_LAYOUT': 'NO_LAYOUT',
diff --git a/kystudio/src/config/projectCfgs.js b/kystudio/src/config/projectCfgs.js
index 9e5b04edc6..783d1f7968 100644
--- a/kystudio/src/config/projectCfgs.js
+++ b/kystudio/src/config/projectCfgs.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const projectCfgs = {
   projectType: {
     manual: 'MANUAL_MAINTAIN'
diff --git a/kystudio/src/config/spec.js b/kystudio/src/config/spec.js
index 191d02edb5..b9e05061a9 100644
--- a/kystudio/src/config/spec.js
+++ b/kystudio/src/config/spec.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 /* eslint-disable */
 export default {
   "allOptionMaps": {
diff --git a/kystudio/src/directive/index.js b/kystudio/src/directive/index.js
index 7e5f9fee3c..e4bc97a497 100644
--- a/kystudio/src/directive/index.js
+++ b/kystudio/src/directive/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import $ from 'jquery'
 import Scrollbar from 'smooth-scrollbar'
diff --git a/kystudio/src/filter/index.js b/kystudio/src/filter/index.js
index 9defe17161..8475788d0f 100644
--- a/kystudio/src/filter/index.js
+++ b/kystudio/src/filter/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import { transToGmtTime, transToServerGmtTime } from '../util'
 
diff --git a/kystudio/src/locale/en.js b/kystudio/src/locale/en.js
index 8728c90c6c..a239b98241 100644
--- a/kystudio/src/locale/en.js
+++ b/kystudio/src/locale/en.js
@@ -1,4 +1,20 @@
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 exports.default = {
   common: {
     // 常规操作
diff --git a/kystudio/src/main.js b/kystudio/src/main.js
index fdc85f184c..6809a9a502 100644
--- a/kystudio/src/main.js
+++ b/kystudio/src/main.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 // The Vue build version to load with the `import` command
 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
 import '@babel/polyfill'
diff --git a/kystudio/src/router/index.js b/kystudio/src/router/index.js
index 10c8133b78..717f474f9c 100644
--- a/kystudio/src/router/index.js
+++ b/kystudio/src/router/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import Router from 'vue-router'
 import Component from 'vue-class-component'
diff --git a/kystudio/src/router/routerGuard.js b/kystudio/src/router/routerGuard.js
index c256905682..b622829c7d 100644
--- a/kystudio/src/router/routerGuard.js
+++ b/kystudio/src/router/routerGuard.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import * as types from '../store/types'
 import { menusData } from '../config'
 import store from '../store'
diff --git a/kystudio/src/service/api.js b/kystudio/src/service/api.js
index 7a22502816..59bcf1c586 100644
--- a/kystudio/src/service/api.js
+++ b/kystudio/src/service/api.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import projectApi from './project'
diff --git a/kystudio/src/service/config.js b/kystudio/src/service/config.js
index 100cf69522..4c9915b449 100644
--- a/kystudio/src/service/config.js
+++ b/kystudio/src/service/config.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/datasource.js b/kystudio/src/service/datasource.js
index e70b0d67b0..60cd2dbc91 100644
--- a/kystudio/src/service/datasource.js
+++ b/kystudio/src/service/datasource.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/kafka.js b/kystudio/src/service/kafka.js
index f3480927da..4e7bd3b002 100644
--- a/kystudio/src/service/kafka.js
+++ b/kystudio/src/service/kafka.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/message.js b/kystudio/src/service/message.js
index 5ae0a83396..e300b71875 100644
--- a/kystudio/src/service/message.js
+++ b/kystudio/src/service/message.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import store from '../store/index'
 
 export function ListenMessage (EventsBus) {
diff --git a/kystudio/src/service/model.js b/kystudio/src/service/model.js
index 33d32f9f28..990f159b42 100644
--- a/kystudio/src/service/model.js
+++ b/kystudio/src/service/model.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/monitor.js b/kystudio/src/service/monitor.js
index 673195fa77..d784d27f1b 100644
--- a/kystudio/src/service/monitor.js
+++ b/kystudio/src/service/monitor.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/project.js b/kystudio/src/service/project.js
index cad47a598c..85fb31d9dd 100644
--- a/kystudio/src/service/project.js
+++ b/kystudio/src/service/project.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/system.js b/kystudio/src/service/system.js
index ffb1ac73f3..86a148aac3 100644
--- a/kystudio/src/service/system.js
+++ b/kystudio/src/service/system.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/service/user.js b/kystudio/src/service/user.js
index 6bddbbbd26..ff57731307 100644
--- a/kystudio/src/service/user.js
+++ b/kystudio/src/service/user.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 import VueResource from 'vue-resource'
 import { apiUrl } from '../config'
diff --git a/kystudio/src/store/capacity.js b/kystudio/src/store/capacity.js
index 2ff618adec..85b17a86ac 100644
--- a/kystudio/src/store/capacity.js
+++ b/kystudio/src/store/capacity.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 
diff --git a/kystudio/src/store/config.js b/kystudio/src/store/config.js
index 019f3371e4..5771a293e1 100644
--- a/kystudio/src/store/config.js
+++ b/kystudio/src/store/config.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { cacheLocalStorage } from 'util'
diff --git a/kystudio/src/store/datasource.js b/kystudio/src/store/datasource.js
index 199d27154d..532e409fa9 100644
--- a/kystudio/src/store/datasource.js
+++ b/kystudio/src/store/datasource.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import { indexOfObjWithSomeKey } from 'util'
 import * as types from './types'
diff --git a/kystudio/src/store/index.js b/kystudio/src/store/index.js
index ec0956b973..de3df7a4b0 100644
--- a/kystudio/src/store/index.js
+++ b/kystudio/src/store/index.js
@@ -1,4 +1,20 @@
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vuex from 'vuex'
 import Vue from 'vue'
 Vue.use(Vuex)
diff --git a/kystudio/src/store/kafka.js b/kystudio/src/store/kafka.js
index ef1ec33e1c..638e7aeb08 100644
--- a/kystudio/src/store/kafka.js
+++ b/kystudio/src/store/kafka.js
@@ -1,4 +1,21 @@
-import api from './../service/api'
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ import api from './../service/api'
 import * as types from './types'
 export default {
   state: {
diff --git a/kystudio/src/store/model.js b/kystudio/src/store/model.js
index cbcf4e1615..e5efd5ecb6 100644
--- a/kystudio/src/store/model.js
+++ b/kystudio/src/store/model.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { transToGmtTime } from 'util/business'
diff --git a/kystudio/src/store/monitor.js b/kystudio/src/store/monitor.js
index 75c830a7ea..11faf7bc72 100644
--- a/kystudio/src/store/monitor.js
+++ b/kystudio/src/store/monitor.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { getAvailableOptions } from '../util/specParser'
diff --git a/kystudio/src/store/project.js b/kystudio/src/store/project.js
index baf4188ab1..6827bb8719 100644
--- a/kystudio/src/store/project.js
+++ b/kystudio/src/store/project.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { cacheSessionStorage, cacheLocalStorage } from 'util/index'
diff --git a/kystudio/src/store/system.js b/kystudio/src/store/system.js
index b662f17c36..a7d51db778 100644
--- a/kystudio/src/store/system.js
+++ b/kystudio/src/store/system.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { getProperty } from '../util/business'
diff --git a/kystudio/src/store/types.js b/kystudio/src/store/types.js
index 914e020d68..d7cd11b257 100644
--- a/kystudio/src/store/types.js
+++ b/kystudio/src/store/types.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 // project actions mutations
 export const LOAD_PROJECT_LIST = 'LOAD_PROJECT_LIST'
 export const SAVE_PROJECT_LIST = 'SAVE_PROJECT_LIST'
diff --git a/kystudio/src/store/user.js b/kystudio/src/store/user.js
index 0f5b00bef0..8446844d8d 100644
--- a/kystudio/src/store/user.js
+++ b/kystudio/src/store/user.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import api from './../service/api'
 import * as types from './types'
 import { permissions } from '../config'
diff --git a/kystudio/src/util/UtilTable.js b/kystudio/src/util/UtilTable.js
index e872c38555..eebfb1d05a 100644
--- a/kystudio/src/util/UtilTable.js
+++ b/kystudio/src/util/UtilTable.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { isDatePartitionType } from '.'
 
 export function getFormattedTable (originData = {}) {
diff --git a/kystudio/src/util/autoLayout/TreeLayout.js b/kystudio/src/util/autoLayout/TreeLayout.js
index acc9f68893..aed4527e8f 100644
--- a/kystudio/src/util/autoLayout/TreeLayout.js
+++ b/kystudio/src/util/autoLayout/TreeLayout.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export default class Tree {
   constructor (options) {
     const { boxML, boxMT, rootNode, connections, getPrevNodeGuid, getNextNodeGuid, getNodeWidth, getNodeHeight } = options
diff --git a/kystudio/src/util/autoLayout/index.js b/kystudio/src/util/autoLayout/index.js
index f5d9aabc2b..76423ed5a6 100644
--- a/kystudio/src/util/autoLayout/index.js
+++ b/kystudio/src/util/autoLayout/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Tree from './TreeLayout'
 
 export default {
diff --git a/kystudio/src/util/business.js b/kystudio/src/util/business.js
index 5aa4d387df..b39071ab9f 100644
--- a/kystudio/src/util/business.js
+++ b/kystudio/src/util/business.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { utcToConfigTimeZone } from './index'
 import { permissionsMaps, DatePartitionRule, TimePartitionRule, SubPartitionRule, StreamingPartitionRule } from 'config/index'
 import { MessageBox, Message } from 'kyligence-kylin-ui'
diff --git a/kystudio/src/util/charts.js b/kystudio/src/util/charts.js
index 63b9e3422c..0826a4579a 100644
--- a/kystudio/src/util/charts.js
+++ b/kystudio/src/util/charts.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import filterElements from '../filter/index'
 
 export default {
diff --git a/kystudio/src/util/dataGenerator.js b/kystudio/src/util/dataGenerator.js
index 65820f45d4..37cdd1b548 100644
--- a/kystudio/src/util/dataGenerator.js
+++ b/kystudio/src/util/dataGenerator.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { sampleGuid } from './index'
 /**
  * 找出lookup表的主键表和外键表
diff --git a/kystudio/src/util/dataHelper.js b/kystudio/src/util/dataHelper.js
index a622d5f120..4818b84a0c 100644
--- a/kystudio/src/util/dataHelper.js
+++ b/kystudio/src/util/dataHelper.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 /**
  *
  * @param {Object} options
diff --git a/kystudio/src/util/datasourceDataHandler.js b/kystudio/src/util/datasourceDataHandler.js
index f480316754..e829b9ea90 100644
--- a/kystudio/src/util/datasourceDataHandler.js
+++ b/kystudio/src/util/datasourceDataHandler.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { sourceTypes, sourceNameMapping, pageSizeMapping } from 'config'
 import { transToServerGmtTime } from 'util'
 export const render = {
diff --git a/kystudio/src/util/domHelper.js b/kystudio/src/util/domHelper.js
index 4c8a8b7761..228b5a6b9c 100644
--- a/kystudio/src/util/domHelper.js
+++ b/kystudio/src/util/domHelper.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const download = {
   post (url, data) {
     const $form = document.createElement('form')
diff --git a/kystudio/src/util/event.js b/kystudio/src/util/event.js
index 2a3c95238e..2e7f3e3a1e 100644
--- a/kystudio/src/util/event.js
+++ b/kystudio/src/util/event.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import Vue from 'vue'
 export function stopPropagation (e) {
   e.stopPropagation()
diff --git a/kystudio/src/util/index.js b/kystudio/src/util/index.js
index 4c0a390b35..b6f119fb5f 100644
--- a/kystudio/src/util/index.js
+++ b/kystudio/src/util/index.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import validate, * as validateTypes from './validate'
 import * as dataGenerator from './dataGenerator'
 import * as dataHelper from './dataHelper'
diff --git a/kystudio/src/util/object.js b/kystudio/src/util/object.js
index 33e1f71c63..5ae0f01f6e 100644
--- a/kystudio/src/util/object.js
+++ b/kystudio/src/util/object.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import $ from 'jquery'
 
 export function get (object, pathStr = '') {
diff --git a/kystudio/src/util/plumb.js b/kystudio/src/util/plumb.js
index 94c05bd82c..6bbb793913 100644
--- a/kystudio/src/util/plumb.js
+++ b/kystudio/src/util/plumb.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import { jsPlumb } from 'jsplumb'
 import { stopPropagation } from './event'
 // jsPlumb 工具库
diff --git a/kystudio/src/util/polyfill.js b/kystudio/src/util/polyfill.js
index da336388e7..33a49a6477 100644
--- a/kystudio/src/util/polyfill.js
+++ b/kystudio/src/util/polyfill.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 /* eslint-disable no-extend-native */
 if (!String.prototype.trimLeft) {
   String.prototype.trimLeft = function () {
diff --git a/kystudio/src/util/specParser.js b/kystudio/src/util/specParser.js
index 88b68d9c4f..6e7a43ec85 100644
--- a/kystudio/src/util/specParser.js
+++ b/kystudio/src/util/specParser.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 import spec from '../config/spec'
 import Vue from 'vue'
 
diff --git a/kystudio/src/util/validate.js b/kystudio/src/util/validate.js
index 10c693f120..4d15c5c20b 100644
--- a/kystudio/src/util/validate.js
+++ b/kystudio/src/util/validate.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export const USERNAME = 'username'
 export const PASSWORD = 'password'
 export const CONFIRM_PASSWORD = 'confirm-password'
diff --git a/kystudio/src/util/vuex-router-sync.js b/kystudio/src/util/vuex-router-sync.js
index cda70467e6..e1e7a4b0b4 100644
--- a/kystudio/src/util/vuex-router-sync.js
+++ b/kystudio/src/util/vuex-router-sync.js
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 export function sync (store, router, options) {
   const moduleName = (options || {}).moduleName || 'route'
 
diff --git a/kystudio/test/common/directive.js b/kystudio/test/common/directive.js
index 35aecd31b5..58f9efc6cf 100644
--- a/kystudio/test/common/directive.js
+++ b/kystudio/test/common/directive.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import $ from 'jquery'
 import Scrollbar from 'smooth-scrollbar'
 import store from '../../src/store'
diff --git a/kystudio/test/common/spec_common.js b/kystudio/test/common/spec_common.js
index 3cd0a11b07..0466085cab 100644
--- a/kystudio/test/common/spec_common.js
+++ b/kystudio/test/common/spec_common.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import { createLocalVue } from '@vue/test-utils'
 import VueI18n from 'vue-i18n'
 import enKylinLocale from '../../src/locale/en'
diff --git a/kystudio/test/jest.conf.js b/kystudio/test/jest.conf.js
index 0531fa5264..3e3ca42b26 100644
--- a/kystudio/test/jest.conf.js
+++ b/kystudio/test/jest.conf.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 const path = require('path')
 
 module.exports = {
diff --git a/kystudio/test/setup.js b/kystudio/test/setup.js
index edbdbae81e..6f1761b5e3 100644
--- a/kystudio/test/setup.js
+++ b/kystudio/test/setup.js
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import Vue from 'vue'
 
 Vue.config.productionTip = false
diff --git a/pom.xml b/pom.xml
index 32054ad389..bb1cd29f49 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,16 +24,68 @@
     <packaging>pom</packaging>
     <version>5.0.0-alpha-SNAPSHOT</version>
 
-    <name>Apache Kylin 5</name>
+    <name>Apache Kylin</name>
     <url>http://kylin.apache.org</url>
     <inceptionYear>2016</inceptionYear>
-    <description>Apache Kylin 5</description>
+    <description>Apache Kylin</description>
 
     <organization>
         <name>Apache</name>
         <url>http://kylin.apache.org</url>
     </organization>
 
+    <scm>
+        <connection>scm:git:git://github.com/apache/kylin.git</connection>
+        <developerConnection>scm:git:ssh://git@github.com/apache/kylin.git
+        </developerConnection>
+        <url>https://github.com/apache/kylin</url>
+        <tag>HEAD</tag>
+    </scm>
+
+    <issueManagement>
+        <system>JIRA</system>
+        <url>https://issues.apache.org/jira/browse/KYLIN</url>
+    </issueManagement>
+
+
+    <mailingLists>
+        <mailingList>
+            <name>kylin-user</name>
+            <subscribe>user-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>user-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>user@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-user/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-dev</name>
+            <subscribe>dev-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>dev-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>dev@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-issues</name>
+            <subscribe>issues-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>issues-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>issues@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-issues/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-commits</name>
+            <subscribe>commits-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>commits-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>commits@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-commits/</archive>
+        </mailingList>
+    </mailingLists>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
     <properties>
         <!-- General Properties -->
         <javaVersion>1.8</javaVersion>
@@ -3465,5 +3517,260 @@
                 </repository>
             </repositories>
         </profile>
+        <profile>
+            <!-- This profile adds/overrides few features of the 'apache-release'
+                 profile in the parent pom. -->
+            <id>apache-release</id>
+            <activation>
+                <property>
+                    <name>pre-commit</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </plugin>
+                    <!-- Override the parent assembly execution to customize the assembly
+                        descriptor and final name. -->
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>source-release-assembly</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    <tarLongFileMode>posix</tarLongFileMode>
+                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
+                                    <appendAssemblyId>true</appendAssemblyId>
+                                    <descriptors>
+                                        <descriptor>
+                                            assembly/src/main/config/assemblies/source-assembly.xml
+                                        </descriptor>
+                                    </descriptors>
+                                    <finalName>apache-kylin-${project.version}</finalName>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                    <!-- Apache-RAT checks for files without headers.
+                         If run on a messy developer's sandbox, it will fail.
+                         This serves as a reminder to only build a release in a clean
+                         sandbox! -->
+                    <plugin>
+                        <groupId>org.apache.rat</groupId>
+                        <artifactId>apache-rat-plugin</artifactId>
+                        <configuration>
+                            <!-- Used to print file with unapproved licenses in project to stand output -->
+                            <consoleOutput>true</consoleOutput>
+
+                            <!-- Exclude files/folders for apache release -->
+                            <excludes>
+                                <exclude>**/*.jj</exclude>
+
+                                <exclude>DEPENDENCIES</exclude>
+                                <exclude>.settings/**</exclude>
+                                <exclude>**/LICENSE*</exclude>
+                                <!-- Local git repo -->
+                                <exclude>.git/**</exclude>
+                                <exclude>.gitconfig</exclude>
+                                <!-- IDE files -->
+                                <exclude>.idea/**</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/.settings/**</exclude>
+
+                                <!-- image files constitute images required for documentation. .pptx contain the sources for images -->
+                                <exclude>**/*.png</exclude>
+                                <exclude>**/*.jpg</exclude>
+                                <exclude>**/*.gif</exclude>
+                                <exclude>**/*.ico</exclude>
+                                <exclude>**/*.svg</exclude>
+
+                                <!--Test Data-->
+                                <exclude>**/src/test/resources/**</exclude>
+                                <exclude>src/examples/sample_cube/template/**</exclude>
+                                <exclude>src/examples/test_case_data/localmeta/**</exclude>
+                                <exclude>src/examples/test_case_data/parquet_test/**</exclude>
+                                <exclude>**/src/spark-project/engine-spark/metastore_db/db.lck</exclude>
+                                <exclude>**/src/spark-project/engine-spark/metastore_db/service.properties</exclude>
+
+                                <!-- generated files -->
+                                <exclude>**/target/**</exclude>
+                                <exclude>src/examples/test_data/**</exclude>
+                                <exclude>lib/**</exclude>
+                                <exclude>dist/**</exclude>
+                                <exclude>**/dependency-reduced-pom.xml</exclude>
+
+                                <!-- text files without comments -->
+                                <exclude>**/*.csv</exclude>
+                                <exclude>**/*.json</exclude>
+                                <exclude>**/*.json.bad</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>**/*.spec</exclude>
+                                <exclude>**/*.acl</exclude>
+
+                                <!-- binary files -->
+                                <exclude>**/*.dict</exclude>
+                                <exclude>**/*.dic</exclude>
+                                <exclude>**/*.snapshot</exclude>
+                                <exclude>**/*.pdf</exclude>
+                                <exclude>**/*.docx</exclude>
+                                <exclude>**/*.doc</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/.checkstyle</exclude>
+                                <exclude>**/*.eot</exclude>
+                                <exclude>**/*.ttf</exclude>
+                                <exclude>**/*.woff</exclude>
+                                <exclude>**/*.DDLCheck</exclude>
+                                <exclude>**/*.factories</exclude>
+
+                                <!-- Kylin's website content -->
+                                <exclude>**/.sass-cache/**</exclude>
+
+                                <!-- tomcat package -->
+                                <exclude>tomcat/**</exclude>
+
+                                <!-- front end libary and generated files -->
+                                <exclude>kystudio/node_modules/**</exclude>
+                                <exclude>kystudio/dist/**</exclude>
+                                <exclude>kystudio/**/*.vue</exclude>
+                                <exclude>kystudio/**/*.less</exclude>
+                                <exclude>kystudio/static/**</exclude>
+                                <exclude>kystudio/.babelrc</exclude>
+                                <exclude>kystudio/.editorconfig</exclude>
+                                <exclude>kystudio/.eslintignore</exclude>
+                                <exclude>kystudio/.eslintrc.js</exclude>
+                                <exclude>kystudio/index.html</exclude>
+                                <exclude>kystudio/jsconfig.json</exclude>
+                                <exclude>kystudio/package.json</exclude>
+                                <exclude>kystudio/README.md</exclude>
+
+                                <!-- json configuration file-->
+                                <exclude>webapp/.bowerrc</exclude>
+                                <exclude>webapp/.jshintrc</exclude>
+                                <!-- generated dict files -->
+                                <exclude>dictionary/metastore_db/**</exclude>
+
+                                <!-- MIT license -->
+                                <exclude>webapp/app/css/AdminLTE.css</exclude>
+                                <exclude>webapp/app/css/messenger-theme-ice.css</exclude>
+                                <exclude>webapp/app/js/directives/kylin_abn_tree_directive.js</exclude>
+                                <exclude>webapp/app/js/directives/angular-tree-control.js</exclude>
+                                <exclude>webapp/app/js/directives/datetimepicker.js</exclude>
+                                <exclude>webapp/app/js/directives/select.js</exclude>
+                                <exclude>webapp/app/js/directives/ui-grid.js</exclude>
+
+                                <!-- BSD license -->
+                                <exclude>webapp/app/js/utils/liquidFillGauge.js</exclude>
+
+                                <!-- Debug-->
+                                <exclude>dev-support/**/*.env</exclude>
+                                <exclude>dev-support/**/*.yml</exclude>
+                                <exclude>build/sample_project/template/UUID</exclude>
+                                <exclude>build/release/**/*.tmpl</exclude>
+                                <exclude>build/deploy/grafana/custom.ini</exclude>
+
+                                <!--configuration file -->
+                                <exclude>webapp/app/routes.json</exclude>
+                                <exclude>webapp/bower.json</exclude>
+                                <exclude>webapp/grunt.json</exclude>
+                                <exclude>webapp/package.json</exclude>
+                                <exclude>src/license/third-party-file.ftl</exclude>
+                                <exclude>build/spark/**</exclude>
+                                <exclude>lombok.config</exclude>
+
+                                <!-- logs -->
+                                <exclude>**/*.log</exclude>
+                                <exclude>jdbc/kylin_jdbc.log*</exclude>
+                                <exclude>server/logs/**</exclude>
+
+                                <!-- jdbc service -->
+                                <exclude>**/java.sql.Driver</exclude>
+
+                                <!--ODBC sub project is a VS project, exclude related files -->
+                                <exclude>**/*.sln</exclude>
+                                <exclude>**/*.vcxproj</exclude>
+                                <exclude>**/*.vcxproj.filters</exclude>
+                                <exclude>**/*.vcxproj.user</exclude>
+                                <exclude>**/*.props</exclude>
+                                <exclude>**/*.RC</exclude>
+                                <exclude>**/*.dsp</exclude>
+                                <exclude>**/*.DEF</exclude>
+                                <exclude>**/*.isl</exclude>
+                                <exclude>**/*.isproj</exclude>
+                                <exclude>**/*.bmp</exclude>
+
+                                <exclude>src/main/codegen/javacc/org/apache/kylin/query/util/CommentParser.jj</exclude>
+
+                                <!-- protobuf generated -->
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/ii/coprocessor/endpoint/generated/IIProtos.java
+                                </exclude>
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/cube/v1/filter/generated/FilterProtosExt.java
+                                </exclude>
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
+                                </exclude>
+                                <exclude>
+                                    storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
+                                </exclude>
+                                <exclude>
+                                    examples/test_case_data/sample_local/UUID
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.apache.maven.doxia</groupId>
+                                <artifactId>doxia-core</artifactId>
+                                <version>1.7</version>
+                                <exclusions>
+                                    <exclusion>
+                                        <groupId>xerces</groupId>
+                                        <artifactId>xercesImpl</artifactId>
+                                    </exclusion>
+                                </exclusions>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                    <plugin>
+                        <groupId>net.ju-n.maven.plugins</groupId>
+                        <artifactId>checksum-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>artifacts</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <algorithms>
+                                <algorithm>SHA-256</algorithm>
+                            </algorithms>
+                            <failOnError>false</failOnError>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 </project>
diff --git a/src/common-booter/pom.xml b/src/common-booter/pom.xml
index 3f6374309f..a9741c8ffe 100644
--- a/src/common-booter/pom.xml
+++ b/src/common-booter/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/common-booter/src/main/resources/assembly.xml b/src/common-booter/src/main/resources/assembly.xml
index 4d8e5b7a51..6bbb8c2347 100644
--- a/src/common-booter/src/main/resources/assembly.xml
+++ b/src/common-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/common-booter/src/main/resources/log4j2.xml b/src/common-booter/src/main/resources/log4j2.xml
index a2eea64c90..aefc89d83d 100644
--- a/src/common-booter/src/main/resources/log4j2.xml
+++ b/src/common-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/common-server/pom.xml b/src/common-server/pom.xml
index 57b1128fe4..7ac148c88f 100644
--- a/src/common-server/pom.xml
+++ b/src/common-server/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java b/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
index 2324979f71..a424ebb589 100644
--- a/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
+++ b/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.kylin.metadata.query;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/data-loading-booter/pom.xml b/src/data-loading-booter/pom.xml
index 2d4d086689..90536213ae 100644
--- a/src/data-loading-booter/pom.xml
+++ b/src/data-loading-booter/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/data-loading-booter/src/main/resources/assembly.xml b/src/data-loading-booter/src/main/resources/assembly.xml
index 6b14da8a0f..d54f595a23 100644
--- a/src/data-loading-booter/src/main/resources/assembly.xml
+++ b/src/data-loading-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/data-loading-booter/src/main/resources/log4j2.xml b/src/data-loading-booter/src/main/resources/log4j2.xml
index a2eea64c90..aefc89d83d 100644
--- a/src/data-loading-booter/src/main/resources/log4j2.xml
+++ b/src/data-loading-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/data-loading-server/pom.xml b/src/data-loading-server/pom.xml
index 1d51f26301..b49dc21c87 100644
--- a/src/data-loading-server/pom.xml
+++ b/src/data-loading-server/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/datasource-sdk/pom.xml b/src/datasource-sdk/pom.xml
index 78538b9a87..d111eca729 100644
--- a/src/datasource-sdk/pom.xml
+++ b/src/datasource-sdk/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/datasource-sdk/src/main/resources/datasource/mssql.xml b/src/datasource-sdk/src/main/resources/datasource/mssql.xml
index 3df49c8161..932fef29d5 100644
--- a/src/datasource-sdk/src/main/resources/datasource/mssql.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/mssql.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
 
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <DATASOURCE_DEF NAME="SqlServer12" ID="mssql" DIALECT="mssql">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="false"/>
diff --git a/src/datasource-sdk/src/main/resources/datasource/snowflake.xml b/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
index ce378d0216..fb09c545ce 100644
--- a/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
 
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <DATASOURCE_DEF NAME="SnowFlake" ID="snowflake" DIALECT="snowflake">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="true"/>
diff --git a/src/datasource-sdk/src/main/resources/datasource/sqldw.xml b/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
index 1e04aec335..638e726b01 100644
--- a/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
 
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <DATASOURCE_DEF NAME="SQL Datawarehouse" ID="sqldw" DIALECT="mssql">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="true"/>
diff --git a/src/docker/all_in_one/scripts/install_mysql.sh b/src/docker/all_in_one/scripts/install_mysql.sh
index c3a7ff5d59..298d21ae50 100644
--- a/src/docker/all_in_one/scripts/install_mysql.sh
+++ b/src/docker/all_in_one/scripts/install_mysql.sh
@@ -1,5 +1,22 @@
 #!/bin/bash
 
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
 export DEBIAN_FRONTEND="noninteractive"
 debconf-set-selections <<< 'mysql-server mysql-server/root_password password 123456'
 debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password 123456'
diff --git a/src/integration-service/pom.xml b/src/integration-service/pom.xml
index 96f16bef3d..e935737fa1 100644
--- a/src/integration-service/pom.xml
+++ b/src/integration-service/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/jdbc/pom.xml b/src/jdbc/pom.xml
index 4cf878ad8b..bf7f7b0863 100644
--- a/src/jdbc/pom.xml
+++ b/src/jdbc/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -11,6 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>kylin-jdbc</artifactId>
+    <name>Kylin - JDBC Driver</name>
 
     <properties>
         <shadeBase>org.apache.kylin.jdbc.shaded</shadeBase>
diff --git a/src/job-service/pom.xml b/src/job-service/pom.xml
index a4eb3c8bce..223bd59f53 100644
--- a/src/job-service/pom.xml
+++ b/src/job-service/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/kylin-it/pom.xml b/src/kylin-it/pom.xml
index d60542a4bc..b3e92ba52d 100644
--- a/src/kylin-it/pom.xml
+++ b/src/kylin-it/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -11,10 +27,11 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>kylin-it</artifactId>
+    <name>Kylin - Integration Testing</name>
 
     <properties>
         <beanutils.version>1.9.4</beanutils.version>
-        <kylin.module.version>5.0.0-SNAPSHOT</kylin.module.version>
+        <kylin.module.version>5.0.0-alpha</kylin.module.version>
     </properties>
 
     <dependencies>
diff --git a/src/metadata-server/pom.xml b/src/metadata-server/pom.xml
index 45fc90653c..5f16c8cc7d 100644
--- a/src/metadata-server/pom.xml
+++ b/src/metadata-server/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/query-booter/pom.xml b/src/query-booter/pom.xml
index 59bba14174..e6b1fcd090 100644
--- a/src/query-booter/pom.xml
+++ b/src/query-booter/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/query-booter/src/main/resources/assembly.xml b/src/query-booter/src/main/resources/assembly.xml
index 0b7dda9b3b..5b025704c4 100644
--- a/src/query-booter/src/main/resources/assembly.xml
+++ b/src/query-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/query-booter/src/main/resources/log4j2.xml b/src/query-booter/src/main/resources/log4j2.xml
index a2eea64c90..aefc89d83d 100644
--- a/src/query-booter/src/main/resources/log4j2.xml
+++ b/src/query-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/query-common/pom.xml b/src/query-common/pom.xml
index b64d1982d5..1df2e19486 100644
--- a/src/query-common/pom.xml
+++ b/src/query-common/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/query-server/pom.xml b/src/query-server/pom.xml
index ed330c821f..d770732813 100644
--- a/src/query-server/pom.xml
+++ b/src/query-server/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/second-storage/clickhouse-it/pom.xml b/src/second-storage/clickhouse-it/pom.xml
index 31baa6c064..901d309455 100644
--- a/src/second-storage/clickhouse-it/pom.xml
+++ b/src/second-storage/clickhouse-it/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/second-storage/clickhouse/pom.xml b/src/second-storage/clickhouse/pom.xml
index 57e102eadc..31acfcb70f 100644
--- a/src/second-storage/clickhouse/pom.xml
+++ b/src/second-storage/clickhouse/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/second-storage/core-ui/pom.xml b/src/second-storage/core-ui/pom.xml
index 27069cb23d..7e3f843756 100644
--- a/src/second-storage/core-ui/pom.xml
+++ b/src/second-storage/core-ui/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/second-storage/core/pom.xml b/src/second-storage/core/pom.xml
index 904e332cc0..a1b066c359 100644
--- a/src/second-storage/core/pom.xml
+++ b/src/second-storage/core/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/server/src/main/resources/log4j2.xml b/src/server/src/main/resources/log4j2.xml
index 7aac3a8b8b..3d38756123 100644
--- a/src/server/src/main/resources/log4j2.xml
+++ b/src/server/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala b/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
+++ b/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-ddl-plugin/pom.xml b/src/spark-project/spark-ddl-plugin/pom.xml
index ac59dcf885..f4c982bedd 100644
--- a/src/spark-project/spark-ddl-plugin/pom.xml
+++ b/src/spark-project/spark-ddl-plugin/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/streaming-service/pom.xml b/src/streaming-service/pom.xml
index ea483c9936..fd0dab71a8 100644
--- a/src/streaming-service/pom.xml
+++ b/src/streaming-service/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml b/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
index 148b311c21..8609af4fe6 100755
--- a/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
+++ b/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
@@ -1,4 +1,20 @@
 <?xml version='1.0' encoding='UTF-8'?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <datasource formatted-name="federated.0e6gjbn18cj0a41an9pi309itkyi" inline="true" source-platform="win" version="10.0">
   <connection class="federated">
     <named-connections>
diff --git a/src/tool/src/main/resources/bisync/tds/tableau.mappings.xml b/src/tool/src/main/resources/bisync/tds/tableau.mappings.xml
index 82eb67c970..8200f0655b 100644
--- a/src/tool/src/main/resources/bisync/tds/tableau.mappings.xml
+++ b/src/tool/src/main/resources/bisync/tds/tableau.mappings.xml
@@ -1,19 +1,19 @@
 <!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~    http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 
 <MAPPINGS>
     <TYPE_MAPPING KYLIN_TYPE="INTEGER" TARGET_TYPE="integer" />
diff --git a/src/tool/src/main/resources/bisync/tds/tableau.template.xml b/src/tool/src/main/resources/bisync/tds/tableau.template.xml
index b80874faf8..55c585673a 100644
--- a/src/tool/src/main/resources/bisync/tds/tableau.template.xml
+++ b/src/tool/src/main/resources/bisync/tds/tableau.template.xml
@@ -1,20 +1,20 @@
 <?xml version='1.0' encoding='utf-8' ?>
 <!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~    http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 
 <datasource formatted-name='federated.0e6gjbn18cj0a41an9pi309itkyi' inline='true' source-platform='win' version='10.0' xmlns:user='http://www.tableausoftware.com/xml/user'>
     <connection class='federated'>