Adds Dataset Template criteria on Dataset listing.
This commit is contained in:
parent
a0edd856f3
commit
61a64a1c5b
|
@ -20,6 +20,7 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
|||
private Integer role;
|
||||
private List<UUID> projects;
|
||||
private List<UUID> collaborators;
|
||||
private List<UUID> datasetTemplates;
|
||||
|
||||
public boolean getAllVersions() {
|
||||
return allVersions;
|
||||
|
@ -97,4 +98,11 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
|||
public void setCollaborators(List<UUID> collaborators) {
|
||||
this.collaborators = collaborators;
|
||||
}
|
||||
|
||||
public List<UUID> getDatasetTemplates() {
|
||||
return datasetTemplates;
|
||||
}
|
||||
public void setDatasetTemplates(List<UUID> datasetTemplates) {
|
||||
this.datasetTemplates = datasetTemplates;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,18 +43,16 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
|
|||
query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"), query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")), Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
|
||||
if (criteria.getDmpIds() != null && !criteria.getDmpIds().isEmpty())
|
||||
query.where((builder, root) -> root.get("dmp").get("id").in(criteria.getDmpIds()));
|
||||
if (criteria.getRole() != null) {
|
||||
if (criteria.getRole() != null)
|
||||
query.where((builder, root) -> builder.equal(root.join("dmp").join("users").get("role"), criteria.getRole()));
|
||||
}
|
||||
if (criteria.getOrganisations() != null && !criteria.getOrganisations().isEmpty()) {
|
||||
if (criteria.getOrganisations() != null && !criteria.getOrganisations().isEmpty())
|
||||
query.where((builder, root) -> root.join("dmp").join("organisations").get("reference").in(criteria.getOrganisations()));
|
||||
}
|
||||
if (criteria.getProjects() != null && !criteria.getProjects().isEmpty()) {
|
||||
if (criteria.getProjects() != null && !criteria.getProjects().isEmpty())
|
||||
query.where((builder, root) -> root.join("dmp").join("project").get("id").in(criteria.getProjects()));
|
||||
}
|
||||
if (criteria.getCollaborators() != null && !criteria.getCollaborators().isEmpty()) {
|
||||
if (criteria.getCollaborators() != null && !criteria.getCollaborators().isEmpty())
|
||||
query.where((builder, root) -> root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators()));
|
||||
}
|
||||
if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty())
|
||||
query.where(((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates())));
|
||||
query.where(((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue())));
|
||||
return query;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,13 @@ public class DatasetProfileDaoImpl extends DatabaseAccess<DatasetProfile> implem
|
|||
builder.notEqual(root.get("id"), criteria.getUserId())));
|
||||
//query.where(((builder, root) -> builder.equal(root.join("dmps", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), criteria.getUserId())));
|
||||
}
|
||||
if (criteria.getFilter().equals(DatasetProfileCriteria.DatasetProfileFilter.Datasets.getValue())) {
|
||||
query.initSubQuery(UUID.class).where((builder, root) ->
|
||||
builder.and(root.get("id").in(
|
||||
query.subQuery((builder1, root1) -> builder1.equal(root1.join("dataset", JoinType.LEFT).join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), criteria.getUserId()),
|
||||
Arrays.asList(new SelectionField(FieldSelectionType.FIELD, "id")))),
|
||||
builder.notEqual(root.get("id"), criteria.getUserId())));
|
||||
}
|
||||
}
|
||||
query.where(((builder, root) -> builder.notEqual(root.get("status"), DatasetProfile.Status.DELETED.getValue())));
|
||||
return query;
|
||||
|
|
|
@ -3,9 +3,11 @@ package eu.eudat.controllers;
|
|||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.data.query.items.table.dataset.DatasetPublicTableRequest;
|
||||
import eu.eudat.data.query.items.table.dataset.DatasetTableRequest;
|
||||
import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem;
|
||||
import eu.eudat.logic.managers.DatasetManager;
|
||||
import eu.eudat.logic.security.claims.ClaimedAuthorities;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel;
|
||||
import eu.eudat.models.data.helpers.common.DataTableData;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.models.data.listingmodels.DatasetListingModel;
|
||||
|
@ -57,5 +59,11 @@ public class Datasets extends BaseController {
|
|||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message(this.getApiContext().getHelpersService().getMessageSource().getMessage("dataset.public", new Object[]{}, locale)));
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = {"/datasetProfilesUsedByDatasets/paged"}, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<DataTableData<DatasetProfileListingModel>>> getUsingDatasetProfilesPaged(@RequestBody DatasetProfileTableRequestItem datasetProfileTableRequestItem, Principal principal) {
|
||||
DataTableData<DatasetProfileListingModel> datasetProfileTableData = this.datasetManager.getDatasetProfilesUsedByDatasets(datasetProfileTableRequestItem, principal);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataTableData<DatasetProfileListingModel>>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import eu.eudat.data.dao.entities.RegistryDao;
|
|||
import eu.eudat.data.entities.*;
|
||||
import eu.eudat.data.query.items.table.dataset.DatasetPublicTableRequest;
|
||||
import eu.eudat.data.query.items.table.dataset.DatasetTableRequest;
|
||||
import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem;
|
||||
import eu.eudat.elastic.criteria.DatasetCriteria;
|
||||
import eu.eudat.elastic.repository.DatasetRepository;
|
||||
import eu.eudat.logic.builders.BuilderFactory;
|
||||
|
@ -21,6 +22,7 @@ import eu.eudat.logic.utilities.documents.xml.ExportXmlBuilder;
|
|||
import eu.eudat.models.HintedModelFactory;
|
||||
import eu.eudat.models.data.datasetImport.DatasetImportField;
|
||||
import eu.eudat.models.data.datasetImport.DatasetImportPagedDatasetProfile;
|
||||
import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel;
|
||||
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
|
||||
import eu.eudat.models.data.dmp.AssociatedProfile;
|
||||
import eu.eudat.models.data.helpers.common.DataTableData;
|
||||
|
@ -568,4 +570,18 @@ public class DatasetManager {
|
|||
pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile);
|
||||
return pagedDatasetProfile;
|
||||
}
|
||||
|
||||
public DataTableData<DatasetProfileListingModel> getDatasetProfilesUsedByDatasets(DatasetProfileTableRequestItem datasetProfileTableRequestItem, Principal principal) {
|
||||
datasetProfileTableRequestItem.getCriteria().setFilter(DatasetProfileCriteria.DatasetProfileFilter.Datasets.getValue());
|
||||
datasetProfileTableRequestItem.getCriteria().setUserId(principal.getId());
|
||||
|
||||
QueryableList<DatasetProfile> items = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(datasetProfileTableRequestItem.getCriteria());
|
||||
List<DatasetProfileListingModel> listingModels = items.select(item -> new DatasetProfileListingModel().fromDataModel(item));
|
||||
|
||||
DataTableData<DatasetProfileListingModel> data = new DataTableData<>();
|
||||
data.setData(listingModels);
|
||||
data.setTotalCount((long) listingModels.size());
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,4 +10,5 @@ export class DatasetCriteria extends BaseCriteria {
|
|||
public role?: number;
|
||||
public organisations?: string[] = [];
|
||||
public collaborators?: string[] = [];
|
||||
public datasetTemplates?: string[] = [];
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import { DatasetProfileModel } from '../../model/dataset/dataset-profile';
|
|||
import { DatasetCriteria } from '../../query/dataset/dataset-criteria';
|
||||
import { ExploreDatasetCriteriaModel } from '../../query/explore-dataset/explore-dataset-criteria';
|
||||
import { BaseHttpService } from '../http/base-http.service';
|
||||
import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria';
|
||||
|
||||
@Injectable()
|
||||
export class DatasetService {
|
||||
|
@ -33,4 +34,8 @@ export class DatasetService {
|
|||
getDatasetProfiles(): Observable<DatasetProfileModel[]> {
|
||||
return this.http.get<DatasetProfileModel[]>(environment.Server + 'datasetprofiles/getAll');
|
||||
}
|
||||
|
||||
getDatasetProfilesUsedPaged(dataTableRequest: DataTableRequest<DatasetProfileCriteria>) {
|
||||
return this.http.post<DataTableData<DatasetListingModel>>(this.actionUrl + 'datasetProfilesUsedByDatasets/paged', dataTableRequest);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,19 @@
|
|||
</div>
|
||||
<!-- End of Status Filter-->
|
||||
|
||||
<!-- Related Dataset Templates Filters -->
|
||||
<div class="col-10 gray-container">
|
||||
<h6 class="category-title">{{'CRITERIA.DATA-SETS.RELATED-DATASET-TEMPLATES' | translate}}</h6>
|
||||
<mat-form-field>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('datasetTemplates')"
|
||||
placeholder="{{'CRITERIA.DATA-SETS.SELECT-DATASET-TEMPLATES' | translate }}"
|
||||
[configuration]="datasetTemplateAutoCompleteConfiguration">
|
||||
</app-multiple-auto-complete>
|
||||
<mat-icon matSuffix class="style-icon">arrow_drop_down</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<!-- End of Related Dataset Templates Filters -->
|
||||
|
||||
<!-- Related DMP Filters -->
|
||||
<div class="col-10 gray-container">
|
||||
<h6 class="category-title">{{'CRITERIA.DATA-SETS.RELATED-DMP' | translate}}</h6>
|
||||
|
|
|
@ -32,6 +32,8 @@ import { ProjectCriteria } from '../../../../core/query/project/project-criteria
|
|||
import { ProjectService } from '../../../../core/services/project/project.service';
|
||||
import { UserCriteria } from '../../../../core/query/user/user-criteria';
|
||||
import { UserService } from '../../../../core/services/user/user.service';
|
||||
import { DatasetProfileCriteria } from '../../../../core/query/dataset-profile/dataset-profile-criteria';
|
||||
import { DatasetService } from '../../../../core/services/dataset/dataset.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dataset-criteria-component',
|
||||
|
@ -56,6 +58,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
role: new FormControl(),
|
||||
organisations: new FormControl(),
|
||||
collaborators: new FormControl(),
|
||||
datasetTemplates: new FormControl(),
|
||||
tags: new FormControl()
|
||||
});
|
||||
|
||||
|
@ -66,6 +69,13 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
titleFn: (item) => item['name']
|
||||
};
|
||||
|
||||
datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = {
|
||||
filterFn: this.filterDatasetTemplate.bind(this),
|
||||
initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)),
|
||||
displayFn: (item) => item['label'],
|
||||
titleFn: (item) => item['label']
|
||||
};
|
||||
|
||||
dmpAutoCompleteConfiguration = {
|
||||
filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data),
|
||||
initialItems: (extraData) => this.filterDmps('').map(x => x.data),
|
||||
|
@ -107,6 +117,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
public projectService: ProjectService,
|
||||
private organisationService: OrganisationService,
|
||||
private userService: UserService,
|
||||
private datasetService: DatasetService,
|
||||
fb: FormBuilder
|
||||
) {
|
||||
super(new ValidationErrorModel());
|
||||
|
@ -139,7 +150,9 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
this.formGroup.get('collaborators').valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
|
||||
this.formGroup.get('datasetTemplates').valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
// if (this.criteria == null) { this.criteria = {}; }
|
||||
}
|
||||
|
||||
|
@ -150,6 +163,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
this.formGroup.get('status').patchValue(criteria.status);
|
||||
this.formGroup.get('role').patchValue(criteria.role);
|
||||
this.formGroup.get('collaborators').patchValue(criteria.collaborators);
|
||||
this.formGroup.get('datasetTemplates').patchValue(criteria.datasetTemplates);
|
||||
// this.criteria = criteria;
|
||||
}
|
||||
|
||||
|
@ -178,6 +192,15 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
return this.externalSourcesService.searchDatasetTags(requestItem);
|
||||
}
|
||||
|
||||
filterDatasetTemplate(query: string) {
|
||||
const fields: Array<string> = new Array<string>();
|
||||
fields.push('asc');
|
||||
const datasetTemplateRequestItem: DataTableRequest<DatasetProfileCriteria> = new DataTableRequest(0, null, { fields: fields });
|
||||
datasetTemplateRequestItem.criteria = new DatasetProfileCriteria();
|
||||
datasetTemplateRequestItem.criteria.like = query;
|
||||
return this.datasetService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).map(x => x.data);
|
||||
}
|
||||
|
||||
filterDmps(value: string): Observable<DataTableData<DmpListingModel>> {
|
||||
const fields: Array<string> = new Array<string>();
|
||||
fields.push('asc');
|
||||
|
|
|
@ -115,6 +115,9 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
|
|||
if (value.organisations) {
|
||||
request.criteria.organisations = value.organisations.map(x => x.id);
|
||||
}
|
||||
if (value.datasetTemplates) {
|
||||
request.criteria.datasetTemplates = value.datasetTemplates.map(x => x.id)
|
||||
}
|
||||
// if (this.itemId) {
|
||||
// // request.criteria.groupIds = [this.itemId];
|
||||
// request.criteria.allVersions = true;
|
||||
|
|
|
@ -547,7 +547,9 @@
|
|||
"SELECT-DMP": "Select DMP",
|
||||
"RELATED-DMP": "Related DMPs",
|
||||
"SELECT-COLLABORATORS": "Select Collaborators",
|
||||
"RELATED-COLLABORATORS": "Related Collaborators"
|
||||
"RELATED-COLLABORATORS": "Related Collaborators",
|
||||
"SELECT-DATASET-TEMPLATES": "Select Dataset Templates",
|
||||
"RELATED-DATASET-TEMPLATES": "Related Dataset Templates"
|
||||
},
|
||||
"DMP": {
|
||||
"LIKE": "Search DMPs",
|
||||
|
|
Loading…
Reference in New Issue