Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 96f76a16 authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

[EDELIVERY-13946] Set document version statuses to draft on review disabled

parent a2002feb
No related branches found
No related tags found
No related merge requests found
Pipeline #208137 failed
Showing
with 250 additions and 46 deletions
......@@ -6,6 +6,7 @@
@use 'app/window/sidenav/nav-tree/_nav-tree.component-theme' as nav-tree;
@use 'app/common/search-table/_search-table.component-theme' as search-table;
@use 'app/user-settings/user-access-tokens/access-token-panel/_access-token-panel.component-theme' as access-token-panel;
@use 'app/common/panels/expandable-panel-component/expandable-panel.component' as expandable-panel;
@mixin all-component-colors($theme) {
@include toolbar.set-component-colors($theme);
......@@ -13,7 +14,7 @@
@include nav-tree.set-component-colors($theme);
@include search-table.set-component-colors($theme);
@include access-token-panel.set-component-colors($theme);
@include expandable-panel.set-component-colors($theme);
/* shared classes*/
.smp-data-panel:hover {
background-color: smp.get-theme-color($theme, primary, 300);
......
......@@ -2,7 +2,10 @@
@use 'sass:map';
@use '@angular/material' as mat;
@function get-theme-type($smp-theme ) {
$color-config: mat.get-color-config($smp-theme);
@return map.get($color-config, type);
}
@function get-theme-color($smp-theme, $color: primary, $hue: null, $opacity: null ) {
$color-config: mat.get-color-config($smp-theme);
......
import {SearchTableEntity} from "../search-table/search-table-entity.model";
import {DocumentVersionsStatus} from "../enums/document-versions-status.enum";
export interface DocumentVersionEventRo extends SearchTableEntity {
eventType: string;
......@@ -6,5 +7,6 @@ export interface DocumentVersionEventRo extends SearchTableEntity {
username: string;
eventSourceType: string;
details: string;
documentVersionStatus?: DocumentVersionsStatus;
}
......@@ -23,6 +23,12 @@
</th>
<td mat-cell *matCellDef="let row">{{ row.eventType }}</td>
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef
mat-sort-header>{{ "document.events.panel.label.status" | translate }}
</th>
<td mat-cell *matCellDef="let row">{{ row.documentVersionStatus }}</td>
</ng-container>
<ng-container matColumnDef="username">
<th mat-header-cell *matHeaderCellDef
......
......@@ -62,7 +62,7 @@ import {GlobalLookups} from "../../global-lookups";
export class DocumentEventsPanelComponent implements AfterViewInit, BeforeLeaveGuard, ControlValueAccessor {
displayedColumns: string[] = ['date', 'eventType', 'username', 'eventSource'];
displayedColumns: string[] = ['date', 'eventType', 'status','username', 'eventSource'];
private onChangeCallback: (_: any) => void = () => {
};
eventDataSource: MatTableDataSource<DocumentVersionEventRo> = new MatTableDataSource();
......@@ -109,6 +109,7 @@ export class DocumentEventsPanelComponent implements AfterViewInit, BeforeLeaveG
this.eventDataSource.filterPredicate = (data: DocumentVersionEventRo, filter: string) => {
return data.eventType?.toLowerCase().includes(filter)
|| data.username?.toLowerCase().includes(filter)
|| data.documentVersionStatus?.toLowerCase().includes(filter)
|| data.eventSourceType?.toLowerCase().includes(filter)
|| data.eventOn?.toLocaleString().toLowerCase().includes(filter);
};
......
......@@ -3,8 +3,8 @@
<ng-content></ng-content>
</div>
<!-- table Toolbar -->
<div style="width: 42px">
<button mat-mini-fab
<div style="width: 32px">
<button class="button-deselected"
attr.aria-label="{{ 'expandable.panel.label.expand.collapse' | translate }}"
matTooltip="{{ 'document.properties.panel.tooltip.expand.collapse' | translate }}"
(click)="onToggleExpandButtonClicked()">
......
@use '../../../../_smp-theme-helper' as smp;
@mixin set-component-colors($theme) {
.button-selected {
padding: 3px 3px !important;
border-radius: 15%;
background-color: smp.get-theme-color($theme, primary, 500) !important;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2), 0 1px 2px 0 rgba(0,0,0,0.2);
color: smp.get-theme-color($theme, primary, 500-contrast) !important;
border-style: none;
}
.button-deselected :hover {
background-color: smp.get-theme-color($theme, primary, 800, 0.5) !important;
color: smp.get-theme-color($theme, primary, 500-contrast) !important;
}
.button-deselected {
padding: 1px 3px !important;
border-radius: 15%;
background: transparent;
color: smp.get-theme-color($theme, primary, 500-contrast) !important;
border-style: none;
}
}
#expand-panel_id {
display: flex;
flex-direction: column;
......@@ -12,9 +40,5 @@
writing-mode: vertical-rl;
}
.button-deselected {
margin: 1px 3px !important;
background: transparent;
border-style: none;
}
......@@ -77,7 +77,7 @@ export class ExpandablePanelComponent implements AfterViewInit {
}
getButtonClass(index: number) {
return index === this.selectedIndex ? 'mat-raised-button' : 'mat-raised-button button-deselected';
return index === this.selectedIndex ? 'button-selected' : 'button-deselected';
}
onDoubleClick(item: ExpandableItemComponent, index: number) {
......
......@@ -4,7 +4,9 @@ import {MatPaginator, PageEvent} from "@angular/material/paginator";
import {DomainRo} from "../../common/model/domain-ro.model";
import {GroupRo} from "../../common/model/group-ro.model";
import {MemberTypeEnum} from "../../common/enums/member-type.enum";
import {ResourceDefinitionRo} from "../../system-settings/admin-extension/resource-definition-ro.model";
import {
ResourceDefinitionRo
} from "../../system-settings/admin-extension/resource-definition-ro.model";
import {ResourceRo} from "../../common/model/resource-ro.model";
import {EditResourceController} from "./edit-resource.controller";
import {MatTableDataSource} from "@angular/material/table";
......@@ -24,7 +26,7 @@ export class EditResourceComponent implements OnInit, BeforeLeaveGuard {
@ViewChild("resourcePaginator") paginator: MatPaginator;
constructor(private editResourceController: EditResourceController) {
this.dataSource = editResourceController;
this.dataSource = editResourceController;
}
ngOnInit() {
......@@ -37,7 +39,8 @@ export class EditResourceComponent implements OnInit, BeforeLeaveGuard {
}
}
ngAfterViewInit():void {
ngAfterViewInit(): void {
// bind data to resource controller
this.dataSource.paginator = this.paginator;
}
......@@ -50,6 +53,7 @@ export class EditResourceComponent implements OnInit, BeforeLeaveGuard {
get hasResources(): boolean {
return this.editResourceController.data?.length > 0;
}
get domainList(): DomainRo[] {
return this.editResourceController.domainList;
};
......
......@@ -13,6 +13,7 @@ import {
AlertMessageService
} from "../../common/alert-message/alert-message.service";
import {MatTableDataSource} from "@angular/material/table";
import {SecurityEventService} from "../../security/security-event.service";
/**
* The purpose of the EditResourceController is to control the data of edit resource components when navigating
......@@ -43,8 +44,30 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
private groupService: EditGroupService,
private resourceService: EditResourceService,
private alertService: AlertMessageService,
private securityEventService: SecurityEventService
) {
super();
this.securityEventService.onLogoutSuccessEvent().subscribe(value => {
this.clearSelectedData();
});
this.securityEventService.onLoginSuccessEvent().subscribe(value => {
this.clearSelectedData();
});
}
private clearSelectedData() {
this.domainList = [];
this.groupList = [];
this._selectedDomain = null;
this._selectedGroup = null;
this._selectedResource = null;
this._selectedDomainResourceDefs = [];
this.pageIndex = 0;
this.pageSize = 10;
this.resourcesFilter = {};
this.isLoadingResults = false;
super.data = [];
}
get selectedDomain(): DomainRo {
......
<div id="edit-resource-panel" class="mat-elevation-z2">
<mat-toolbar class="mat-elevation-z2">
<mat-toolbar-row class="smp-toolbar-row">
<button id="showResource" mat-raised-button
color="primary"
matTooltip="{{ 'resource.details.panel.tooltip.show.resource' | translate }}"
......@@ -41,10 +40,15 @@
>
</mat-form-field>
<mat-checkbox formControlName="reviewEnabled"
(click)="onReviewEnabledChanged($event)"
matTooltip="{{ 'resource.details.panel.label.resource.review.enabled' | translate }}"
id="reviewEnabled_id">
{{ "resource.details.panel.tooltip.resource.review.enabled" | translate }}
</mat-checkbox>
<smp-warning-panel *ngIf="showReviewEnabledHint"
type="warning"
icon="warning"
label="{{ 'resource.details.panel.review.disabled.confirmation.dialog.description' | translate }}"></smp-warning-panel>
<mat-form-field style="width:100%">
<mat-label>{{ "resource.details.panel.label.resource.visibility" | translate }}</mat-label>
<select matNativeControl formControlName="visibility"
......@@ -76,5 +80,4 @@
[label]="visibilityDescription"
></smp-warning-panel>
</form>
</div>
......@@ -25,6 +25,9 @@ import {
WindowSpinnerService
} from "../../../common/services/window-spinner.service";
import {EditResourceController} from "../edit-resource.controller";
import {
ConfirmationDialogComponent
} from "../../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
@Component({
......@@ -173,4 +176,30 @@ export class ResourceDetailsPanelComponent implements BeforeLeaveGuard {
public onResetButtonClicked() {
this.resourceForm.reset(this._resource);
}
async onReviewEnabledChanged(event: any) {
let newReviewEnabled: boolean = event.target.checked;
let showWarning: boolean = this._resource?.reviewEnabled && !newReviewEnabled;
if (showWarning) {
this.dialog.open(ConfirmationDialogComponent, {
data: {
title: await lastValueFrom(this.translateService.get("resource.details.panel.review.disabled.confirmation.dialog.title")),
description: await lastValueFrom(this.translateService.get("resource.details.panel.review.disabled.confirmation.dialog.description"))
}
}).afterClosed().subscribe(result => {
if (!result) {
// prevent default does not work in case of "async"
this.resourceForm.controls['reviewEnabled'].setValue(true);
this.resourceForm.controls['reviewEnabled'].markAsPristine();
}
});
}
}
get showReviewEnabledHint(): boolean {
return this._resource?.reviewEnabled === true
&& this.resourceForm.get('reviewEnabled').value !== true;
}
}
import {SearchTableController} from '../common/search-table/search-table-controller';
import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
import {
SearchTableController
} from '../common/search-table/search-table-controller';
import {MatDialog, MatDialogRef} from '@angular/material/dialog';
import {ResourceSearchRo} from './resource-search-ro.model';
import {of} from "rxjs/internal/observable/of";
import {SearchTableValidationResult} from "../common/search-table/search-table-validation-result.model";
import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
import {
SearchTableValidationResult
} from "../common/search-table/search-table-validation-result.model";
import {
SearchTableEntity
} from "../common/search-table/search-table-entity.model";
export class ResourceSearchController implements SearchTableController {
constructor(public dialog: MatDialog) { }
constructor(public dialog: MatDialog) {
}
public showDetails(row): MatDialogRef<any> {
return null;
......@@ -20,7 +29,8 @@ export class ResourceSearchController implements SearchTableController {
return null;
}
public delete(row: any) { }
public delete(row: any) {
}
newDialog(config): MatDialogRef<any> {
if (config && config.data && config.data.edit) {
......@@ -34,10 +44,11 @@ export class ResourceSearchController implements SearchTableController {
return null;
}
public dataSaved() {}
public dataSaved() {
}
validateDeleteOperation(rows: Array<SearchTableEntity>){
return of( this.newValidationResult(true) );
validateDeleteOperation(rows: Array<SearchTableEntity>) {
return of(this.newValidationResult(true));
}
public newValidationResult(result: boolean, message?: string): SearchTableValidationResult {
......@@ -54,7 +65,7 @@ export class ResourceSearchController implements SearchTableController {
isRecordChanged(oldModel, newModel): boolean {
for (var property in oldModel) {
const isEqual = this.isEqual(newModel[property],oldModel[property]);
const isEqual = this.isEqual(newModel[property], oldModel[property]);
if (!isEqual) {
return true; // Property has changed
}
......
......@@ -10,18 +10,27 @@ import {
} from '@angular/core';
import {ColumnPicker} from '../common/column-picker/column-picker.model';
import {MatDialog} from '@angular/material/dialog';
import {AlertMessageService} from '../common/alert-message/alert-message.service';
import {
AlertMessageService
} from '../common/alert-message/alert-message.service';
import {ResourceSearchController} from './resource-search-controller';
import {HttpClient} from '@angular/common/http';
import {SmpConstants} from "../smp.constants";
import {GlobalLookups} from "../common/global-lookups";
import {SearchTableComponent} from "../common/search-table/search-table.component";
import {
SearchTableComponent
} from "../common/search-table/search-table.component";
import {ResourceSearchRo} from "./resource-search-ro.model";
import {SubresourceSearchRo} from "./subresource-search-ro.model";
import {ResourceFilterOptionsService} from "../common/services/resource-filter-options.service";
import {ResourceFilterOptionsRo} from "../common/model/resource-filter-options-ro.model";
import {
ResourceFilterOptionsService
} from "../common/services/resource-filter-options.service";
import {
ResourceFilterOptionsRo
} from "../common/model/resource-filter-options-ro.model";
import {TranslateService} from "@ngx-translate/core";
import {lastValueFrom} from "rxjs";
import {SecurityEventService} from "../security/security-event.service";
@Component({
templateUrl: './resource-search.component.html',
......@@ -47,9 +56,14 @@ export class ResourceSearchComponent implements OnInit, AfterViewInit, AfterView
public dialog: MatDialog,
private changeDetector: ChangeDetectorRef,
private resourceFilterOptionsService: ResourceFilterOptionsService,
private translateService: TranslateService) {
private translateService: TranslateService,
private securityEventService: SecurityEventService) {
this.baseUrl = SmpConstants.REST_PUBLIC_SEARCH_RESOURCE;
this.securityEventService.onLogoutSuccessEvent().subscribe(value => {
// refresh the search table pn logout
this.searchTable.search();
});
}
ngOnInit() {
......@@ -64,6 +78,7 @@ export class ResourceSearchComponent implements OnInit, AfterViewInit, AfterView
this.alertService.exception(await lastValueFrom(this.translateService.get("resource.search.error.fetch.resource.metadata")), err);
}
});
}
async initColumns() {
......@@ -127,15 +142,15 @@ export class ResourceSearchComponent implements OnInit, AfterViewInit, AfterView
}
createResourceURL(row: ResourceSearchRo) {
return (!row?.domainCode? "" : row.domainCode+ '/')
+ (!row?.resourceDefUrlSegment?"" : row.resourceDefUrlSegment + '/')
+ encodeURIComponent((!row.participantScheme ? '' : row.participantScheme) + '::' + row.participantIdentifier);
return (!row?.domainCode ? "" : row.domainCode + '/')
+ (!row?.resourceDefUrlSegment ? "" : row.resourceDefUrlSegment + '/')
+ encodeURIComponent((!row.participantScheme ? '' : row.participantScheme) + '::' + row.participantIdentifier);
}
createServiceMetadataURL(row: ResourceSearchRo, rowSMD: SubresourceSearchRo) {
return this.createResourceURL(row)
+ '/' + rowSMD.subresourceDefUrlSegment + '/'
+ encodeURIComponent((!rowSMD.documentIdentifierScheme ? '' : rowSMD.documentIdentifierScheme) + '::' + rowSMD.documentIdentifier);
+ '/' + rowSMD.subresourceDefUrlSegment + '/'
+ encodeURIComponent((!rowSMD.documentIdentifierScheme ? '' : rowSMD.documentIdentifierScheme) + '::' + rowSMD.documentIdentifier);
}
details(row: any) {
......
......@@ -134,6 +134,7 @@
"document.events.panel.label.filter": "Filter",
"document.events.panel.label.date": "Date",
"document.events.panel.label.type": "Event type",
"document.events.panel.label.status": "Status",
"document.events.panel.label.username": "Username",
"document.events.panel.label.source": "Event Source",
"document.events.panel.label.no.properties.found": "No DocumentVersion events found",
......@@ -351,6 +352,8 @@
"resource.details.panel.title": "Resources",
"resource.details.panel.button.reset": "Reset",
"resource.details.panel.button.save": "Save",
"resource.details.panel.review.disabled.confirmation.dialog.title": "Review disabled?",
"resource.details.panel.review.disabled.confirmation.dialog.description": "All document versions with review statuses (UNDER_REVIEW, APPROVED, REJECTED) will be set to DRAFT\nDo you want to continue?",
"document.edit.panel.button.back": "Back",
"document.edit.panel.button.cancel": "Cancel",
"document.edit.panel.button.document.wizard": "Document wizard",
......
package eu.europa.ec.edelivery.smp.conversion;
import eu.europa.ec.edelivery.smp.data.model.DBDomain;
import eu.europa.ec.edelivery.smp.data.model.doc.DBDocumentVersionEvent;
import eu.europa.ec.edelivery.smp.data.ui.DocumentVersionEventRO;
import eu.europa.ec.edelivery.smp.logging.SMPLogger;
import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.lang.reflect.InvocationTargetException;
/**
* Converter for domain DAO entity {@link DBDomain} to
* enriched webservice object {@link eu.europa.ec.edelivery.smp.data.ui.DomainPublicRO}.
*
* @author Joze Rihtarsic
* @since 5.1
*/
@Component
public class DBDocumentVersionEventToDocumentVersionEventROConverter
implements Converter<DBDocumentVersionEvent, DocumentVersionEventRO> {
private static final SMPLogger LOG = SMPLoggerFactory.getLogger(DBDocumentVersionEventToDocumentVersionEventROConverter.class);
@Override
public DocumentVersionEventRO convert(DBDocumentVersionEvent source) {
if (source == null) {
return null;
}
DocumentVersionEventRO target = new DocumentVersionEventRO();
try {
BeanUtils.copyProperties(target, source);
target.setDocumentVersionStatus(source.getStatus());
} catch (IllegalAccessException | InvocationTargetException e) {
LOG.error("Error occurred while converting DBDomain", e);
return null;
}
return target;
}
}
......@@ -15,5 +15,6 @@ public enum DocumentVersionEventType {
RETIRE,
APPROVE,
REJECT,
ERROR
ERROR,
SETTINGS_CHANGE,
}
......@@ -20,6 +20,7 @@ package eu.europa.ec.edelivery.smp.data.model.doc;
import eu.europa.ec.edelivery.smp.data.dao.utils.ColumnDescription;
import eu.europa.ec.edelivery.smp.data.enums.DocumentVersionEventType;
import eu.europa.ec.edelivery.smp.data.enums.DocumentVersionStatusType;
import eu.europa.ec.edelivery.smp.data.enums.EventSourceType;
import eu.europa.ec.edelivery.smp.data.model.BaseEntity;
import eu.europa.ec.edelivery.smp.data.model.CommonColumnsLengths;
......@@ -61,6 +62,11 @@ public class DBDocumentVersionEvent extends BaseEntity {
@ColumnDescription(comment = "Document version event type")
private DocumentVersionEventType eventType = DocumentVersionEventType.CREATE;
@Enumerated(EnumType.STRING)
@Column(name = "EVENT_STATUS", nullable = false)
@ColumnDescription(comment = "Document version event type")
private DocumentVersionStatusType status = DocumentVersionStatusType.DRAFT;
@Column(name = "EVENT_ON")
@ColumnDescription(comment = "Date time of the event")
private OffsetDateTime eventOn;
......@@ -127,6 +133,14 @@ public class DBDocumentVersionEvent extends BaseEntity {
this.eventSourceType = eventSourceType;
}
public DocumentVersionStatusType getStatus() {
return status;
}
public void setStatus(DocumentVersionStatusType status) {
this.status = status;
}
public String getDetails() {
return details;
}
......
......@@ -2,6 +2,7 @@ package eu.europa.ec.edelivery.smp.data.ui;
import eu.europa.ec.edelivery.smp.data.enums.DocumentVersionEventType;
import eu.europa.ec.edelivery.smp.data.enums.DocumentVersionStatusType;
import eu.europa.ec.edelivery.smp.data.enums.EventSourceType;
import java.time.OffsetDateTime;
......@@ -18,6 +19,7 @@ public class DocumentVersionEventRO extends BaseRO {
private static final long serialVersionUID = 9008583888835630037L;
private DocumentVersionEventType eventType = DocumentVersionEventType.CREATE;
private DocumentVersionStatusType documentVersionStatus = DocumentVersionStatusType.DRAFT;
private OffsetDateTime eventOn;
private String username;
private EventSourceType eventSourceType = EventSourceType.OTHER;
......@@ -63,4 +65,13 @@ public class DocumentVersionEventRO extends BaseRO {
public void setDetails(String details) {
this.details = details;
}
public DocumentVersionStatusType getDocumentVersionStatus() {
return documentVersionStatus;
}
public void setDocumentVersionStatus(DocumentVersionStatusType status) {
this.documentVersionStatus = status;
}
}
......@@ -47,7 +47,9 @@ public class DocumentVersionService {
String details, boolean publish) {
DBDocumentVersion dbDocumentVersion = new DBDocumentVersion();
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.CREATE, eventSourceType, details);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.CREATE,
DocumentVersionStatusType.DRAFT,
eventSourceType, details);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.DRAFT);
if (publish) {
......@@ -65,7 +67,8 @@ public class DocumentVersionService {
* @param details details of the event
*/
public void retireDocumentVersion(DBDocumentVersion dbDocumentVersion, EventSourceType eventSourceType, String details) {
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.RETIRE, eventSourceType, details);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.RETIRE,
DocumentVersionStatusType.RETIRED, eventSourceType, details);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.RETIRED);
}
......@@ -73,13 +76,14 @@ public class DocumentVersionService {
/**
* Method sets document version status to published and adds Publish event to the document version list of events
*
* @param dbDocumentVersion document version to be published
* @param eventSourceType event source type
* @param dbDocumentVersion document version to be published
* @param eventSourceType event source type
* @param addFirstPublishEvent if true, the event will be added to fist place in the list of events (because the list is in reverse order it is
* necessary to add it to the first place when adding single event, but when adding multiple events, the order should be reversed)
*/
public void publishDocumentVersion(DBDocumentVersion dbDocumentVersion, EventSourceType eventSourceType, boolean addFirstPublishEvent) {
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.PUBLISH, eventSourceType, null);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.PUBLISH,
DocumentVersionStatusType.PUBLISHED, eventSourceType, null);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent, addFirstPublishEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.PUBLISHED);
}
......@@ -93,7 +97,8 @@ public class DocumentVersionService {
* @param message message to be sent to the resource administrators
*/
public void rejectDocumentVersion(DBDocumentVersion dbDocumentVersion, EventSourceType eventSourceType, String message) {
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.REJECT, eventSourceType, message);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.REJECT,
DocumentVersionStatusType.REJECTED, eventSourceType, message);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.REJECTED);
}
......@@ -107,7 +112,8 @@ public class DocumentVersionService {
* @param message message to be sent to the resource administrators
*/
public void approveDocumentVersion(DBDocumentVersion dbDocumentVersion, EventSourceType eventSourceType, String message) {
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.APPROVE, eventSourceType, message);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.APPROVE,
DocumentVersionStatusType.APPROVED, eventSourceType, message);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.APPROVED);
}
......@@ -120,7 +126,9 @@ public class DocumentVersionService {
* @param eventSourceType event source type
*/
public void requestReviewDocumentVersion(DBDocumentVersion dbDocumentVersion, EventSourceType eventSourceType) {
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.REQUEST_REVIEW, eventSourceType, null);
DBDocumentVersionEvent dbEvent = createDocumentVersionEvent(DocumentVersionEventType.REQUEST_REVIEW,
DocumentVersionStatusType.UNDER_REVIEW,
eventSourceType, null);
dbDocumentVersion.addNewDocumentVersionEvent(dbEvent);
dbDocumentVersion.setStatus(DocumentVersionStatusType.UNDER_REVIEW);
}
......@@ -135,6 +143,7 @@ public class DocumentVersionService {
* @return
*/
public DBDocumentVersionEvent createDocumentVersionEvent(DocumentVersionEventType eventType,
DocumentVersionStatusType statusType,
EventSourceType eventSourceType,
String details) {
......@@ -146,7 +155,7 @@ public class DocumentVersionService {
} else {
LOG.debug("User details not found for event creation ");
}
dbEvent.setStatus(statusType);
dbEvent.setEventOn(OffsetDateTime.now());
dbEvent.setEventType(eventType);
dbEvent.setEventSourceType(eventSourceType);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment