ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akuznet...@apache.org
Subject [1/3] ignite git commit: IGNITE-2385 WIP renaming metadata to domain model
Date Mon, 18 Jan 2016 03:18:53 GMT
Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc2 f31f0316b -> 2d3064675


http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 9e26c02..840dcc2 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -987,7 +987,7 @@ $generatorXml.cacheStatistics = function(cache, res) {
     return res;
 };
 
-// Generate metadata query fields.
+// Generate domain model query fields.
 $generatorXml.metadataQueryFields = function (res, meta) {
     var fields = meta.fields;
 
@@ -1008,7 +1008,7 @@ $generatorXml.metadataQueryFields = function (res, meta) {
     }
 };
 
-// Generate metadata query fields.
+// Generate domain model query fields.
 $generatorXml.metadataQueryAliases = function (res, meta) {
     var aliases = meta.aliases;
 
@@ -1029,7 +1029,7 @@ $generatorXml.metadataQueryAliases = function (res, meta) {
     }
 };
 
-// Generate metadata indexes.
+// Generate domain model indexes.
 $generatorXml.metadataQueryIndexes = function (res, meta) {
     var indexes = meta.indexes;
 
@@ -1069,7 +1069,7 @@ $generatorXml.metadataQueryIndexes = function (res, meta) {
     }
 };
 
-// Generate metadata db fields.
+// Generate domain model db fields.
 $generatorXml.metadataDatabaseFields = function (res, meta, fieldProp) {
     var fields = meta[fieldProp];
 
@@ -1103,7 +1103,7 @@ $generatorXml.metadataDatabaseFields = function (res, meta, fieldProp) {
     }
 };
 
