Skip to content
Snippets Groups Projects
Unverified Commit c49ee13b authored by clmntsl's avatar clmntsl Committed by GitHub
Browse files

Merge pull request #339 from ProgrammeVitam/vas_bug_8316_ingest_search

[VAS] Bug : 8316, 7711 fixe ingest search issue
parents a6ffe6d4 7dd772d6
No related branches found
No related tags found
1 merge request!51Merge mis a jour vitam-ui
......@@ -59,6 +59,7 @@ import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lt;
import static fr.gouv.vitam.common.database.builder.query.QueryHelper.or;
public class VitamQueryHelper {
private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(VitamQueryHelper.class);
/* Operation types */
......@@ -67,15 +68,15 @@ public class VitamQueryHelper {
/* Query fields */
private static final String ID = "#id";
private static final String OB_ID_IN = "obIdIn";
private static final String TRANSFERRING_AGENCY = "agIdExt.TransferringAgency";
private static final String ORIGINATING_AGENCY = "agIdExt.originatingAgency";
private static final String ARCHIVAL_AGENCY = "agIdExt.ArchivalAgreement";
private static final String TRANSFERRING_AGENCY = "events.agIdExt.TransferringAgency";
private static final String ORIGINATING_AGENCY = "events.agIdExt.originatingAgency";
private static final String ARCHIVAL_AGENCY = "events.evDetData.ArchivalAgreement";
private static final String EV_TYPE_PROC = "evTypeProc";
private static final String STATUS = "Status";
private static final String EV_TYPE = "evType";
private static final String EV_DATE_TIME_START = "evDateTime_Start";
private static final String EV_DATE_TIME_END = "evDateTime_End";
private static final String COMMENT = "evDetData.EvDetailReq";
private static final String COMMENT = "events.evDetData.EvDetailReq";
/**
* create a valid VITAM DSL Query from a map of criteria
......@@ -86,8 +87,8 @@ public class VitamQueryHelper {
* @throws InvalidCreateOperationException
*/
public static JsonNode createQueryDSL(Map<String, Object> searchCriteriaMap, final Integer pageNumber,
final Integer size,
final Optional<String> orderBy, final Optional<DirectionDto> direction)
final Integer size,
final Optional<String> orderBy, final Optional<DirectionDto> direction)
throws InvalidParseOperationException, InvalidCreateOperationException {
final Select select = new Select();
......@@ -117,21 +118,22 @@ public class VitamQueryHelper {
final String searchKey = entry.getKey();
switch (searchKey) {
case ID:
case EV_TYPE_PROC:
// string equals operation
final String stringValue = (String) entry.getValue();
queryOr.add(eq(searchKey, stringValue));
haveOrParameters = true;
query.add(eq(searchKey, stringValue));
break;
case OB_ID_IN:
case TRANSFERRING_AGENCY:
case ORIGINATING_AGENCY:
case ARCHIVAL_AGENCY:
case ORIGINATING_AGENCY:
case ID:
case COMMENT:
final String value = (String) entry.getValue();
orGroup.add(eq(searchKey, value));
haveOrGroup = true;
final String searchValue = (String) entry.getValue();
queryOr.add(eq(searchKey, searchValue));
haveOrParameters = true;
break;
case EV_TYPE:
// Special case EvType can be String or String[]
......
......@@ -69,10 +69,8 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
/**
* Ingest Internal service communication with VITAM.
......
......@@ -38,7 +38,6 @@ import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angu
import { merge, Subject } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
import { DEFAULT_PAGE_SIZE, Direction, InfiniteScrollTable, PageRequest } from 'ui-frontend-common';
import { IngestService } from '../ingest.service';
const FILTER_DEBOUNCE_TIME_MS = 400;
......@@ -51,16 +50,15 @@ export class IngestFilters {
@Component({
selector: 'app-ingest-list',
templateUrl: './ingest-list.component.html',
styleUrls: ['./ingest-list.component.scss']
styleUrls: ['./ingest-list.component.scss'],
})
export class IngestListComponent extends InfiniteScrollTable<any> implements OnDestroy, OnInit {
// tslint:disable-next-line:no-input-rename
@Input('search')
set searchText(searchText: string) {
this._searchText = searchText;
this.searchChange.next(searchText);
}
// tslint:disable-next-line:variable-name
// tslint:disable-next-line: variable-name
private _searchText: string;
@Input('filters')
......@@ -68,7 +66,7 @@ export class IngestListComponent extends InfiniteScrollTable<any> implements OnD
this._filters = filters;
this.filterChange.next(filters);
}
// tslint:disable-next-line:variable-name
// tslint:disable-next-line: variable-name
private _filters: IngestFilters;
@Output() ingestClick = new EventEmitter<any>();
......@@ -87,26 +85,26 @@ export class IngestListComponent extends InfiniteScrollTable<any> implements OnD
}
ngOnInit() {
this.ingestService.search(
new PageRequest(0, DEFAULT_PAGE_SIZE, this.orderBy, Direction.DESCENDANT,
JSON.stringify(this.buildIngestCriteriaFromSearch()))
).subscribe((data: any[]) => {
data.map((element: any) => {
if (element.evDetData && element.evDetData.length >= 2) {
element.evDetData = JSON.parse(element.evDetData);
}
if (element.agIdExt && element.agIdExt.length >= 2) {
element.agIdExt = JSON.parse(element.agIdExt);
}
if (element.rightsStatementIdentifier && element.rightsStatementIdentifier.length >= 2) {
element.rightsStatementIdentifier = JSON.parse(element.rightsStatementIdentifier);
}
this.ingestService
.search(
new PageRequest(0, DEFAULT_PAGE_SIZE, this.orderBy, Direction.DESCENDANT, JSON.stringify(this.buildIngestCriteriaFromSearch()))
)
.subscribe((data: any[]) => {
data.map((element: any) => {
if (element.evDetData && element.evDetData.length >= 2) {
element.evDetData = JSON.parse(element.evDetData);
}
if (element.agIdExt && element.agIdExt.length >= 2) {
element.agIdExt = JSON.parse(element.agIdExt);
}
if (element.rightsStatementIdentifier && element.rightsStatementIdentifier.length >= 2) {
element.rightsStatementIdentifier = JSON.parse(element.rightsStatementIdentifier);
}
});
this.dataSource = data;
});
this.dataSource = data;
});
const searchCriteriaChange = merge(this.searchChange, this.filterChange, this.orderChange)
.pipe(debounceTime(FILTER_DEBOUNCE_TIME_MS));
const searchCriteriaChange = merge(this.searchChange, this.filterChange, this.orderChange).pipe(debounceTime(FILTER_DEBOUNCE_TIME_MS));
searchCriteriaChange.subscribe(() => {
const query: any = this.buildIngestCriteriaFromSearch();
......@@ -121,10 +119,10 @@ export class IngestListComponent extends InfiniteScrollTable<any> implements OnD
if (this._searchText !== undefined && this._searchText.length > 0) {
criteria['#id'] = this._searchText;
criteria.obIdIn = this._searchText;
criteria['agIdExt.TransferringAgency'] = this._searchText;
criteria['agIdExt.originatingAgency'] = this._searchText;
criteria['agIdExt.ArchivalAgreement'] = this._searchText;
criteria['evDetData.EvDetailReq'] = this._searchText;
criteria['events.agIdExt.TransferringAgency'] = this._searchText;
criteria['events.agIdExt.originatingAgency'] = this._searchText;
criteria['events.evDetData.ArchivalAgreement'] = this._searchText;
criteria['events.evDetData.EvDetailReq'] = this._searchText;
}
if (this._filters) {
......@@ -169,12 +167,13 @@ export class IngestListComponent extends InfiniteScrollTable<any> implements OnD
if (this.getOperationStatus(ingest) === 'En cours') {
return 'En cours';
} else {
return (ingest.events !== undefined && ingest.events.length !== 0) ?
ingest.events[ingest.events.length - 1].outcome : ingest.outcome;
return ingest.events !== undefined && ingest.events.length !== 0 ? ingest.events[ingest.events.length - 1].outcome : ingest.outcome;
}
}
ingestEndDate(ingest: any): string {
return (ingest.events !== undefined && ingest.events.length !== 0) ? ingest.events[ingest.events.length - 1].evDateTime : ingest.evDateTime;
return ingest.events !== undefined && ingest.events.length !== 0
? ingest.events[ingest.events.length - 1].evDateTime
: ingest.evDateTime;
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment