mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-10 00:11:15 +00:00
Merge pull request #180 from jerrybai2009/master
show dataset instance when it is availalbe
This commit is contained in:
commit
27e3962a6f
@ -780,11 +780,11 @@ public class Dataset extends Controller
|
|||||||
return ok(result);
|
return ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Result getDatasetVersions(Long datasetId)
|
public static Result getDatasetVersions(Long datasetId, Integer dbId)
|
||||||
{
|
{
|
||||||
ObjectNode result = Json.newObject();
|
ObjectNode result = Json.newObject();
|
||||||
result.put("status", "ok");
|
result.put("status", "ok");
|
||||||
result.put("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId)));
|
result.put("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId, dbId)));
|
||||||
return ok(result);
|
return ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -796,4 +796,12 @@ public class Dataset extends Controller
|
|||||||
return ok(result);
|
return ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Result getDatasetInstances(Long datasetId)
|
||||||
|
{
|
||||||
|
ObjectNode result = Json.newObject();
|
||||||
|
result.put("status", "ok");
|
||||||
|
result.put("instances", Json.toJson(DatasetsDAO.getDatasetInstances(datasetId)));
|
||||||
|
return ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -347,6 +347,10 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
private final static String GET_DATASET_SCHEMA_TEXT_BY_VERSION = "SELECT schema_text " +
|
private final static String GET_DATASET_SCHEMA_TEXT_BY_VERSION = "SELECT schema_text " +
|
||||||
"FROM dict_dataset_instance WHERE dataset_id = ? and version = ? ORDER BY db_id DESC limit 1";
|
"FROM dict_dataset_instance WHERE dataset_id = ? and version = ? ORDER BY db_id DESC limit 1";
|
||||||
|
|
||||||
|
private final static String GET_DATASET_INSTANCES = "SELECT DISTINCT i.db_id, c.db_code FROM " +
|
||||||
|
"dict_dataset_instance i JOIN cfg_database c ON i.db_id = c.db_id " +
|
||||||
|
"WHERE i.dataset_id = ?";
|
||||||
|
|
||||||
public static List<String> getDatasetOwnerTypes()
|
public static List<String> getDatasetOwnerTypes()
|
||||||
{
|
{
|
||||||
return getJdbcTemplate().queryForList(GET_DATASET_OWNER_TYPES, String.class);
|
return getJdbcTemplate().queryForList(GET_DATASET_OWNER_TYPES, String.class);
|
||||||
@ -1937,7 +1941,7 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> getDatasetVersions(Long datasetId)
|
public static List<String> getDatasetVersions(Long datasetId, Integer dbId)
|
||||||
{
|
{
|
||||||
return getJdbcTemplate().queryForList(GET_DATASET_VERSIONS, String.class, datasetId);
|
return getJdbcTemplate().queryForList(GET_DATASET_VERSIONS, String.class, datasetId);
|
||||||
}
|
}
|
||||||
@ -1959,4 +1963,26 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
}
|
}
|
||||||
return schemaText;
|
return schemaText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<DatasetInstance> getDatasetInstances(Long id)
|
||||||
|
{
|
||||||
|
List<DatasetInstance> datasetInstances = new ArrayList<DatasetInstance>();
|
||||||
|
|
||||||
|
List<Map<String, Object>> rows = null;
|
||||||
|
rows = getJdbcTemplate().queryForList(
|
||||||
|
GET_DATASET_INSTANCES,
|
||||||
|
id);
|
||||||
|
|
||||||
|
if (rows != null)
|
||||||
|
{
|
||||||
|
for (Map row : rows) {
|
||||||
|
DatasetInstance datasetInstance = new DatasetInstance();
|
||||||
|
datasetInstance.datasetId = id;
|
||||||
|
datasetInstance.dbId = (Integer) row.get("db_id");
|
||||||
|
datasetInstance.dbCode = (String) row.get("db_code");
|
||||||
|
datasetInstances.add(datasetInstance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return datasetInstances;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
21
web/app/models/DatasetInstance.java
Normal file
21
web/app/models/DatasetInstance.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2015 LinkedIn Corp. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
|
package models;
|
||||||
|
|
||||||
|
public class DatasetInstance {
|
||||||
|
|
||||||
|
public Long datasetId;
|
||||||
|
public String dbCode;
|
||||||
|
public Integer dbId;
|
||||||
|
}
|
||||||
@ -777,24 +777,6 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-5">
|
<div class="col-xs-5">
|
||||||
<h3>{{ model.name }}</h3>
|
<h3>{{ model.name }}</h3>
|
||||||
{{#if hasversions}}
|
|
||||||
<span class="prop-label">Versions:</span>
|
|
||||||
<div class="btn-toolbar col-xs-12" role="toolbar">
|
|
||||||
{{#each versions as |version index|}}
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
{{#if index}}
|
|
||||||
<button type="button" class="btn btn-secondary version-btn" {{action "updateVersion" version}}>
|
|
||||||
{{ version }}
|
|
||||||
</button>
|
|
||||||
{{else}}
|
|
||||||
<button type="button" class="btn btn-secondary version-btn active" {{action "updateVersion" version}}>
|
|
||||||
{{ version }}
|
|
||||||
</button>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-7 text-right">
|
<div class="col-xs-7 text-right">
|
||||||
<ul class="datasetDetailsLinks">
|
<ul class="datasetDetailsLinks">
|
||||||
@ -854,6 +836,46 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{#if hasinstances}}
|
||||||
|
<div class="row">
|
||||||
|
<span class="prop-label col-xs-1">Instance:</span>
|
||||||
|
<div class="btn-toolbar col-xs-11" role="toolbar">
|
||||||
|
{{#each instances as |instance index|}}
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
{{#if index}}
|
||||||
|
<button type="button" class="btn btn-secondary instance-btn" {{action "updateInstance" instance}}>
|
||||||
|
{{ instance.dbCode }}
|
||||||
|
</button>
|
||||||
|
{{else}}
|
||||||
|
<button type="button" class="btn btn-secondary instance-btn active" {{action "updateInstance" instance}}>
|
||||||
|
{{ instance.dbCode }}
|
||||||
|
</button>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if hasversions}}
|
||||||
|
<div class="row">
|
||||||
|
<span class="prop-label col-xs-1">Versions:</span>
|
||||||
|
<div class="btn-toolbar col-xs-11" role="toolbar">
|
||||||
|
{{#each versions as |version index|}}
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
{{#if index}}
|
||||||
|
<button type="button" class="btn btn-secondary version-btn" {{action "updateVersion" version}}>
|
||||||
|
{{ version }}
|
||||||
|
</button>
|
||||||
|
{{else}}
|
||||||
|
<button type="button" class="btn btn-secondary version-btn active" {{action "updateVersion" version}}>
|
||||||
|
{{ version }}
|
||||||
|
</button>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if tabview}}
|
{{#if tabview}}
|
||||||
|
|||||||
@ -59,7 +59,9 @@ GET /api/v1/datasets/:id/owners controllers.api.v1.Dataset.getDatase
|
|||||||
|
|
||||||
POST /api/v1/datasets/:id/owners controllers.api.v1.Dataset.updateDatasetOwners(id:Int)
|
POST /api/v1/datasets/:id/owners controllers.api.v1.Dataset.updateDatasetOwners(id:Int)
|
||||||
|
|
||||||
GET /api/v1/datasets/:id/versions controllers.api.v1.Dataset.getDatasetVersions(id:Long)
|
GET /api/v1/datasets/:id/versions/db/:dbId controllers.api.v1.Dataset.getDatasetVersions(id:Long, dbId:Int)
|
||||||
|
|
||||||
|
GET /api/v1/datasets/:id/instances controllers.api.v1.Dataset.getDatasetInstances(id:Long)
|
||||||
|
|
||||||
GET /api/v1/datasets/:id/schema/:version controllers.api.v1.Dataset.getDatasetSchemaTextByVersion(id:Long, version:String)
|
GET /api/v1/datasets/:id/schema/:version controllers.api.v1.Dataset.getDatasetSchemaTextByVersion(id:Long, version:String)
|
||||||
|
|
||||||
|
|||||||
@ -379,6 +379,32 @@ App.DatasetController = Ember.Controller.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
_this.set('currentVersion', version);
|
_this.set('currentVersion', version);
|
||||||
|
},
|
||||||
|
updateInstance: function(instance) {
|
||||||
|
_this = this;;
|
||||||
|
var currentInstance = _this.get('currentInstance');
|
||||||
|
var latestInstance = _this.get('latestInstance');
|
||||||
|
if (currentInstance == instance.dbId)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var objs = $('.instance-btn');
|
||||||
|
if (objs && objs.length > 0)
|
||||||
|
{
|
||||||
|
for(var i = 0; i < objs.length; i++)
|
||||||
|
{
|
||||||
|
if ($(objs[i]).hasClass('active'))
|
||||||
|
{
|
||||||
|
$(objs[i]).removeClass('active');
|
||||||
|
}
|
||||||
|
if (instance.dbCode == objs[i].outerText)
|
||||||
|
{
|
||||||
|
$(objs[i]).addClass('active');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_this.set('currentInstance', instance.dbId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -210,7 +210,14 @@ App.DatasetRoute = Ember.Route.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var versionUrl = 'api/v1/datasets/' + id + "/versions";
|
var instanceUrl = 'api/v1/datasets/' + id + "/instances";
|
||||||
|
$.get(instanceUrl, function(data) {
|
||||||
|
if (data && data.status == "ok" && data.instances && data.instances.length > 0) {
|
||||||
|
controller.set("hasinstances", true);
|
||||||
|
controller.set("instances", data.instances);
|
||||||
|
controller.set("currentInstance", data.instances[0]);
|
||||||
|
controller.set("latestInstance", data.instances[0]);
|
||||||
|
var versionUrl = 'api/v1/datasets/' + id + "/versions/db/" + data.instances[0].dbId;
|
||||||
$.get(versionUrl, function(data) {
|
$.get(versionUrl, function(data) {
|
||||||
if (data && data.status == "ok" && data.versions && data.versions.length > 0) {
|
if (data && data.status == "ok" && data.versions && data.versions.length > 0) {
|
||||||
controller.set("hasversions", true);
|
controller.set("hasversions", true);
|
||||||
@ -225,6 +232,17 @@ App.DatasetRoute = Ember.Route.extend({
|
|||||||
controller.set("latestVersion", '0');
|
controller.set("latestVersion", '0');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
controller.set("hasinstances", false);
|
||||||
|
controller.set("currentInstance", '0');
|
||||||
|
controller.set("latestInstance", '0');
|
||||||
|
controller.set("hasversions", false);
|
||||||
|
controller.set("currentVersion", '0');
|
||||||
|
controller.set("latestVersion", '0');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (urn)
|
if (urn)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -36,6 +36,7 @@ public class ControllersTest {
|
|||||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_NAME = "wherehows";
|
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_NAME = "wherehows";
|
||||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_PASSWORD = "wherehows";
|
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_PASSWORD = "wherehows";
|
||||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_URL = "jdbc:mysql://localhost/wherehows";
|
public static String DATABASE_WHEREHOWS_OPENSOURCE_URL = "jdbc:mysql://localhost/wherehows";
|
||||||
|
public static Integer DB_ID = 65;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void startApp() {
|
public static void startApp() {
|
||||||
@ -112,7 +113,13 @@ public class ControllersTest {
|
|||||||
assertThat(sampleNode.isContainerNode());
|
assertThat(sampleNode.isContainerNode());
|
||||||
//assertThat(sampleNode.get("status").asText()).isEqualTo("ok");
|
//assertThat(sampleNode.get("status").asText()).isEqualTo("ok");
|
||||||
|
|
||||||
result = controllers.api.v1.Dataset.getDatasetVersions(datasetId)
|
result = controllers.api.v1.Dataset.getDatasetInstances(datasetId);
|
||||||
|
assertThat(status(result)).isEqualTo(OK);
|
||||||
|
JsonNode instanceNode = Json.parse(contentAsString(result));
|
||||||
|
assertThat(instanceNode.isContainerNode());
|
||||||
|
assertThat(instanceNode.get("status").asText()).isEqualTo("ok");
|
||||||
|
|
||||||
|
result = controllers.api.v1.Dataset.getDatasetVersions(datasetId, DB_ID);
|
||||||
assertThat(status(result)).isEqualTo(OK);
|
assertThat(status(result)).isEqualTo(OK);
|
||||||
JsonNode versionNode = Json.parse(contentAsString(result));
|
JsonNode versionNode = Json.parse(contentAsString(result));
|
||||||
assertThat(versionNode.isContainerNode());
|
assertThat(versionNode.isContainerNode());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user