-// Generate metadata general group.
+// Generate domain model general group.
 $generatorXml.metadataGeneral = function(meta, res) {
     if (!res)
         res = $generatorCommon.builder();
@@ -1116,7 +1116,7 @@ $generatorXml.metadataGeneral = function(meta, res) {
     return res;
 };
 
-// Generate metadata for query group.
+// Generate domain model for query group.
 $generatorXml.metadataQuery = function(meta, res) {
     if (!res)
         res = $generatorCommon.builder();
@@ -1134,7 +1134,7 @@ $generatorXml.metadataQuery = function(meta, res) {
     return res;
 };
 
-// Generate metadata for store group.
+// Generate domain model for store group.
 $generatorXml.metadataStore = function(meta, res) {
     if (!res)
         res = $generatorCommon.builder();
@@ -1172,7 +1172,7 @@ $generatorXml.cacheQueryMetadata = function(meta, res) {
     return res;
 };
 
-// Generate cache type metadata configs.
+// Generate domain models configs.
 $generatorXml.cacheMetadatas = function(metadatas, res) {
     if (!res)
         res = $generatorCommon.builder();

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/public/images/domains.png
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/public/images/domains.png b/modules/control-center-web/src/main/js/public/images/domains.png
new file mode 100644
index 0000000..3086aa6
Binary files /dev/null and b/modules/control-center-web/src/main/js/public/images/domains.png differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/public/images/metadata.png
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/public/images/metadata.png b/modules/control-center-web/src/main/js/public/images/metadata.png
deleted file mode 100755
index 3086aa6..0000000
Binary files a/modules/control-center-web/src/main/js/public/images/metadata.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/routes/agent.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/agent.js b/modules/control-center-web/src/main/js/routes/agent.js
index 02d5c7a..bb3d16c 100644
--- a/modules/control-center-web/src/main/js/routes/agent.js
+++ b/modules/control-center-web/src/main/js/routes/agent.js
@@ -190,7 +190,7 @@ router.post('/query/close', function (req, res) {
     }
 });
 
-/* Get metadata for cache. */
+/* Get domain model for cache. */
 router.post('/cache/metadata', function (req, res) {
     var client = _client(req, res);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/routes/caches.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/caches.js b/modules/control-center-web/src/main/js/routes/caches.js
index 70f0e9b..5455c6a 100644
--- a/modules/control-center-web/src/main/js/routes/caches.js
+++ b/modules/control-center-web/src/main/js/routes/caches.js
@@ -38,7 +38,7 @@ router.post('/list', function (req, res) {
             // Get all clusters for spaces.
             db.Cluster.find({space: {$in: space_ids}}, '_id name caches').sort('name').exec(function (err, clusters) {
                 if (db.processed(err, res)) {
-                    // Get all caches type metadata for spaces.
+                    // Get all domain models for spaces.
                     db.CacheTypeMetadata.find({space: {$in: space_ids}}).sort('name').exec(function (err, metadatas) {
                         if (db.processed(err, res)) {
                             // Get all caches for spaces.
@@ -52,7 +52,7 @@ router.post('/list', function (req, res) {
                                                 }) >= 0;
                                         });
 
-                                        // Remove deleted metadata.
+                                        // Remove deleted domain models.
                                         cache.metadatas = _.filter(cache.metadatas, function (metaId) {
                                             return _.findIndex(metadatas, function (meta) {
                                                     return meta._id.equals(metaId);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/domains.js b/modules/control-center-web/src/main/js/routes/domains.js
new file mode 100644
index 0000000..755d7cf
--- /dev/null
+++ b/modules/control-center-web/src/main/js/routes/domains.js
@@ -0,0 +1,269 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 async = require('async');
+var _ = require('lodash');
+var router = require('express').Router();
+var db = require('../db');
+
+/**
+ * Get spaces and domain models accessed for user account.
+ *
+ * @param req Request.
+ * @param res Response.
+ */
+router.post('/list', function (req, res) {
+    var user_id = req.currentUserId();
+
+    // Get owned space and all accessed space.
+    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
+        if (db.processed(err, res)) {
+            var space_ids = spaces.map(function (value) {
+                return value._id;
+            });
+
+            // Get all clusters for spaces.
+            db.Cluster.find({space: {$in: space_ids}}, '_id name').sort('name').exec(function (err, clusters) {
+                if (db.processed(err, res)) {
+                    // Get all caches for spaces.
+                    db.Cache.find({space: {$in: space_ids}}).sort('name').exec(function (err, caches) {
+                        if (db.processed(err, res)) {
+                            // Get all domain models for spaces.
+                            db.CacheTypeMetadata.find({space: {$in: space_ids}}).sort('valueType').exec(function (err, metadatas) {
+                                if (db.processed(err, res)) {
+                                    // Remove deleted caches.
+                                    _.forEach(metadatas, function (meta) {
+                                        meta.caches = _.filter(meta.caches, function (cacheId) {
+                                            return _.findIndex(caches, function (cache) {
+                                                    return cache._id.equals(cacheId);
+                                                }) >= 0;
+                                        });
+                                    });
+
+                                    res.json({
+                                        spaces: spaces,
+                                        clusters: clusters.map(function (cluster) {
+                                            return {value: cluster._id, label: cluster.name};
+                                        }),
+                                        caches: caches.map(function (cache) {
+                                            return {value: cache._id, label: cache.name};
+                                        }),
+                                        metadatas: metadatas
+                                    });
+                                }
+                            });
+                        }
+                    });
+                }
+            });
+        }
+    });
+});
+
+function _saveMeta(meta, savedMetas, callback) {
+    var metaId = meta._id;
+    var caches = meta.caches;
+
+    if (metaId)
+        db.CacheTypeMetadata.update({_id: meta._id}, meta, {upsert: true}, function (err) {
+            if (err)
+                callback(err);
+            else
+                db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
+                    if (err)
+                        callback(err);
+                    else
+                        db.Cache.update({_id: {$nin: caches}}, {$pull: {metadatas: metaId}}, {multi: true}, function (err) {
+                            if (err)
+                                callback(err);
+                            else {
+                                savedMetas.push(meta);
+
+                                callback();
+                            }
+                        });
+                });
+        });
+    else
+        db.CacheTypeMetadata.findOne({space: meta.space, valueType: meta.valueType}, function (err, metadata) {
+            if (err)
+                callback(err);
+            else
+            if (metadata)
+                return callback('Domain model with value type: "' + metadata.valueType + '" already exist.');
+
+            (new db.CacheTypeMetadata(meta)).save(function (err, metadata) {
+                if (err)
+                    callback(err);
+                else {
+                    metaId = metadata._id;
+
+                    db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
+                        if (err)
+                            callback(err);
+                        else {
+                            savedMetas.push(metadata);
+
+                            callback();
+                        }
+                    });
+                }
+            });
+        });
+}
+
+function _save(metas, res) {
+    var savedMetas = [];
+    var generatedCaches = [];
+
+    if (metas && metas.length > 0)
+        async.forEachOf(metas, function(meta, idx, callback) {
+            if (meta.newCache) {
+                db.Cache.findOne({space: meta.space, name: meta.newCache.name}, function (err, cache) {
+                    if (db.processed(err, res))
+                        if (cache) {
+                            // Cache already exists, just save domain model.
+                            meta.caches = [cache._id];
+
+                            _saveMeta(meta, savedMetas, callback);
+                        }
+                        else {
+                            // If cache not found, then create it and associate with domain model.
+                            (new db.Cache({
+                                space: meta.space,
+                                name: meta.newCache.name,
+                                clusters: meta.newCache.clusters,
+                                cacheMode: 'PARTITIONED',
+                                atomicityMode: 'ATOMIC',
+                                cacheStoreFactory: {
+                                    kind: 'CacheJdbcPojoStoreFactory',
+                                    CacheJdbcPojoStoreFactory: {
+                                        dataSourceBean: 'dataSource',
+                                        dialect: 'H2'
+                                    }
+                                },
+                                readThrough: true,
+                                writeThrough: true,
+                                demo: meta.demo
+                            })).save(function (err, cache) {
+                                var cacheId = cache._id;
+
+                                if (db.processed(err, res)) {
+                                    db.Cluster.update({_id: {$in: cache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) {
+                                        if (db.processed(err, res)) {
+                                            meta.caches = [cacheId];
+                                            generatedCaches.push({ value: cacheId, label: cache.name });
+
+                                            _saveMeta(meta, savedMetas, callback);
+                                        }
+                                    });
+                                }
+                            });
+                        }
+                });
+            }
+            else
+                _saveMeta(meta, savedMetas, callback);
+        }, function (err) {
+            if (err)
+                res.status(500).send(err);
+            else
+                res.send({ savedMetas: savedMetas, generatedCaches: generatedCaches });
+        });
+    else
+        res.status(500).send('Nothing to save!');
+}
+
+/**
+ * Save domain model.
+ */
+router.post('/save', function (req, res) {
+    _save([req.body], res);
+});
+
+/**
+ * Batch save domain models.
+ */
+router.post('/save/batch', function (req, res) {
+    _save(req.body, res);
+});
+
+/**
+ * Remove domain model by ._id.
+ */
+router.post('/remove', function (req, res) {
+    db.CacheTypeMetadata.remove(req.body, function (err) {
+        if (db.processed(err, res))
+            res.sendStatus(200);
+    })
+});
+
+/**
+ * Remove all domain models.
+ */
+router.post('/remove/all', function (req, res) {
+    var user_id = req.currentUserId();
+
+    // Get owned space and all accessed space.
+    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
+        if (db.processed(err, res)) {
+            var space_ids = spaces.map(function (value) {
+                return value._id;
+            });
+
+            db.CacheTypeMetadata.remove({space: {$in: space_ids}}, function (err) {
+                if (err)
+                    return res.status(500).send(err.message);
+
+                res.sendStatus(200);
+            })
+        }
+    });
+});
+
+/**
+ * Remove all generated demo domain models and caches.
+ */
+router.post('/remove/demo', function (req, res) {
+    var user_id = req.currentUserId();
+
+    // Get owned space and all accessed space.
+    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
+        if (db.processed(err, res)) {
+            var space_ids = spaces.map(function (value) {
+                return value._id;
+            });
+
+            // Remove all demo domain models.
+            db.CacheTypeMetadata.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, function (err) {
+                if (err)
+                    return res.status(500).send(err.message);
+
+                // Remove all demo caches.
+                db.Cache.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, function (err) {
+                    if (err)
+                        return res.status(500).send(err.message);
+
+                    res.sendStatus(200);
+                });
+            });
+        }
+    });
+});
+
+
+module.exports = router;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/routes/metadata.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/metadata.js b/modules/control-center-web/src/main/js/routes/metadata.js
deleted file mode 100644
index 7e4bef8..0000000
--- a/modules/control-center-web/src/main/js/routes/metadata.js
+++ /dev/null
@@ -1,269 +0,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.
- */
-
-var async = require('async');
-var _ = require('lodash');
-var router = require('express').Router();
-var db = require('../db');
-
-/**
- * Get spaces and metadata accessed for user account.
- *
- * @param req Request.
- * @param res Response.
- */
-router.post('/list', function (req, res) {
-    var user_id = req.currentUserId();
-
-    // Get owned space and all accessed space.
-    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
-        if (db.processed(err, res)) {
-            var space_ids = spaces.map(function (value) {
-                return value._id;
-            });
-
-            // Get all clusters for spaces.
-            db.Cluster.find({space: {$in: space_ids}}, '_id name').sort('name').exec(function (err, clusters) {
-                if (db.processed(err, res)) {
-                    // Get all caches for spaces.
-                    db.Cache.find({space: {$in: space_ids}}).sort('name').exec(function (err, caches) {
-                        if (db.processed(err, res)) {
-                            // Get all metadata for spaces.
-                            db.CacheTypeMetadata.find({space: {$in: space_ids}}).sort('valueType').exec(function (err, metadatas) {
-                                if (db.processed(err, res)) {
-                                    // Remove deleted caches.
-                                    _.forEach(metadatas, function (meta) {
-                                        meta.caches = _.filter(meta.caches, function (cacheId) {
-                                            return _.findIndex(caches, function (cache) {
-                                                    return cache._id.equals(cacheId);
-                                                }) >= 0;
-                                        });
-                                    });
-
-                                    res.json({
-                                        spaces: spaces,
-                                        clusters: clusters.map(function (cluster) {
-                                            return {value: cluster._id, label: cluster.name};
-                                        }),
-                                        caches: caches.map(function (cache) {
-                                            return {value: cache._id, label: cache.name};
-                                        }),
-                                        metadatas: metadatas
-                                    });
-                                }
-                            });
-                        }
-                    });
-                }
-            });
-        }
-    });
-});
-
-function _saveMeta(meta, savedMetas, callback) {
-    var metaId = meta._id;
-    var caches = meta.caches;
-
-    if (metaId)
-        db.CacheTypeMetadata.update({_id: meta._id}, meta, {upsert: true}, function (err) {
-            if (err)
-                callback(err);
-            else
-                db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
-                    if (err)
-                        callback(err);
-                    else
-                        db.Cache.update({_id: {$nin: caches}}, {$pull: {metadatas: metaId}}, {multi: true}, function (err) {
-                            if (err)
-                                callback(err);
-                            else {
-                                savedMetas.push(meta);
-
-                                callback();
-                            }
-                        });
-                });
-        });
-    else
-        db.CacheTypeMetadata.findOne({space: meta.space, valueType: meta.valueType}, function (err, metadata) {
-            if (err)
-                callback(err);
-            else
-            if (metadata)
-                return callback('Cache type metadata with value type: "' + metadata.valueType + '" already exist.');
-
-            (new db.CacheTypeMetadata(meta)).save(function (err, metadata) {
-                if (err)
-                    callback(err);
-                else {
-                    metaId = metadata._id;
-
-                    db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
-                        if (err)
-                            callback(err);
-                        else {
-                            savedMetas.push(metadata);
-
-                            callback();
-                        }
-                    });
-                }
-            });
-        });
-}
-
-function _save(metas, res) {
-    var savedMetas = [];
-    var generatedCaches = [];
-
-    if (metas && metas.length > 0)
-        async.forEachOf(metas, function(meta, idx, callback) {
-            if (meta.newCache) {
-                db.Cache.findOne({space: meta.space, name: meta.newCache.name}, function (err, cache) {
-                    if (db.processed(err, res))
-                        if (cache) {
-                            // Cache already exists, just save metadata.
-                            meta.caches = [cache._id];
-
-                            _saveMeta(meta, savedMetas, callback);
-                        }
-                        else {
-                            // If cache not found, then create it and associate with metadata.
-                            (new db.Cache({
-                                space: meta.space,
-                                name: meta.newCache.name,
-                                clusters: meta.newCache.clusters,
-                                cacheMode: 'PARTITIONED',
-                                atomicityMode: 'ATOMIC',
-                                cacheStoreFactory: {
-                                    kind: 'CacheJdbcPojoStoreFactory',
-                                    CacheJdbcPojoStoreFactory: {
-                                        dataSourceBean: 'dataSource',
-                                        dialect: 'H2'
-                                    }
-                                },
-                                readThrough: true,
-                                writeThrough: true,
-                                demo: meta.demo
-                            })).save(function (err, cache) {
-                                var cacheId = cache._id;
-
-                                if (db.processed(err, res)) {
-                                    db.Cluster.update({_id: {$in: cache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) {
-                                        if (db.processed(err, res)) {
-                                            meta.caches = [cacheId];
-                                            generatedCaches.push({ value: cacheId, label: cache.name });
-
-                                            _saveMeta(meta, savedMetas, callback);
-                                        }
-                                    });
-                                }
-                            });
-                        }
-                });
-            }
-            else
-                _saveMeta(meta, savedMetas, callback);
-        }, function (err) {
-            if (err)
-                res.status(500).send(err);
-            else
-                res.send({ savedMetas: savedMetas, generatedCaches: generatedCaches });
-        });
-    else
-        res.status(500).send('Nothing to save!');
-}
-
-/**
- * Save metadata.
- */
-router.post('/save', function (req, res) {
-    _save([req.body], res);
-});
-
-/**
- * Batch save metadata .
- */
-router.post('/save/batch', function (req, res) {
-    _save(req.body, res);
-});
-
-/**
- * Remove metadata by ._id.
- */
-router.post('/remove', function (req, res) {
-    db.CacheTypeMetadata.remove(req.body, function (err) {
-        if (db.processed(err, res))
-            res.sendStatus(200);
-    })
-});
-
-/**
- * Remove all metadata.
- */
-router.post('/remove/all', function (req, res) {
-    var user_id = req.currentUserId();
-
-    // Get owned space and all accessed space.
-    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
-        if (db.processed(err, res)) {
-            var space_ids = spaces.map(function (value) {
-                return value._id;
-            });
-
-            db.CacheTypeMetadata.remove({space: {$in: space_ids}}, function (err) {
-                if (err)
-                    return res.status(500).send(err.message);
-
-                res.sendStatus(200);
-            })
-        }
-    });
-});
-
-/**
- * Remove all generated demo metadata and caches.
- */
-router.post('/remove/demo', function (req, res) {
-    var user_id = req.currentUserId();
-
-    // Get owned space and all accessed space.
-    db.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, function (err, spaces) {
-        if (db.processed(err, res)) {
-            var space_ids = spaces.map(function (value) {
-                return value._id;
-            });
-
-            // Remove all demo metadata.
-            db.CacheTypeMetadata.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, function (err) {
-                if (err)
-                    return res.status(500).send(err.message);
-
-                // Remove all demo caches.
-                db.Cache.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, function (err) {
-                    if (err)
-                        return res.status(500).send(err.message);
-
-                    res.sendStatus(200);
-                });
-            });
-        }
-    });
-});
-
-
-module.exports = router;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/caches.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/caches.jade b/modules/control-center-web/src/main/js/views/configuration/caches.jade
index 4d4df76..4b2803a 100644
--- a/modules/control-center-web/src/main/js/views/configuration/caches.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/caches.jade
@@ -22,17 +22,17 @@ include ../includes/controls
     ignite-callout
         ignite-callout-cel(data-title='On This Screen')
             li Configure Caches
