mirror of
https://github.com/datahub-project/datahub.git
synced 2025-10-18 12:27:15 +00:00
implemented the dataset-owner component
This commit is contained in:
parent
b1c18be831
commit
746add7ff0
@ -248,6 +248,38 @@ public class Dataset extends Controller
|
|||||||
return ok(result);
|
return ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Result ownDataset(int id)
|
||||||
|
{
|
||||||
|
ObjectNode result = Json.newObject();
|
||||||
|
String username = session("user");
|
||||||
|
if (StringUtils.isNotBlank(username))
|
||||||
|
{
|
||||||
|
result = DatasetsDAO.ownDataset(id, username);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.put("status", "failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Result unownDataset(int id)
|
||||||
|
{
|
||||||
|
ObjectNode result = Json.newObject();
|
||||||
|
String username = session("user");
|
||||||
|
if (StringUtils.isNotBlank(username))
|
||||||
|
{
|
||||||
|
result = DatasetsDAO.unownDataset(id, username);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.put("status", "failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
public static Result getFavorites()
|
public static Result getFavorites()
|
||||||
{
|
{
|
||||||
ObjectNode result = Json.newObject();
|
ObjectNode result = Json.newObject();
|
||||||
|
@ -175,8 +175,25 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
private final static String UNFAVORITE_A_DATASET =
|
private final static String UNFAVORITE_A_DATASET =
|
||||||
"DELETE FROM favorites WHERE user_id = ? and dataset_id = ?";
|
"DELETE FROM favorites WHERE user_id = ? and dataset_id = ?";
|
||||||
|
|
||||||
|
private final static String GET_DATASET_OWNERS = "SELECT o.owner_id, o.namespace, " +
|
||||||
|
"o.owner_type, o.owner_sub_type, " +
|
||||||
|
"o.dataset_urn, u.display_name FROM dataset_owner o " +
|
||||||
|
"LEFT JOIN dir_external_user_info u on (o.owner_id = u.user_id and u.app_id = 300) " +
|
||||||
|
"WHERE dataset_id = ? ORDER BY sort_id";
|
||||||
|
|
||||||
|
private final static String UPDATE_DATASET_OWNER_SORT_ID = "UPDATE dataset_owner " +
|
||||||
|
"set sort_id = ? WHERE dataset_id = ? AND owner_id = ? AND namespace = ?";
|
||||||
|
|
||||||
|
private final static String OWN_A_DATASET = "INSERT INTO dataset_owner (" +
|
||||||
|
"dataset_id, owner_id, app_id, namespace, " +
|
||||||
|
"owner_type, is_group, is_active, sort_id, created_time, modified_time, wh_etl_exec_id, dataset_urn) " +
|
||||||
|
"VALUES(?, ?, 300, 'urn:li:corpuser', 'Producer', 'N', 'Y', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, ?)";
|
||||||
|
|
||||||
|
private final static String UNOWN_A_DATASET = "DELETE FROM dataset_owner " +
|
||||||
|
"WHERE dataset_id = ? AND owner_id = ? AND namespace = 'urn:li:corpuser'";
|
||||||
|
|
||||||
private final static String GET_FAVORITES = "SELECT DISTINCT d.id, d.name, d.urn, d.source " +
|
private final static String GET_FAVORITES = "SELECT DISTINCT d.id, d.name, d.urn, d.source " +
|
||||||
"FROM dict_dataset d JOIN favorites f ON d.id = f.dataset_id " +
|
"FROM dict_dataset d JOIN favorites f ON d.id = f.dataset_id " +
|
||||||
"JOIN users u ON f.dataset_id = d.id and f.user_id = u.id WHERE u.username = ? ORDER BY d.urn";
|
"JOIN users u ON f.dataset_id = d.id and f.user_id = u.id WHERE u.username = ? ORDER BY d.urn";
|
||||||
|
|
||||||
private final static String GET_COMMENTS_BY_DATASET_ID = "SELECT SQL_CALC_FOUND_ROWS " +
|
private final static String GET_COMMENTS_BY_DATASET_ID = "SELECT SQL_CALC_FOUND_ROWS " +
|
||||||
@ -377,17 +394,21 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < owners.length; i++)
|
for (int i = 0; i < owners.length; i++)
|
||||||
{
|
{
|
||||||
User user = new User();
|
User datasetOwner = new User();
|
||||||
user.userName = owners[i];
|
datasetOwner.userName = owners[i];
|
||||||
|
if (datasetOwner.userName.equalsIgnoreCase(user))
|
||||||
|
{
|
||||||
|
ds.isOwned = true;
|
||||||
|
}
|
||||||
if (StringUtils.isBlank(ownerNames[i]) || ownerNames[i].equalsIgnoreCase("*"))
|
if (StringUtils.isBlank(ownerNames[i]) || ownerNames[i].equalsIgnoreCase("*"))
|
||||||
{
|
{
|
||||||
user.name = owners[i];
|
datasetOwner.name = owners[i];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
user.name = ownerNames[i];
|
datasetOwner.name = ownerNames[i];
|
||||||
}
|
}
|
||||||
ds.owners.add(user);
|
ds.owners.add(datasetOwner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -460,6 +481,116 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ObjectNode ownDataset(int id, String user)
|
||||||
|
{
|
||||||
|
ObjectNode resultNode = Json.newObject();
|
||||||
|
boolean result = false;
|
||||||
|
List<Map<String, Object>> rows = null;
|
||||||
|
|
||||||
|
rows = getJdbcTemplate().queryForList(GET_DATASET_OWNERS, id);
|
||||||
|
int sortId = 0;
|
||||||
|
for (Map row : rows)
|
||||||
|
{
|
||||||
|
String ownerId = (String)row.get(DatasetWithUserRowMapper.DATASET_OWNER_ID_COLUMN);
|
||||||
|
String namespace = (String)row.get("namespace");
|
||||||
|
int ret = getJdbcTemplate().update(UPDATE_DATASET_OWNER_SORT_ID, ++sortId, id, ownerId, namespace);
|
||||||
|
if (ret <= 0)
|
||||||
|
{
|
||||||
|
Logger.warn("ownDataset update sort_id failed. Dataset id is : " +
|
||||||
|
Long.toString(id) + " owner_id is : " + ownerId + " namespace is : " + namespace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String urn = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
urn = (String)getJdbcTemplate().queryForObject(
|
||||||
|
GET_DATASET_URN_BY_ID,
|
||||||
|
String.class,
|
||||||
|
id);
|
||||||
|
}
|
||||||
|
catch(EmptyResultDataAccessException e)
|
||||||
|
{
|
||||||
|
Logger.error("Dataset ownDataset get urn failed, id = " + id);
|
||||||
|
Logger.error("Exception = " + e.getMessage());
|
||||||
|
}
|
||||||
|
int status = getJdbcTemplate().update(OWN_A_DATASET, id, user, urn);
|
||||||
|
if (status > 0)
|
||||||
|
{
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
rows = getJdbcTemplate().queryForList(GET_DATASET_OWNERS, id);
|
||||||
|
List<User> owners = new ArrayList<User>();
|
||||||
|
for (Map row : rows)
|
||||||
|
{
|
||||||
|
String ownerId = (String)row.get(DatasetWithUserRowMapper.DATASET_OWNER_ID_COLUMN);
|
||||||
|
String dislayName = (String)row.get("display_name");
|
||||||
|
if (StringUtils.isBlank(dislayName))
|
||||||
|
{
|
||||||
|
dislayName = ownerId;
|
||||||
|
}
|
||||||
|
User owner = new User();
|
||||||
|
owner.userName = ownerId;
|
||||||
|
owner.name = dislayName;
|
||||||
|
owners.add(owner);
|
||||||
|
}
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
resultNode.put("status", "success");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
resultNode.put("status", "failed");
|
||||||
|
}
|
||||||
|
resultNode.set("owners", Json.toJson(owners));
|
||||||
|
return resultNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ObjectNode unownDataset(int id, String user)
|
||||||
|
{
|
||||||
|
ObjectNode resultNode = Json.newObject();
|
||||||
|
boolean result = false;
|
||||||
|
int ret = getJdbcTemplate().update(UNOWN_A_DATASET, id, user);
|
||||||
|
if (ret > 0)
|
||||||
|
{
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> rows = null;
|
||||||
|
rows = getJdbcTemplate().queryForList(GET_DATASET_OWNERS, id);
|
||||||
|
List<User> owners = new ArrayList<User>();
|
||||||
|
int sortId = 0;
|
||||||
|
for (Map row : rows)
|
||||||
|
{
|
||||||
|
String ownerId = (String)row.get(DatasetWithUserRowMapper.DATASET_OWNER_ID_COLUMN);
|
||||||
|
String dislayName = (String)row.get("display_name");
|
||||||
|
String namespace = (String)row.get("namespace");
|
||||||
|
if (StringUtils.isBlank(dislayName))
|
||||||
|
{
|
||||||
|
dislayName = ownerId;
|
||||||
|
}
|
||||||
|
User owner = new User();
|
||||||
|
owner.userName = ownerId;
|
||||||
|
owner.name = dislayName;
|
||||||
|
owners.add(owner);
|
||||||
|
int updatedRows = getJdbcTemplate().update(UPDATE_DATASET_OWNER_SORT_ID, sortId++, id, ownerId, namespace);
|
||||||
|
if (ret <= 0)
|
||||||
|
{
|
||||||
|
Logger.warn("ownDataset update sort_id failed. Dataset id is : " +
|
||||||
|
Long.toString(id) + " owner_id is : " + ownerId + " namespace is : " + namespace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
resultNode.put("status", "success");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
resultNode.put("status", "failed");
|
||||||
|
}
|
||||||
|
resultNode.set("owners", Json.toJson(owners));
|
||||||
|
return resultNode;
|
||||||
|
}
|
||||||
|
|
||||||
public static Dataset getDatasetByID(int id, String user)
|
public static Dataset getDatasetByID(int id, String user)
|
||||||
{
|
{
|
||||||
Dataset dataset = null;
|
Dataset dataset = null;
|
||||||
|
@ -30,6 +30,7 @@ public class Dataset {
|
|||||||
public String schema;
|
public String schema;
|
||||||
public String nertzLink;
|
public String nertzLink;
|
||||||
public boolean isFavorite;
|
public boolean isFavorite;
|
||||||
|
public boolean isOwned;
|
||||||
public long watchId;
|
public long watchId;
|
||||||
public boolean isWatched;
|
public boolean isWatched;
|
||||||
public boolean hasSchemaHistory;
|
public boolean hasSchemaHistory;
|
||||||
|
@ -33,6 +33,14 @@
|
|||||||
</i>
|
</i>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script type="text/x-handlebars" id="components/dataset-owner">
|
||||||
|
<i
|
||||||
|
{{bind-attr class=":fa dataset.isOwned:fa-bookmark:fa-bookmark-o"}}
|
||||||
|
{{action "owned" dataset}}
|
||||||
|
>
|
||||||
|
</i>
|
||||||
|
</script>
|
||||||
|
|
||||||
<script type="text/x-handlebars" id="components/dataset-watch">
|
<script type="text/x-handlebars" id="components/dataset-watch">
|
||||||
<i
|
<i
|
||||||
{{bind-attr class=":fa dataset.watchId:fa-eye-slash:fa-eye"}}
|
{{bind-attr class=":fa dataset.watchId:fa-eye-slash:fa-eye"}}
|
||||||
@ -347,6 +355,10 @@
|
|||||||
{{ dataset.source }}
|
{{ dataset.source }}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="text-center">
|
||||||
|
{{#dataset-owner dataset=dataset action="owned"}}
|
||||||
|
{{/dataset-owner}}
|
||||||
|
</li>
|
||||||
<li
|
<li
|
||||||
class="text-center"
|
class="text-center"
|
||||||
>
|
>
|
||||||
|
@ -83,6 +83,10 @@ POST /api/v1/datasets/:id/favorite controllers.api.v1.Dataset.f
|
|||||||
|
|
||||||
DELETE /api/v1/datasets/:id/favorite controllers.api.v1.Dataset.unfavoriteDataset(id:Int)
|
DELETE /api/v1/datasets/:id/favorite controllers.api.v1.Dataset.unfavoriteDataset(id:Int)
|
||||||
|
|
||||||
|
POST /api/v1/datasets/:id/own controllers.api.v1.Dataset.ownDataset(id:Int)
|
||||||
|
|
||||||
|
DELETE /api/v1/datasets/:id/own controllers.api.v1.Dataset.unownDataset(id:Int)
|
||||||
|
|
||||||
GET /api/v1/search/:keyword controllers.api.v1.Search.searchByKeyword(keyword:String)
|
GET /api/v1/search/:keyword controllers.api.v1.Search.searchByKeyword(keyword:String)
|
||||||
|
|
||||||
GET /api/v1/metrics controllers.api.v1.Metric.getPagedMetrics()
|
GET /api/v1/metrics controllers.api.v1.Metric.getPagedMetrics()
|
||||||
|
@ -24,6 +24,36 @@ App.DatasetFavoriteComponent = Ember.Component.extend({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
App.DatasetOwnerComponent = Ember.Component.extend({
|
||||||
|
actions: {
|
||||||
|
owned: function(dataset) {
|
||||||
|
var url = '/api/v1/datasets/' + dataset.id + '/own';
|
||||||
|
var method = !dataset.isOwned ? 'POST' : 'DELETE';
|
||||||
|
var token = $("#csrfToken").val().replace('/', '');
|
||||||
|
var _this = this;
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
method: method,
|
||||||
|
headers: {
|
||||||
|
'Csrf-Token': token
|
||||||
|
},
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
csrfToken: token
|
||||||
|
}
|
||||||
|
}).done(function(data, txt, xhr){
|
||||||
|
if (data.status == 'success')
|
||||||
|
{
|
||||||
|
_this.set('dataset.isOwned', !dataset.isOwned);
|
||||||
|
_this.set('dataset.owners', data.owners);
|
||||||
|
}
|
||||||
|
}).fail(function(xhr, txt, err){
|
||||||
|
console.log('Error: Could not update dataset owner.')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
var datasetCommentsComponent = null;
|
var datasetCommentsComponent = null;
|
||||||
App.DatasetCommentsComponent = Ember.Component.extend({
|
App.DatasetCommentsComponent = Ember.Component.extend({
|
||||||
totalPages: null,
|
totalPages: null,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user