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:29:50 UTC

[kylin] branch kylin5.0.0-alpha updated (794a483c45 -> 5ae8790bf8)

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

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


 discard 794a483c45 Update pom
 discard 0b253141db Update pom
 discard 7d97c1a306 Update pom
     new 5ae8790bf8 Update pom and add license check

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (794a483c45)
            \
             N -- N -- N   refs/heads/kylin5.0.0-alpha (5ae8790bf8)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 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                                            | 255 +++++++++++++
 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                                   |  16 +
 src/job-service/pom.xml                            |  16 +
 src/kylin-it/pom.xml                               |  16 +
 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, 4778 insertions(+), 1496 deletions(-)
 delete mode 100644 kystudio/e2e/.npmrc
 delete mode 100644 "kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind"
 delete mode 100644 "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"
 delete mode 100644 "kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind"
 delete mode 100644 "kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind"
 delete mode 100644 kystudio/e2e/package.json
 delete mode 100644 kystudio/e2e/specs/clear/index.spec.js
 delete mode 100644 kystudio/e2e/specs/e2e.env
 delete mode 100644 kystudio/e2e/specs/index.js
 delete mode 100644 kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js
 delete mode 100644 kystudio/e2e/specs/projectManagement/happy_path/index.spec.js
 delete mode 100644 kystudio/e2e/specs/projectOperation/happy_path/index.spec.js
 delete mode 100644 kystudio/e2e/specs/projectQuery/happy_path/index.spec.js
 delete mode 100644 kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js
 delete mode 100644 kystudio/e2e/specs/systemAdmin/login/login.spec.js
 delete mode 100644 kystudio/e2e/specs/systemAdmin/logout/logout.spec.js
 delete mode 100644 kystudio/e2e/specs/utils/businessHelper.js
 delete mode 100644 kystudio/e2e/specs/utils/domHelper.js
 delete mode 100644 kystudio/e2e/specs/utils/index.js


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

Posted by xx...@apache.org.
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 5ae8790bf884807fdf51fc09c0fe2fab42211fbf
Author: XiaoxiangYu <xx...@apache.org>
AuthorDate: Tue Jan 10 14:27:08 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                                            | 315 +++++++++++++++-
 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                                   |  16 +
 src/job-service/pom.xml                            |  16 +
 src/kylin-it/pom.xml                               |  18 +-
 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(+), 1501 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 2f0e486881..af45bf51d6 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>
@@ -41,7 +93,7 @@
         <maven-model.version>3.3.9</maven-model.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <kylin.module.version>5.0.0-SNAPSHOT</kylin.module.version>
+        <kylin.module.version>5.0.0-alpha</kylin.module.version>
         <arthas.version>3.6.3-kyarthas-r2</arthas.version>
 
         <!-- Keep same order with dependencyManagement -->
@@ -65,7 +117,7 @@
 
         <!-- Spark versions -->
         <delta.version>1.2.1</delta.version>
-        <spark.version>3.2.0-kylin-4.6.1.0-SNAPSHOT</spark.version>
+        <spark.version>33.2.0-kylin-4.5.20.0</spark.version>
 
         <roaring.version>0.9.2-kylin-r4</roaring.version>
 
@@ -3459,5 +3511,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..47d9e82fce 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">
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 164c465210..ab019ff7e2 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">
@@ -14,7 +30,7 @@
 
     <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'>