-            li Link Metadata to Caches
+            li Link Domain models to Caches
             li Link Caches to Clusters
             li
                 ignite-dialog More info
                     ignite-dialog-title Caches screen
                     ignite-dialog-content 
-                        | Caches can be linked with specified #[a(ui-sref='base.configuration.clusters') clusters] and #[a(ui-sref='base.configuration.metadata') metadata].#[br]
+                        | Caches can be linked with specified #[a(ui-sref='base.configuration.clusters') clusters] and #[a(ui-sref='base.configuration.domains') domain models].#[br]
                         | Generated cluster with caches configuration available on #[a(ui-sref='base.configuration.summary') summary] screen.
                     
         ignite-callout-cel(data-title='Next Steps')
-            li Continue to #[a(ui-sref='base.configuration.metadata') Metadata]
+            li Continue to #[a(ui-sref='base.configuration.domains') Domain models]
             li Continue to #[a(ui-sref='base.configuration.summary') Summary]
             li Back to #[a(ui-sref='base.configuration.clusters') Clusters]
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/domains-import.jade b/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
new file mode 100644
index 0000000..2127d79
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/configuration/domains-import.jade
@@ -0,0 +1,184 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include ../includes/controls
+
+mixin chk(mdl, change, tip)
+    input(type='checkbox' ng-model=mdl ng-change=change bs-tooltip='' data-title=tip data-placement='bottom')
+
+mixin td-ellipses-lbl(w, lbl)
+    td.td-ellipsis(width='#{w}' style='min-width: #{w}; max-width: #{w}')
+        label #{lbl}
+
+mixin td-ellipses-a(w, ref)
+    td.td-ellipsis(width='#{w}' style='min-width: #{w}; max-width: #{w}')
+        a #{ref}
+
+.modal.center(role='dialog')
+    .modal-dialog
+        .modal-content(dw-loading='loadingMetadataFromDb' dw-loading-options='importMeta.loadingOptions')
+            #errors-container.modal-header.header
+                button.close(ng-click='$hide()' aria-hidden='true') ×
+                h4.modal-title(ng-if='!importMeta.demo') Import domain models from database
+                h4.modal-title(ng-if='importMeta.demo') Import domain models from demo database
+            .metadata-content(ng-show='importMeta.action == "drivers"' style="margin-bottom: 256px;")
+            .metadata-content(ng-show='importMeta.action == "connect" && importMeta.demo' style='margin-bottom: 141px')
+                div(ng-if='demoConnection.db == "H2"')
+                    label Demo description:
+                    ul
+                        li In-memory H2 database server will be started inside agent
+                        li Database will be populated with sample tables
+                        li You could test domain model generation with this demo database
+                        li Click "Next" to continue
+                div(ng-if='demoConnection.db != "H2"')
+                    label Demo could not be started
+                        ul
+                            li Agent failed to resolve H2 database jar
+                            li Copy h2-x.x.x.jar into agent '\jdbc-drivers' folder and try again
+                            li Refer to agent README.txt for more information
+            .metadata-content(ng-show='importMeta.action == "connect" && !importMeta.demo')
+                form.form-horizontal(name='connectForm' novalidate)
+                    .settings-row
+                        label.col-xs-4.col-sm-2.col-md-2 Driver JAR:
+                        .col-xs-8.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Select appropriate JAR with JDBC driver<br> To add another driver you need to place it into "/jdbc-drivers" folder of Ignite Web Agent<br> Refer to Ignite Web Agent README.txt for for more information')
+                            .input-tip
+                                button.select-toggle.form-control(id='jdbcDriverJar' bs-select ng-model='ui.selectedJdbcDriverJar' ng-class='{placeholder: !(jdbcDriverJars && jdbcDriverJars.length > 0)}' data-container='false' placeholder='Choose JDBC driver' bs-options='item.value as item.label for item in jdbcDriverJars')
+                    .settings-row
+                        label.col-xs-4.col-sm-2.col-md-2 JDBC Driver:
+                        .col-xs-8.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Fully qualified class name of JDBC driver that will be used to connect to database')
+                            .input-tip
+                                input.form-control(id='jdbcDriverClass' type='text' ng-model='selectedPreset.jdbcDriverClass' placeholder='JDBC driver fully qualified class name' required=true)
+                    .settings-row
+                        label.col-xs-4.col-sm-2.col-md-2 JDBC URL:
+                        .col-xs-8.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='JDBC URL for connecting to database<br>Refer to your database documentation for details')
+                            .input-tip
+                                input.form-control(id='jdbcUrl' type='text' ng-model='selectedPreset.jdbcUrl' placeholder='JDBC URL' required=true)
+                    .settings-row
+                        label.col-xs-4.col-sm-2.col-md-2 User:
+                        .col-xs-8.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='User name for connecting to database')
+                            .input-tip
+                                input.form-control(id='user' type='text' ng-model='selectedPreset.user')
+                    .settings-row
+                        label.col-xs-4.col-sm-2.col-md-2 Password:
+                        .col-xs-8.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Password for connecting to database<br>Note, password would not be saved in preferences for security reasons')
+                            .input-tip
+                                input.form-control(id='password' type='password' ng-model='selectedPreset.password' on-enter='importMetadataNext()')
+                    .settings-row
+                        .checkbox
+                            label
+                                input(id='tablesOnly' type='checkbox' ng-model='selectedPreset.tablesOnly')
+                                | Tables only
+                            i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='If selected, then only tables metadata will be parsed<br>Otherwise table and view metadata will be parsed')
+            .metadata-content(ng-show='importMeta.action == "schemas"')
+                table.table.metadata(st-table='importMeta.displayedSchemas' st-safe-src='importMeta.schemas')
+                    thead
+                        tr
+                            th.header(colspan='2')
+                                .col-sm-4.pull-right
+                                    input.form-control(type='text' st-search='name' placeholder='Filter schemas...' ng-model='importMeta.displayedSchemasFilter' ng-change='selectSchema()')
+                        tr
+                            th(width='50px')
+                                +chk('importMeta.allSchemasSelected',  'selectAllSchemas()', 'Select all schemas')
+                            th
+                                label Schema
+                        tbody
+                            tr
+                                td(colspan='2')
+                                    .scrollable-y(style='height: 143px')
+                                        table.table-modal-striped(id='metadataSchemaData')
+                                            tbody
+                                                tr(ng-repeat='schema in importMeta.displayedSchemas')
+                                                    td(width='50px')
+                                                        input(type='checkbox' ng-model='schema.use' ng-change='selectSchema()')
+                                                    td
+                                                        label {{::schema.name}}
+            .metadata-content(ng-show='importMeta.action == "tables"')
+                table.table.metadata(st-table='importMeta.displayedTables' st-safe-src='importMeta.tables')
+                    thead
+                        tr
+                            th.header(colspan='5')
+                                .col-sm-4.pull-right
+                                    input.form-control(type='text' st-search='label' placeholder='Filter tables...' ng-model='importMeta.displayedTablesFilter' ng-change='selectTable()')
+                        tr
+                            th(width='30px')
+                                +chk('importMeta.allTablesSelected',  'selectAllTables()', 'Select all tables')
+                            th(width='130px')
+                                label Schema
+                            th(width='160px')
+                                label Table name
+                            th(width='160px')
+                                label Cache
+                            th(width='128px')
+                                label Template
+                    tbody
+                        tr
+                            td(colspan='5')
+                                .scrollable-y(style='height: 143px')
+                                    table.table-modal-striped(id='metadataTableData')
+                                        tbody
+                                            tr(ng-repeat='table in importMeta.displayedTables')
+                                                td(width='30px' style='min-width: 30px; max-width: 30px')
+                                                    input(type='checkbox' ng-model='table.use' ng-change='selectTable()')
+                                                +td-ellipses-lbl('130px', '{{::table.schema}}')
+                                                +td-ellipses-lbl('160px', '{{::table.tbl}}')
+                                                td.td-ellipsis(width='160px' style='min-width: 160px; max-width: 160px')
+                                                    a(ng-if='!table.editCache' ng-click='startEditDbTableCache(table)') {{dbTableCache(table)}}
+                                                    button.select-toggle.form-control(ng-if='table.editCache' bs-select ng-model='table.cache' data-container='false' bs-options='item.value as item.label for item in importCaches')
+
+                                                +td-ellipses-a('128px', '{{dbTableTemplate(table)}}')
+            .metadata-content(ng-show='importMeta.action == "options"' style='margin-bottom: 75px')
+                form.form-horizontal(name='optionsForm' novalidate)
+                    .settings-row
+                        .col-xs-3.col-sm-2.col-md-2.required
+                            label.required Package:
+                        .col-xs-9.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Package that will be used for POJOs generation')
+                            .input-tip
+                                input.form-control(id='metadataPackageName' type="text" ng-model='ui.packageName' placeholder='Package for POJOs generation')
+                    .settings-row
+                        .checkbox
+                            label
+                                input(id='metadataBuiltinKeys' type='checkbox' ng-model='ui.builtinKeys')
+                                | Use Java built-in types for keys
+                                i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Use Java built-in types like "Integer", "Long", "String" instead of POJO generation in case when table primary key contains only one field')
+                    .settings-row
+                        .checkbox
+                            label
+                                input(id='metadataUsePrimitives' type='checkbox' ng-model='ui.usePrimitives')
+                                | Use primitive types for NOT NULL table columns
+                                i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Use primitive types like "int", "long", "double" for POJOs fields generation in case of NOT NULL columns')
+                    .settings-row
+                        .checkbox
+                            label
+                                input(id='metadataGenerateCaches' type='checkbox' ng-model='ui.generateCaches')
+                                | Generate cache for each loaded table
+                            i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Separate cache will be generated for each loaded table')
+                    .settings-row
+                        .col-xs-3.col-sm-2.col-md-2.required
+                            label Clusters:
+                        .col-xs-9.col-sm-10.col-md-10
+                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Choose clusters that will be associated with generated caches')
+                            .input-tip
+                                button.select-toggle.form-control(id='metadataGeneratedCachesCluster' bs-select ng-model='ui.generatedCachesClusters' ng-disabled='!ui.generateCaches' ng-class='{placeholder: !(ui.generatedCachesClusters && ui.generatedCachesClusters.length > 0)}' data-container='false' data-multiple='1' placeholder='Choose clusters for generated caches' bs-options='item.value as item.label for item in clusters')
+            .modal-footer
+                label(ng-hide='importMeta.action == "connect" && importMeta.demo').labelField {{importMeta.info}}
+                a.btn.btn-primary(ng-show='importMeta.action != "connect"' ng-click='importMetadataPrev()' bs-tooltip='' data-title='{{prevTooltipText()}}' data-placement='bottom') Prev
+                a.btn.btn-primary(ng-click='importMetadataNext()' ng-disabled='!importMetadataNextAvailable()' bs-tooltip='' data-title='{{nextTooltipText()}}' data-placement='bottom') {{importMeta.button}}

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/domains.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/domains.jade b/modules/control-center-web/src/main/js/views/configuration/domains.jade
new file mode 100644
index 0000000..e4f3d1f
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/configuration/domains.jade
@@ -0,0 +1,78 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include ../includes/controls
+
+.docs-header
+    h1 Create and Configure Domain Models
+.docs-body(ng-controller='domainsController')
+    ignite-callout
+        ignite-callout-cel(data-title='On This Screen')
+            li Manually enter Domain models
+            li Import Domain models from Database
+            li
+                ignite-dialog More info
+                    ignite-dialog-title Domain models screen
+                    ignite-dialog-content 
+                        | Domain models can be assigned to specified #[a(ui-sref='base.configuration.caches') caches].#[br]
+                        | Generated cluster with caches and domain models configuration available on #[a(ui-sref='base.configuration.summary') summary] screen.
+                    
+        ignite-callout-cel(data-title='Next Steps')
+            li Continue to #[a(ui-sref='base.configuration.summary') Summary]
+            li Back to #[a(ui-sref='base.configuration.caches') Caches]
+            li Back to #[a(ui-sref='base.configuration.clusters') Clusters]
+                        
+    div(dw-loading='loadingMetadataScreen' dw-loading-options='{text: "Loading domain models screen...", className: "page-loading-overlay"}')
+        div(ng-show='ui.ready')
+            hr
+            .padding-bottom-dflt(ng-show='metadatas && metadatas.length > 0')
+                table.links(st-table='displayedRows' st-safe-src='metadatas')
+                    thead
+                        tr
+                            th
+                                .col-sm-8
+                                    .col-sm-5
+                                        lable.labelHeader.labelFormField {{metadataTitle()}}
+                                    .col-sm-7
+                                        .pull-right.labelLogin.additional-filter(ng-if='(metadatas | domainsValidation:false:true).length > 0')
+                                            a.labelFormField(ng-if='ui.showValid' ng-click='toggleValid()') Key fields should be configured: {{(displayedRows | domainsValidation:false:true).length}}&nbsp
+                                            a.labelFormField(ng-if='!ui.showValid' ng-click='toggleValid()') Show all domain models: {{displayedRows.length}}&nbsp
+                                .col-sm-4
+                                    input.form-control.pull-right(type='text' st-search='valueType' placeholder='Filter domain models...')
+                        tbody
+                            tr
+                                td
+                                    .scrollable-y(ng-show='(displayedRows | domainsValidation:ui.showValid:true).length > 0' style='max-height: 200px')
+                                        table
+                                            tbody
+                                                tr(ng-repeat='row in (displayedRows | domainsValidation:ui.showValid:true) track by row._id')
+                                                    td
+                                                        a(ng-class='{active: row._id == selectedItem._id}' ng-click='selectItem(row)') {{$index + 1}}) {{row.valueType}}
+                                    label.placeholder(ng-show='(displayedRows | domainsValidation:ui.showValid:true).length == 0') No domain models found
+            .padding-top-dflt(bs-affix)
+                .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new domain model')
+                    button.btn.btn-primary(id='new-item' ng-click='createItem()') Add domain model
+                .panel-tip-container(bs-tooltip='' data-title='Import domain models from database' data-placement='bottom')
+                    button.btn.btn-primary(ng-click='showImportMetadataModal(false)') Import from database
+                +save-remove-buttons('domain model')
+                .btn-group.panel-tip-container.pull-right(bs-tooltip='' data-title='Import domain models from demo database' data-placement='bottom')
+                    button.btn.btn-info(ng-click='showImportMetadataModal(true)') Demo
+                        button.btn.dropdown-toggle.btn-info(id='remove-demo-dropdown' ng-if='hasDemoItems()' data-toggle='dropdown' data-container='body' bs-dropdown='removeDemoDropdown' data-placement='bottom-right')
+                            span.caret
+                hr
+            form.form-horizontal(name='ui.inputForm' ng-show='backupItem && tableVisibleRow((displayedRows | domainsValidation:ui.showValid:true), selectedItem)' novalidate unsaved-warning-form)
+                .panel-group(bs-collapse ng-model='panels.activePanels' data-allow-multiple='true')
+                    +groups('domainModel', 'backupItem')

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/metadata-import.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/metadata-import.jade b/modules/control-center-web/src/main/js/views/configuration/metadata-import.jade
deleted file mode 100644
index 8a6be46..0000000
--- a/modules/control-center-web/src/main/js/views/configuration/metadata-import.jade
+++ /dev/null
@@ -1,184 +0,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.
-
-include ../includes/controls
-
-mixin chk(mdl, change, tip)
-    input(type='checkbox' ng-model=mdl ng-change=change bs-tooltip='' data-title=tip data-placement='bottom')
-
-mixin td-ellipses-lbl(w, lbl)
-    td.td-ellipsis(width='#{w}' style='min-width: #{w}; max-width: #{w}')
-        label #{lbl}
-
-mixin td-ellipses-a(w, ref)
-    td.td-ellipsis(width='#{w}' style='min-width: #{w}; max-width: #{w}')
-        a #{ref}
-
-.modal.center(role='dialog')
-    .modal-dialog
-        .modal-content(dw-loading='loadingMetadataFromDb' dw-loading-options='importMeta.loadingOptions')
-            #errors-container.modal-header.header
-                button.close(ng-click='$hide()' aria-hidden='true') &times;
-                h4.modal-title(ng-if='!importMeta.demo') Import metadata from database
-                h4.modal-title(ng-if='importMeta.demo') Import metadata from demo database
-            .metadata-content(ng-show='importMeta.action == "drivers"' style="margin-bottom: 256px;")
-            .metadata-content(ng-show='importMeta.action == "connect" && importMeta.demo' style='margin-bottom: 141px')
-                div(ng-if='demoConnection.db == "H2"')
-                    label Demo description:
-                    ul
-                        li In-memory H2 database server will be started inside agent
-                        li Database will be populated with sample tables
-                        li You could test loading metadata using this demo database
-                        li Click "Next" to continue
-                div(ng-if='demoConnection.db != "H2"')
-                    label Demo could not be started
-                        ul
-                            li Agent failed to resolve H2 database jar
-                            li Copy h2-x.x.x.jar into agent '\jdbc-drivers' folder and try again
-                            li Refer to agent README.txt for more information
-            .metadata-content(ng-show='importMeta.action == "connect" && !importMeta.demo')
-                form.form-horizontal(name='connectForm' novalidate)
-                    .settings-row
-                        label.col-xs-4.col-sm-2.col-md-2 Driver JAR:
-                        .col-xs-8.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Select appropriate JAR with JDBC driver<br> To add another driver you need to place it into "/jdbc-drivers" folder of Ignite Web Agent<br> Refer to Ignite Web Agent README.txt for for more information')
-                            .input-tip
-                                button.select-toggle.form-control(id='jdbcDriverJar' bs-select ng-model='ui.selectedJdbcDriverJar' ng-class='{placeholder: !(jdbcDriverJars && jdbcDriverJars.length > 0)}' data-container='false' placeholder='Choose JDBC driver' bs-options='item.value as item.label for item in jdbcDriverJars')
-                    .settings-row
-                        label.col-xs-4.col-sm-2.col-md-2 JDBC Driver:
-                        .col-xs-8.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Fully qualified class name of JDBC driver that will be used to connect to database')
-                            .input-tip
-                                input.form-control(id='jdbcDriverClass' type='text' ng-model='selectedPreset.jdbcDriverClass' placeholder='JDBC driver fully qualified class name' required=true)
-                    .settings-row
-                        label.col-xs-4.col-sm-2.col-md-2 JDBC URL:
-                        .col-xs-8.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='JDBC URL for connecting to database<br>Refer to your database documentation for details')
-                            .input-tip
-                                input.form-control(id='jdbcUrl' type='text' ng-model='selectedPreset.jdbcUrl' placeholder='JDBC URL' required=true)
-                    .settings-row
-                        label.col-xs-4.col-sm-2.col-md-2 User:
-                        .col-xs-8.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='User name for connecting to database')
-                            .input-tip
-                                input.form-control(id='user' type='text' ng-model='selectedPreset.user')
-                    .settings-row
-                        label.col-xs-4.col-sm-2.col-md-2 Password:
-                        .col-xs-8.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Password for connecting to database<br>Note, password would not be saved in preferences for security reasons')
-                            .input-tip
-                                input.form-control(id='password' type='password' ng-model='selectedPreset.password' on-enter='importMetadataNext()')
-                    .settings-row
-                        .checkbox
-                            label
-                                input(id='tablesOnly' type='checkbox' ng-model='selectedPreset.tablesOnly')
-                                | Tables only
-                            i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='If selected, then only tables metadata will be parsed<br>Otherwise table and view metadata will be parsed')
-            .metadata-content(ng-show='importMeta.action == "schemas"')
-                table.table.metadata(st-table='importMeta.displayedSchemas' st-safe-src='importMeta.schemas')
-                    thead
-                        tr
-                            th.header(colspan='2')
-                                .col-sm-4.pull-right
-                                    input.form-control(type='text' st-search='name' placeholder='Filter schemas...' ng-model='importMeta.displayedSchemasFilter' ng-change='selectSchema()')
-                        tr
-                            th(width='50px')
-                                +chk('importMeta.allSchemasSelected',  'selectAllSchemas()', 'Select all schemas')
-                            th
-                                label Schema
-                        tbody
-                            tr
-                                td(colspan='2')
-                                    .scrollable-y(style='height: 143px')
-                                        table.table-modal-striped(id='metadataSchemaData')
-                                            tbody
-                                                tr(ng-repeat='schema in importMeta.displayedSchemas')
-                                                    td(width='50px')
-                                                        input(type='checkbox' ng-model='schema.use' ng-change='selectSchema()')
-                                                    td
-                                                        label {{::schema.name}}
-            .metadata-content(ng-show='importMeta.action == "tables"')
-                table.table.metadata(st-table='importMeta.displayedTables' st-safe-src='importMeta.tables')
-                    thead
-                        tr
-                            th.header(colspan='5')
-                                .col-sm-4.pull-right
-                                    input.form-control(type='text' st-search='label' placeholder='Filter tables...' ng-model='importMeta.displayedTablesFilter' ng-change='selectTable()')
-                        tr
-                            th(width='30px')
-                                +chk('importMeta.allTablesSelected',  'selectAllTables()', 'Select all tables')
-                            th(width='130px')
-                                label Schema
-                            th(width='160px')
-                                label Table name
-                            th(width='160px')
-                                label Cache
-                            th(width='128px')
-                                label Template
-                    tbody
-                        tr
-                            td(colspan='5')
-                                .scrollable-y(style='height: 143px')
-                                    table.table-modal-striped(id='metadataTableData')
-                                        tbody
-                                            tr(ng-repeat='table in importMeta.displayedTables')
-                                                td(width='30px' style='min-width: 30px; max-width: 30px')
-                                                    input(type='checkbox' ng-model='table.use' ng-change='selectTable()')
-                                                +td-ellipses-lbl('130px', '{{::table.schema}}')
-                                                +td-ellipses-lbl('160px', '{{::table.tbl}}')
-                                                td.td-ellipsis(width='160px' style='min-width: 160px; max-width: 160px')
-                                                    a(ng-if='!table.editCache' ng-click='startEditDbTableCache(table)') {{dbTableCache(table)}}
-                                                    button.select-toggle.form-control(ng-if='table.editCache' bs-select ng-model='table.cache' data-container='false' bs-options='item.value as item.label for item in importCaches')
-
-                                                +td-ellipses-a('128px', '{{dbTableTemplate(table)}}')
-            .metadata-content(ng-show='importMeta.action == "options"' style='margin-bottom: 75px')
-                form.form-horizontal(name='optionsForm' novalidate)
-                    .settings-row
-                        .col-xs-3.col-sm-2.col-md-2.required
-                            label.required Package:
-                        .col-xs-9.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Package that will be used for POJOs generation')
-                            .input-tip
-                                input.form-control(id='metadataPackageName' type="text" ng-model='ui.packageName' placeholder='Package for POJOs generation')
-                    .settings-row
-                        .checkbox
-                            label
-                                input(id='metadataBuiltinKeys' type='checkbox' ng-model='ui.builtinKeys')
-                                | Use Java built-in types for keys
-                                i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Use Java built-in types like "Integer", "Long", "String" instead of POJO generation in case when table primary key contains only one field')
-                    .settings-row
-                        .checkbox
-                            label
-                                input(id='metadataUsePrimitives' type='checkbox' ng-model='ui.usePrimitives')
-                                | Use primitive types for NOT NULL table columns
-                                i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Use primitive types like "int", "long", "double" for POJOs fields generation in case of NOT NULL columns')
-                    .settings-row
-                        .checkbox
-                            label
-                                input(id='metadataGenerateCaches' type='checkbox' ng-model='ui.generateCaches')
-                                | Generate cache for each loaded table
-                            i.tipLabel.fa.fa-question-circle(bs-tooltip='' data-title='Separate cache will be generated for each loaded table')
-                    .settings-row
-                        .col-xs-3.col-sm-2.col-md-2.required
-                            label Clusters:
-                        .col-xs-9.col-sm-10.col-md-10
-                            i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Choose clusters that will be associated with generated caches')
-                            .input-tip
-                                button.select-toggle.form-control(id='metadataGeneratedCachesCluster' bs-select ng-model='ui.generatedCachesClusters' ng-disabled='!ui.generateCaches' ng-class='{placeholder: !(ui.generatedCachesClusters && ui.generatedCachesClusters.length > 0)}' data-container='false' data-multiple='1' placeholder='Choose clusters for generated caches' bs-options='item.value as item.label for item in clusters')
-            .modal-footer
-                label(ng-hide='importMeta.action == "connect" && importMeta.demo').labelField {{importMeta.info}}
-                a.btn.btn-primary(ng-show='importMeta.action != "connect"' ng-click='importMetadataPrev()' bs-tooltip='' data-title='{{prevTooltipText()}}' data-placement='bottom') Prev
-                a.btn.btn-primary(ng-click='importMetadataNext()' ng-disabled='!importMetadataNextAvailable()' bs-tooltip='' data-title='{{nextTooltipText()}}' data-placement='bottom') {{importMeta.button}}

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/metadata.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/metadata.jade b/modules/control-center-web/src/main/js/views/configuration/metadata.jade
deleted file mode 100644
index 0dce34c..0000000
--- a/modules/control-center-web/src/main/js/views/configuration/metadata.jade
+++ /dev/null
@@ -1,78 +0,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.
-
-include ../includes/controls
-
-.docs-header
-    h1 Create and Configure Cache Type Metadata
-.docs-body(ng-controller='metadataController')
-    ignite-callout
-        ignite-callout-cel(data-title='On This Screen')
-            li Manually enter Metadata
-            li Import Metadata from Database
-            li
-                ignite-dialog More info
-                    ignite-dialog-title Metadata screen
-                    ignite-dialog-content 
-                        | Metadata can be assigned to specified #[a(ui-sref='base.configuration.caches') caches].#[br]
-                        | Generated cluster with caches and metadata configuration available on #[a(ui-sref='base.configuration.summary') summary] screen.
-                    
-        ignite-callout-cel(data-title='Next Steps')
-            li Continue to #[a(ui-sref='base.configuration.summary') Summary]
-            li Back to #[a(ui-sref='base.configuration.caches') Caches]
-            li Back to #[a(ui-sref='base.configuration.clusters') Clusters]
-                        
-    div(dw-loading='loadingMetadataScreen' dw-loading-options='{text: "Loading metadata screen...", className: "page-loading-overlay"}')
-        div(ng-show='ui.ready')
-            hr
-            .padding-bottom-dflt(ng-show='metadatas && metadatas.length > 0')
-                table.links(st-table='displayedRows' st-safe-src='metadatas')
-                    thead
-                        tr
-                            th
-                                .col-sm-8
-                                    .col-sm-5
-                                        lable.labelHeader.labelFormField {{metadataTitle()}}
-                                    .col-sm-7
-                                        .pull-right.labelLogin.additional-filter(ng-if='(metadatas | metadatasValidation:false:true).length > 0')
-                                            a.labelFormField(ng-if='ui.showValid' ng-click='toggleValid()') Key fields should be configured: {{(displayedRows | metadatasValidation:false:true).length}}&nbsp
-                                            a.labelFormField(ng-if='!ui.showValid' ng-click='toggleValid()') Show all metadata: {{displayedRows.length}}&nbsp
-                                .col-sm-4
-                                    input.form-control.pull-right(type='text' st-search='valueType' placeholder='Filter metadatas...')
-                        tbody
-                            tr
-                                td
-                                    .scrollable-y(ng-show='(displayedRows | metadatasValidation:ui.showValid:true).length > 0' style='max-height: 200px')
-                                        table
-                                            tbody
-                                                tr(ng-repeat='row in (displayedRows | metadatasValidation:ui.showValid:true) track by row._id')
-                                                    td
-                                                        a(ng-class='{active: row._id == selectedItem._id}' ng-click='selectItem(row)') {{$index + 1}}) {{row.valueType}}
-                                    label.placeholder(ng-show='(displayedRows | metadatasValidation:ui.showValid:true).length == 0') No metadata found
-            .padding-top-dflt(bs-affix)
-                .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new metadata')
-                    button.btn.btn-primary(id='new-item' ng-click='createItem()') Add metadata
-                .panel-tip-container(bs-tooltip='' data-title='Import metadata from database' data-placement='bottom')
-                    button.btn.btn-primary(ng-click='showImportMetadataModal(false)') Import from database
-                +save-remove-buttons('metadata')
-                .btn-group.panel-tip-container.pull-right(bs-tooltip='' data-title='Import metadata from demo database' data-placement='bottom')
-                    button.btn.btn-info(ng-click='showImportMetadataModal(true)') Demo
-                        button.btn.dropdown-toggle.btn-info(id='remove-demo-dropdown' ng-if='hasDemoItems()' data-toggle='dropdown' data-container='body' bs-dropdown='removeDemoDropdown' data-placement='bottom-right')
-                            span.caret
-                hr
-            form.form-horizontal(name='ui.inputForm' ng-show='backupItem && tableVisibleRow((displayedRows | metadatasValidation:ui.showValid:true), selectedItem)' novalidate unsaved-warning-form)
-                .panel-group(bs-collapse ng-model='panels.activePanels' data-allow-multiple='true')
-                    +groups('metadata', 'backupItem')

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade
index 3c1d21b..c7dc00a 100644
--- a/modules/control-center-web/src/main/js/views/configuration/summary.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade
@@ -37,7 +37,7 @@ mixin ignite-form-field-tooltip(message)
                         | <ul>
                         | <li>XML configurations for server and client nodes</li>
                         | <li>Java classes with server and client nodes configuration from code</li>
