mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-03 04:10:43 +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);
|
||||
}
|
||||
|
||||
public static Result getDatasetVersions(Long datasetId)
|
||||
public static Result getDatasetVersions(Long datasetId, Integer dbId)
|
||||
{
|
||||
ObjectNode result = Json.newObject();
|
||||
result.put("status", "ok");
|
||||
result.put("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId)));
|
||||
result.put("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId, dbId)));
|
||||
return ok(result);
|
||||
}
|
||||
|
||||
@ -796,4 +796,12 @@ public class Dataset extends Controller
|
||||
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 " +
|
||||
"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()
|
||||
{
|
||||
return getJdbcTemplate().queryForList(GET_DATASET_OWNER_TYPES, String.class);
|
||||
@ -1937,7 +1941,7 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
||||
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);
|
||||
}
|
||||
@ -1959,4 +1963,26 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
||||
}
|
||||
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="col-xs-5">
|
||||
<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 class="col-xs-7 text-right">
|
||||
<ul class="datasetDetailsLinks">
|
||||
@ -854,6 +836,46 @@
|
||||
</ul>
|
||||
</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>
|
||||
|
||||
{{#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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@ -379,6 +379,32 @@ App.DatasetController = Ember.Controller.extend({
|
||||
}
|
||||
|
||||
_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,16 +210,34 @@ App.DatasetRoute = Ember.Route.extend({
|
||||
}
|
||||
}
|
||||
|
||||
var versionUrl = 'api/v1/datasets/' + id + "/versions";
|
||||
$.get(versionUrl, function(data) {
|
||||
if (data && data.status == "ok" && data.versions && data.versions.length > 0) {
|
||||
controller.set("hasversions", true);
|
||||
controller.set("versions", data.versions);
|
||||
controller.set("currentVersion", data.versions[0]);
|
||||
controller.set("latestVersion", data.versions[0]);
|
||||
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) {
|
||||
if (data && data.status == "ok" && data.versions && data.versions.length > 0) {
|
||||
controller.set("hasversions", true);
|
||||
controller.set("versions", data.versions);
|
||||
controller.set("currentVersion", data.versions[0]);
|
||||
controller.set("latestVersion", data.versions[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
controller.set("hasversions", false);
|
||||
controller.set("currentVersion", '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');
|
||||
|
||||
@ -36,6 +36,7 @@ public class ControllersTest {
|
||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_NAME = "wherehows";
|
||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_PASSWORD = "wherehows";
|
||||
public static String DATABASE_WHEREHOWS_OPENSOURCE_URL = "jdbc:mysql://localhost/wherehows";
|
||||
public static Integer DB_ID = 65;
|
||||
|
||||
@BeforeClass
|
||||
public static void startApp() {
|
||||
@ -112,7 +113,13 @@ public class ControllersTest {
|
||||
assertThat(sampleNode.isContainerNode());
|
||||
//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);
|
||||
JsonNode versionNode = Json.parse(contentAsString(result));
|
||||
assertThat(versionNode.isContainerNode());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user