Create Delete EndPoind And Button ForDataset Profiles
This commit is contained in:
parent
86ae8e5eda
commit
f3e8d20e37
|
@ -15,6 +15,7 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
||||||
private List<UUID> dmpIds;
|
private List<UUID> dmpIds;
|
||||||
private List<Tag> tags;
|
private List<Tag> tags;
|
||||||
private boolean allVersions;
|
private boolean allVersions;
|
||||||
|
private UUID profileDatasetId;
|
||||||
|
|
||||||
|
|
||||||
public boolean getAllVersions() {
|
public boolean getAllVersions() {
|
||||||
|
@ -64,4 +65,12 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
||||||
public void setTags(List<Tag> tags) {
|
public void setTags(List<Tag> tags) {
|
||||||
this.tags = tags;
|
this.tags = tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UUID getProfileDatasetId() {
|
||||||
|
return profileDatasetId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProfileDatasetId(UUID profileDatasetId) {
|
||||||
|
this.profileDatasetId = profileDatasetId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
|
||||||
builder.like(builder.upper(root.get("description")), "%" + criteria.getLike().toUpperCase() + "%")));
|
builder.like(builder.upper(root.get("description")), "%" + criteria.getLike().toUpperCase() + "%")));
|
||||||
if (criteria.getStatus() != null)
|
if (criteria.getStatus() != null)
|
||||||
query.where((builder, root) -> builder.equal(root.get("status"), criteria.getStatus()));
|
query.where((builder, root) -> builder.equal(root.get("status"), criteria.getStatus()));
|
||||||
|
if (criteria.getProfileDatasetId() != null)
|
||||||
|
query.where((builder, root) -> builder.equal(root.get("profile").get("id"), criteria.getProfileDatasetId()));
|
||||||
if (criteria.getPeriodEnd() != null)
|
if (criteria.getPeriodEnd() != null)
|
||||||
query.where((builder, root) -> builder.lessThan(root.get("created"), criteria.getPeriodEnd()));
|
query.where((builder, root) -> builder.lessThan(root.get("created"), criteria.getPeriodEnd()));
|
||||||
if (criteria.getPeriodStart() != null)
|
if (criteria.getPeriodStart() != null)
|
||||||
|
|
|
@ -25,6 +25,7 @@ public class DatasetProfileDaoImpl extends DatabaseAccess<DatasetProfile> implem
|
||||||
QueryableList<DatasetProfile> query = getDatabaseService().getQueryable(DatasetProfile.class);
|
QueryableList<DatasetProfile> query = getDatabaseService().getQueryable(DatasetProfile.class);
|
||||||
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
|
if (criteria.getLike() != null && !criteria.getLike().isEmpty())
|
||||||
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"));
|
query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"));
|
||||||
|
query.where(((builder, root) -> builder.notEqual(root.get("status"), DatasetProfile.Status.DELETED.getValue())));
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,33 @@ import java.util.UUID;
|
||||||
@Table(name = "\"DatasetProfile\"")
|
@Table(name = "\"DatasetProfile\"")
|
||||||
public class DatasetProfile implements DataEntity<DatasetProfile,UUID> {
|
public class DatasetProfile implements DataEntity<DatasetProfile,UUID> {
|
||||||
|
|
||||||
|
public enum Status {
|
||||||
|
ACTIVE((short) 1), INACTIVE((short) 0), DELETED((short) 99);
|
||||||
|
|
||||||
|
private short value;
|
||||||
|
|
||||||
|
private Status(short value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Status fromInteger(int value) {
|
||||||
|
switch (value) {
|
||||||
|
case 0:
|
||||||
|
return INACTIVE;
|
||||||
|
case 1:
|
||||||
|
return ACTIVE;
|
||||||
|
case 99:
|
||||||
|
return DELETED;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("Unsupported Dataset Profile Status");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue
|
@GeneratedValue
|
||||||
@GenericGenerator(name = "uuid2", strategy = "uuid2")
|
@GenericGenerator(name = "uuid2", strategy = "uuid2")
|
||||||
|
|
|
@ -90,4 +90,17 @@ public class Admin extends BaseController {
|
||||||
datasetprofile.setLabel(profile.getLabel() + " new ");
|
datasetprofile.setLabel(profile.getLabel() + " new ");
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().payload(datasetprofile));
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().payload(datasetprofile));
|
||||||
}
|
}
|
||||||
|
@Transactional
|
||||||
|
@RequestMapping(method = RequestMethod.DELETE, value = {"{id}"}, consumes = "application/json", produces = "application/json")
|
||||||
|
public @ResponseBody
|
||||||
|
ResponseEntity<ResponseItem<DatasetProfile>> inactivate(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException {
|
||||||
|
eu.eudat.data.entities.DatasetProfile ret= AdminManager.inactivate(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao(),this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao() , id);
|
||||||
|
if(ret!=null){
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().status(ApiMessageCode.SUCCESS_MESSAGE));
|
||||||
|
|
||||||
|
}else {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().status(ApiMessageCode.SUCCESS_MESSAGE));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package eu.eudat.controllers;
|
package eu.eudat.controllers;
|
||||||
|
|
||||||
import eu.eudat.data.dao.criteria.RequestItem;
|
import eu.eudat.data.dao.criteria.RequestItem;
|
||||||
|
import eu.eudat.data.entities.Project;
|
||||||
import eu.eudat.logic.managers.AdminManager;
|
import eu.eudat.logic.managers.AdminManager;
|
||||||
import eu.eudat.logic.managers.DatasetProfileManager;
|
import eu.eudat.logic.managers.DatasetProfileManager;
|
||||||
import eu.eudat.logic.managers.UserManager;
|
|
||||||
import eu.eudat.logic.security.claims.ClaimedAuthorities;
|
import eu.eudat.logic.security.claims.ClaimedAuthorities;
|
||||||
import eu.eudat.logic.services.ApiContext;
|
import eu.eudat.logic.services.ApiContext;
|
||||||
import eu.eudat.models.data.components.commons.datafield.AutoCompleteData;
|
import eu.eudat.models.data.components.commons.datafield.AutoCompleteData;
|
||||||
|
@ -12,8 +12,6 @@ import eu.eudat.models.data.helpers.common.AutoCompleteLookupItem;
|
||||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||||
import eu.eudat.models.data.properties.PropertiesModel;
|
import eu.eudat.models.data.properties.PropertiesModel;
|
||||||
import eu.eudat.models.data.security.Principal;
|
import eu.eudat.models.data.security.Principal;
|
||||||
import eu.eudat.models.data.user.composite.DatasetProfile;
|
|
||||||
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
|
|
||||||
import eu.eudat.types.ApiMessageCode;
|
import eu.eudat.types.ApiMessageCode;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -29,7 +27,6 @@ import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import static eu.eudat.types.Authorities.ADMIN;
|
import static eu.eudat.types.Authorities.ADMIN;
|
||||||
import static eu.eudat.types.Authorities.ANONYMOUS;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
|
@ -74,4 +71,5 @@ public class DatasetProfileController extends BaseController {
|
||||||
List<Tuple<String, String>> items = this.datasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike());
|
List<Tuple<String, String>> items = this.datasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike());
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(items);
|
return ResponseEntity.status(HttpStatus.OK).body(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package eu.eudat.logic.managers;
|
package eu.eudat.logic.managers;
|
||||||
|
|
||||||
|
import eu.eudat.data.dao.entities.DatasetDao;
|
||||||
|
import eu.eudat.data.dao.entities.DatasetProfileDao;
|
||||||
import eu.eudat.logic.builders.entity.DatasetProfileBuilder;
|
import eu.eudat.logic.builders.entity.DatasetProfileBuilder;
|
||||||
import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.ViewStyleModel;
|
import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.ViewStyleModel;
|
||||||
import eu.eudat.models.data.admin.composite.DatasetProfile;
|
import eu.eudat.models.data.admin.composite.DatasetProfile;
|
||||||
|
@ -10,6 +12,7 @@ import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class AdminManager {
|
public class AdminManager {
|
||||||
|
|
||||||
|
@ -38,4 +41,18 @@ public class AdminManager {
|
||||||
datasetprofile.buildProfile(viewstyle);
|
datasetprofile.buildProfile(viewstyle);
|
||||||
return datasetprofile;
|
return datasetprofile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static eu.eudat.data.entities.DatasetProfile inactivate(DatasetProfileDao datasetProfileRepository, DatasetDao datasetDao, String id) {
|
||||||
|
eu.eudat.data.dao.criteria.DatasetCriteria datasetsForThatDatasetProfile = new eu.eudat.data.dao.criteria.DatasetCriteria();
|
||||||
|
datasetsForThatDatasetProfile.setProfileDatasetId(UUID.fromString(id));
|
||||||
|
if ((datasetDao.getWithCriteria(datasetsForThatDatasetProfile).toList()).size() == 0) {
|
||||||
|
eu.eudat.data.entities.DatasetProfile detasetProfile = datasetProfileRepository.find(UUID.fromString(id));
|
||||||
|
detasetProfile.setStatus(eu.eudat.data.entities.DatasetProfile.Status.DELETED.getValue());
|
||||||
|
detasetProfile = datasetProfileRepository.createOrUpdate(detasetProfile);
|
||||||
|
return detasetProfile;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,5 +81,4 @@ public class DatasetProfileManager {
|
||||||
jsonItems.forEach(item -> result.add(new Tuple<>(item.get(data.getAutoCompleteOptions().getValue()), item.get(data.getAutoCompleteOptions().getLabel()))));
|
jsonItems.forEach(item -> result.add(new Tuple<>(item.get(data.getAutoCompleteOptions().getValue()), item.get(data.getAutoCompleteOptions().getLabel()))));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,9 @@ export class DatasetProfileService {
|
||||||
clone(id: string): Observable<DatasetProfile> {
|
clone(id: string): Observable<DatasetProfile> {
|
||||||
return this.http.post<DatasetProfile>(this.actionUrl + 'datasetprofile/clone/' + id, {});
|
return this.http.post<DatasetProfile>(this.actionUrl + 'datasetprofile/clone/' + id, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete(id: string): Observable<DatasetProfile> {
|
||||||
|
return this.http.delete<DatasetProfile>(this.actionUrl + id, {});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,13 +20,15 @@ import { DatasetProfileEditorSectionComponent } from './editor/components/sectio
|
||||||
import { DatasetProfileEditorComponent } from './editor/dataset-profile-editor.component';
|
import { DatasetProfileEditorComponent } from './editor/dataset-profile-editor.component';
|
||||||
import { DatasetProfileCriteriaComponent } from './listing/criteria/dataset-profile.component';
|
import { DatasetProfileCriteriaComponent } from './listing/criteria/dataset-profile.component';
|
||||||
import { DatasetProfileListingComponent } from './listing/dataset-profile-listing.component';
|
import { DatasetProfileListingComponent } from './listing/dataset-profile-listing.component';
|
||||||
|
import { ConfirmationDialogModule } from '../../../library/confirmation-dialog/confirmation-dialog.module';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CommonUiModule,
|
CommonUiModule,
|
||||||
CommonFormsModule,
|
CommonFormsModule,
|
||||||
FormattingModule,
|
FormattingModule,
|
||||||
DatasetProfileRoutingModule
|
DatasetProfileRoutingModule,
|
||||||
|
ConfirmationDialogModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
DatasetProfileListingComponent,
|
DatasetProfileListingComponent,
|
||||||
|
|
|
@ -42,5 +42,15 @@
|
||||||
</div>
|
</div>
|
||||||
</mat-step> -->
|
</mat-step> -->
|
||||||
</mat-horizontal-stepper>
|
</mat-horizontal-stepper>
|
||||||
<button mat-raised-button color="primary" type="button" (click)='onSubmit()' [disabled]="!form.valid">Save</button>
|
<div class="row">
|
||||||
|
<!-- SAVE BUTTON -->
|
||||||
|
<button mat-raised-button color="primary" type="button col-auto" (click)='onSubmit()' [disabled]="!form.valid">Save</button>
|
||||||
|
<div class="col"></div>
|
||||||
|
<!-- DELETE BUTTON -->
|
||||||
|
<div class="col-auto" *ngIf="!isNew">
|
||||||
|
<button mat-raised-button (click)="delete()">
|
||||||
|
<mat-icon>delete</mat-icon>{{'DATASET-PROFILE-EDITOR.ACTIONS.DELETE' | translate}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,7 +1,7 @@
|
||||||
import { HttpErrorResponse } from '@angular/common/http';
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
||||||
import { MatHorizontalStepper } from '@angular/material';
|
import { MatHorizontalStepper, MatDialog } from '@angular/material';
|
||||||
import { ActivatedRoute, ParamMap, Router } from '@angular/router';
|
import { ActivatedRoute, ParamMap, Router } from '@angular/router';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { map, takeUntil } from 'rxjs/operators';
|
import { map, takeUntil } from 'rxjs/operators';
|
||||||
|
@ -14,6 +14,7 @@ import { SnackBarNotificationLevel, UiNotificationService } from '../../../../co
|
||||||
import { PageEditorModel } from '../admin/page-editor-model';
|
import { PageEditorModel } from '../admin/page-editor-model';
|
||||||
import { SectionEditorModel } from '../admin/section-editor-model';
|
import { SectionEditorModel } from '../admin/section-editor-model';
|
||||||
import { DatasetProfileEditorModel } from './dataset-profile-editor-model';
|
import { DatasetProfileEditorModel } from './dataset-profile-editor-model';
|
||||||
|
import { ConfirmationDialogComponent } from '../../../../library/confirmation-dialog/confirmation-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-dataset-profile-editor-component',
|
selector: 'app-dataset-profile-editor-component',
|
||||||
|
@ -31,13 +32,15 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
dataWizardModel: DatasetWizardModel;
|
dataWizardModel: DatasetWizardModel;
|
||||||
@ViewChild('stepper') stepper: MatHorizontalStepper;
|
@ViewChild('stepper') stepper: MatHorizontalStepper;
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private datasetProfileService: DatasetProfileService,
|
private datasetProfileService: DatasetProfileService,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private logger: LoggingService,
|
private logger: LoggingService,
|
||||||
private uiNotificationService: UiNotificationService,
|
private uiNotificationService: UiNotificationService,
|
||||||
private language: TranslateService
|
private language: TranslateService,
|
||||||
|
private dialog: MatDialog
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
// this.profileID = route.snapshot.params['id'];
|
// this.profileID = route.snapshot.params['id'];
|
||||||
|
@ -170,4 +173,34 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
this.uiNotificationService.snackBarNotification(errorResponse.message, SnackBarNotificationLevel.Warning);
|
this.uiNotificationService.snackBarNotification(errorResponse.message, SnackBarNotificationLevel.Warning);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// DELETE Function
|
||||||
|
public delete(): void {
|
||||||
|
if (this.datasetProfileId && !this.isNew) {
|
||||||
|
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
||||||
|
data: {
|
||||||
|
message: this.language.instant('GENERAL.CONFIRMATION-DIALOG.DELETE-ITEM'),
|
||||||
|
confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CONFIRM'),
|
||||||
|
cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||||
|
if (result) {
|
||||||
|
this.datasetProfileService.delete(this.datasetProfileId)
|
||||||
|
.pipe(takeUntil(this._destroyed))
|
||||||
|
.subscribe(
|
||||||
|
complete => {
|
||||||
|
this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-DATASET-PROFILE-DELETE'), SnackBarNotificationLevel.Success);
|
||||||
|
this.router.navigate(['/dataset-profiles']);
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
this.onCallbackError(error);
|
||||||
|
this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-DATASET-PROFILE-DELETE'), SnackBarNotificationLevel.Success);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
"SUCCESSFUL-LOGIN": "Successful Login",
|
"SUCCESSFUL-LOGIN": "Successful Login",
|
||||||
"SUCCESSFUL-LOGOUT": "Successful Logout",
|
"SUCCESSFUL-LOGOUT": "Successful Logout",
|
||||||
"UNSUCCESSFUL-LOGOUT": "Unsuccessful Logout",
|
"UNSUCCESSFUL-LOGOUT": "Unsuccessful Logout",
|
||||||
"UNSUCCESSFUL-LOGIN": "Unsuccessful Login"
|
"UNSUCCESSFUL-LOGIN": "Unsuccessful Login",
|
||||||
|
"SUCCESSFUL-DATASET-PROFILE-DELETE":"Successful Delete this Profile",
|
||||||
|
"UNSUCCESSFUL-DATASET-PROFILE-DELETE":"Unsuccessful This Profile can not Delete"
|
||||||
},
|
},
|
||||||
"ERRORS": {
|
"ERRORS": {
|
||||||
"HTTP-REQUEST-ERROR": "An Unexpected Error Has Occured"
|
"HTTP-REQUEST-ERROR": "An Unexpected Error Has Occured"
|
||||||
|
|
Loading…
Reference in New Issue