-                        | <li>POJO classes generated from database metadata</li>
+                        | <li>POJO classes generated for configured domain model</li>
                         | <li>Maven pom.xml for generated project</li>
                         | <li>Dockerfile for server node</li>
                         | </ul>

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d306467/modules/control-center-web/src/main/js/views/login.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/login.jade b/modules/control-center-web/src/main/js/views/login.jade
index 29a34e3..2ba170d 100644
--- a/modules/control-center-web/src/main/js/views/login.jade
+++ b/modules/control-center-web/src/main/js/views/login.jade
@@ -78,7 +78,7 @@ header#header.header
                     p Apache Ignite Web Console is an interactive web management tool which allows users to:
                     ul
                         li Create and download various configurations for Apache Ignite
-                        li Automatically load SQL metadata from any RDBMS
+                        li Automatically load SQL domain models from any RDBMS
                         li Connect to Ignite cluster and run SQL analytics on it
             .col-xs-12.col-md-6
                 #carousel.carousel.slide(data-ride='carousel')
@@ -102,12 +102,12 @@ header#header.header
                             img(src='/images/cache.png', alt='Caches screen')
                             .carousel-caption
                                 h3 Caches screen
-                                p Configure caches, link metadata to caches, link caches to clusters
+                                p Configure caches, link domain models to caches, link caches to clusters
                         .item
-                            img(src='/images/metadata.png', alt='Metadatas screen')
+                            img(src='/images/domains.png', alt='Domain models screen')
                             .carousel-caption
-                                h3 Metadata screen
-                                p Manually enter metadata or load from database
+                                h3 Domain models screen
+                                p Manually enter domain models or load from database
                         .item
                             img(src='/images/summary.png', alt='Summary screen')
                             .carousel-caption


Mime
View raw message