mv utils/dates.class.ts to utils/string-utils.class.ts -> put there utils for Dates,DOIs | check if keywords used in search are dois and then search by doi or keyword

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-portal/trunk@44797 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
argiro.kokogiannaki 2016-12-02 17:27:10 +00:00
parent 79940e6fb5
commit 70bd195043
19 changed files with 324 additions and 106 deletions

View File

@ -4,6 +4,7 @@ import { SearchDataciteService } from '../../services/searchDatacite.service';
import {SearchDatasetsService} from '../../services/searchDatasets.service';
import {ClaimResult} from '../../utils/entities/claimEntities.class';
import { ErrorCodes} from '../../utils/properties/openaireProperties';
import{DOI} from '../../utils/string-utils.class';
@Component({
@ -111,10 +112,12 @@ export class ClaimDatasetComponent {
private todayDate = '';
private nextDate = '';
private DOIs:string[] = [];
public search(term: string, size : number, page : number){
this.DOIs = DOI.getDOIsFromString(term);
this.searchDatacite(term,10,1);
this.searchOpenaire(term,10,1);
//TODO add openaire search
}
private searchDatacite (term: string, size : number, page : number) {
this.getDataciteResults(term,size,page);
@ -123,24 +126,44 @@ export class ClaimDatasetComponent {
}
private searchOpenaire (term: string, size : number, page : number) {
this._searchDatasetsService.searchDatasets('q='+term+'&op=and', null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
}
},
err => {
console.error(err.status);
this.openaireStatus = this.errorCodes.ERROR;
if(this.DOIs.length > 0 ){
this.openaireStatus = this.errorCodes.LOADING;
this._searchDatasetsService.searchDatasetsByDois(this.DOIs, null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
);
}
},
err => {
this.openaireStatus = this.errorCodes.ERROR;
console.error(err.status);
}
);
}else{
this._searchDatasetsService.searchDatasets('q="'+term+'"', null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
}
},
err => {
this.openaireStatus = this.errorCodes.ERROR;
console.error(err.status);
}
);
}
this.warningMessage = "";
this.infoMessage = "";
@ -156,8 +179,8 @@ export class ClaimDatasetComponent {
},
err => {
console.error(err);
this.dataciteStatus = this.errorCodes.ERROR;
console.error(err);
}
);

View File

@ -62,6 +62,7 @@
<div *ngIf="orcidStatus == errorCodes.LOADING" class="alert alert-info" role="alert">Loading...</div>
<div *ngIf="orcidStatus == errorCodes.ERROR" class="alert alert-warning" role="alert">An Error Occured</div>
<div *ngIf="orcidStatus == errorCodes.NOT_AVAILABLE" class="alert alert-danger" role="alert">Service not available</div>
<div *ngIf="orcidStatus == errorCodes.NONE" class = "alert alert-info " > No results found </div>
<div *ngIf="orcidResultsNum != null" class="panel-body">
<div class = "alert alert-warning " > Not the right author? Choose one of these:

View File

@ -6,7 +6,7 @@ import {SearchOrcidService} from '../../services/searchOrcid.service';
import {SearchPublicationsService} from '../../services/searchPublications.service';
import { ErrorCodes} from '../../utils/properties/openaireProperties';
import {ClaimResult} from '../../utils/entities/claimEntities.class';
import{DOI} from '../../utils/string-utils.class';
@Component({
selector: 'claim-publication',
@ -77,11 +77,12 @@ ngOnDestroy() {
todayDate = '';
nextDate = '';
private DOIs:string[] = [];
public search(term: string){
this.warningMessage = "";
this.infoMessage = "";
this.DOIs = DOI.getDOIsFromString(term);
this.getCrossrefResults(term, this.size,1);
this.searchOrcid(term);
this.searchOpenaire(term, this.size, 1);
@ -90,8 +91,8 @@ public search(term: string){
private getCrossrefResults (term: string, size : number, page : number) {
this.crossrefStatus = this.errorCodes.LOADING;
if(term.split(' ').length == 1 ){
this._searchCrossrefService.searchCrossrefByDOI(term).subscribe(
if( this.DOIs.length > 0 ){
this._searchCrossrefService.searchCrossrefByDOIs(this.DOIs).subscribe(
data => {
if(data != null) {
this.crossrefResults = data.items;
@ -164,30 +165,57 @@ private getCrossrefResults (term: string, size : number, page : number) {
}
}
private searchOpenaire(term: string, size : number, page : number) {
this.openaireStatus = this.errorCodes.LOADING;
this._searchPublicationsService.searchPublications('q='+term+'&op=and', null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
}else {
this.openaireStatus = this.errorCodes.ERROR;
}
},
err => {
console.error(err.status);
this.openaireStatus = this.errorCodes.ERROR;
}
);
if(this.DOIs.length > 0 ){
this.openaireStatus = this.errorCodes.LOADING;
this._searchPublicationsService.searchPublicationsByDois(this.DOIs, null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
}else {
this.openaireStatus = this.errorCodes.ERROR;
}
},
err => {
this.openaireStatus = this.errorCodes.ERROR;
console.error(err.status);
}
);
}else{
this.openaireStatus = this.errorCodes.LOADING;
this._searchPublicationsService.searchPublications('q="'+term+'"', null, page, size, []).subscribe(
data => {
if(data != null) {
this.openairePage=page;
this.openaireResultsNum = data[0];
this.openaireResults = data[1];
this.openaireStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireStatus = this.errorCodes.NONE;
}
}else {
this.openaireStatus = this.errorCodes.ERROR;
}
},
err => {
this.openaireStatus = this.errorCodes.ERROR;
console.error(err.status);
}
);
}
}
private searchOrcid (term: string) {
if(this.DOIs.length > 0){
this.orcidStatus = this.errorCodes.NONE;
return;
}
this.orcidStatus = this.errorCodes.LOADING;
this.authorIds = new Array<string>();
this.authorGivenNames = new Array<string>();
@ -236,8 +264,8 @@ private getCrossrefResults (term: string, size : number, page : number) {
if(err.status == 404){
this.getOrcidAuthors(term);
} else {
console.error(err.status);
this.orcidStatus = this.errorCodes.ERROR;
console.error(err.status);
}
}
@ -257,8 +285,8 @@ private getCrossrefResults (term: string, size : number, page : number) {
},
err => {
console.error(err.status);
this.orcidStatus = this.errorCodes.ERROR;
console.error(err.status);
}
);
}

View File

@ -2,7 +2,7 @@ import {Component, Input, Output, EventEmitter,ViewChild} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import {SearchCrossrefService} from '../../../services/searchCrossref.service';
import {ModalLoading} from '../../../utils/modal/loading.component';
import {Dates} from '../../../utils/dates.class';
import {Dates, DOI} from '../../../utils/string-utils.class';
@Component({
@ -100,18 +100,20 @@ export class BulkClaimComponent {
this.all++;
var id=this.removeDoubleQuotes(values[0]);
var accessMode = (values[1] != undefined) ? this.removeDoubleQuotes(values[1]):"OPEN";
accessMode = (this.validateAccessMode(accessMode)?accessMode:"OPEN");
var embargoDate =(values[2] != undefined) ? this.removeDoubleQuotes(values[2]):Dates.getDateToday();
embargoDate = (Dates.isValidDate(embargoDate)?embargoDate:Dates.getDateToday());
if(this.allIds.indexOf(id)>-1){
this.duplicate++;
this.duplicateIds.push(id);
}else{
this.allIds.push(id);
this.fetchResult(id,accessMode,embargoDate);
}
if(DOI.isValidDOI(id)){
var accessMode = (values[1] != undefined) ? this.removeDoubleQuotes(values[1]):"OPEN";
accessMode = (this.validateAccessMode(accessMode)?accessMode:"OPEN");
var embargoDate =(values[2] != undefined) ? this.removeDoubleQuotes(values[2]):Dates.getDateToday();
embargoDate = (Dates.isValidDate(embargoDate)?embargoDate:Dates.getDateToday());
if(this.allIds.indexOf(id)>-1){
this.duplicate++;
this.duplicateIds.push(id);
}else{
this.allIds.push(id);
this.fetchResult(id,accessMode,embargoDate);
}
}
}
}
@ -167,7 +169,7 @@ export class BulkClaimComponent {
}
fetchResult(id:string,accessMode:string,date:string){
this._searchCrossrefService.searchCrossrefByDOI(id).subscribe(
this._searchCrossrefService.searchCrossrefByDOIs([id]).subscribe(
data => {
var crossrefResult = data.items[0];

View File

@ -5,6 +5,7 @@ import { Filter, Value} from './searchHelperClasses.class';
import {SearchResult} from '../../utils/entities/searchResult';
import {SearchFields} from '../../utils/properties/searchFields';
import {SearchUtilsClass} from './searchUtils.class';
import {DOI} from '../../utils/string-utils.class';
@Component({
selector: 'search-page',
@ -125,9 +126,25 @@ export class SearchPageComponent {
}
var keyword = params['keyword'];
console.info("Type:" + this.type + "filters: "+allFqs);
var doiQuery =(keyword && keyword.length > 0 && keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ keyword+'"))':"";
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(keyword) + ")" + doiQuery + ")":this.quote(keyword);
return (keyword && keyword.length > 0?'q='+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:keyword)+"&op=and":'') + allFqs;
var doiQuery = "";
var keywordQuery = "";
if((keyword && keyword.length > 0)){
if((this.type == 'publication' ||this.type == 'dataset')){
var DOIs:string[] = DOI.getDOIsFromString(keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
doiQuery += "q=("+doisParams+")"
}
}else{
keywordQuery += "q=("+this.quote(keyword) +")"
}
}
return (doiQuery.length > 0 ? doiQuery:keywordQuery) + allFqs;
}
public getIndexQueryParametersFromUrl(params){
var parameters = "";
@ -157,12 +174,26 @@ export class SearchPageComponent {
}
var keyword = params['keyword'];
var doiQuery =(keyword && keyword.length > 0 && keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ keyword+'"))':"";
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(keyword) + ")" + doiQuery + ")":this.quote(keyword);
// parameters += (keyword && keyword.length > 0?' and '+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:keyword)+' ':'');
// allFqs += ;
var doiQuery = "";
var keywordQuery = "";
if((keyword && keyword.length > 0)){
if((this.type == 'publication' ||this.type == 'dataset')){
var DOIs:string[] = DOI.getDOIsFromString(keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
doiQuery += "q=("+doisParams+")"
}
}else{
keywordQuery += "q=("+this.quote(keyword) +")"
}
}
return (doiQuery.length > 0 ? doiQuery:keywordQuery) + allFqs;
return (keyword && keyword.length > 0?' and '+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:keyword)+' ':'')+allFqs;
}
/*
* Mark as check the new filters that are selected, when you get them from search
@ -227,64 +258,81 @@ export class SearchPageComponent {
*
*/
private createSearchQueryParameters(filters:Filter[]){
// var allLimits="";
var allFqs = "";
for (let filter of filters){
if(filter.countSelectedValues > 0){
// var filterLimits="";
var fq = "";
var count_selected=0;
var fieldId = this.indexIdsMap[filter.filterId];
for (let value of filter.values){
if(value.selected == true){
count_selected++;
// filterLimits+='&' + fieldId+ '='+ value.id+"&" + this.fieldIdsMap[fieldId].operator + "="+((count_selected == 1)?"and":filter.filterOperator);
fq+=(fq.length > 0 ? " " + filter.filterOperator + " ":"" ) + filter.filterId + " exact " + this.quote(value.id);
}
}
fq="&fq="+fq;
// allLimits += filterLimits;
allFqs += fq;
}
}
//TODO when final search is done- remove op=and from keyword
var doiQuery =(this.searchUtils.keyword.length > 0 && this.searchUtils.keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ this.searchUtils.keyword+'"))':"";
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(this.searchUtils.keyword) + ")" + doiQuery + ")":this.quote(this.searchUtils.keyword);
return (this.searchUtils.keyword.length > 0?'q='+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:this.searchUtils.keyword)+"&op=and":'')+allFqs;
var doiQuery = "";
var keywordQuery = "";
if((this.searchUtils.keyword && this.searchUtils.keyword.length > 0)){
if((this.type == 'publication' ||this.type == 'dataset')){
var DOIs:string[] = DOI.getDOIsFromString(this.searchUtils.keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
doiQuery += "q=("+doisParams+")"
}
}else{
keywordQuery += "q=("+this.quote(this.searchUtils.keyword) +")"
}
}
return (doiQuery.length > 0 ? doiQuery:keywordQuery) + allFqs;
}
private createIndexQueryParameters(filters:Filter[]){
//TODO
// var allLimits="";
var allFqs = "";
for (let filter of filters){
if(filter.countSelectedValues > 0){
// var filterLimits="";
var count_selected=0;
var fq = "";
var fieldId = this.indexIdsMap[filter.filterId];
for (let value of filter.values){
if(value.selected == true){
count_selected++;
// filterLimits+=((count_selected == 1)?" and (":" "+filter.filterOperator+" ") + filter.filterId+ '='+ value.id;
fq+=(fq.length > 0 ? " " + filter.filterOperator + " ":"" ) + filter.filterId + " exact " + this.quote(value.id);
fq+=(fq.length > 0 ? " " + filter.filterOperator + " ":"" ) + filter.filterId + " exact " + this.quote(value.id);
}
}
// filterLimits+=(filterLimits.length > 0 )?' ) ':'';
// allLimits += filterLimits;
if(count_selected > 0){
fq="&fq="+fq;
allFqs += fq;
}
}
}
// allLimits += (this.searchUtils.keyword && this.searchUtils.keyword.length > 0?' and '+this.searchUtils.keyword+' ':'');
var doiQuery =(this.searchUtils.keyword.length > 0 && this.searchUtils.keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ this.searchUtils.keyword+'"))':"";
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(this.searchUtils.keyword) + ")" + doiQuery + ")":this.quote(this.searchUtils.keyword);
return (this.searchUtils.keyword && this.searchUtils.keyword.length > 0?' and '+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:this.searchUtils.keyword)+' ':'')+allFqs;
var doiQuery = "";
var keywordQuery = "";
if((this.searchUtils.keyword && this.searchUtils.keyword.length > 0)){
if((this.type == 'publication' ||this.type == 'dataset')){
var DOIs:string[] = DOI.getDOIsFromString(this.searchUtils.keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
doiQuery += "q=("+doisParams+")"
}
}else{
keywordQuery += "q=("+this.quote(this.searchUtils.keyword) +")"
}
}
return (doiQuery.length > 0 ? doiQuery:keywordQuery) + allFqs;
}
//
private isFiltered(){
var filtered=false;
for (let filter of this.filters){

View File

@ -100,7 +100,7 @@ console.info("PAGE init = "+this.searchUtils.page);
public getNumForSearch(keyword: string) {
var parameters="datasources/count";
if(keyword != "") {
parameters += "?q="+keyword;
parameters += "?q="+'"'+keyword+'"';
}
this._searchDataprovidersService.numOfDataproviders(parameters).subscribe(
data => {
@ -210,7 +210,7 @@ public getResultsForDeposit(id:string, type:string, page: number, size: number)
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
parameters = "q="+'"' + keyword + '"';
}
this._getResults(parameters,refine,page,this.searchUtils.size);
}

View File

@ -9,6 +9,7 @@ import {OpenaireProperties, ErrorCodes} from '../../utils/properties/openairePro
import {SearchFields} from '../../utils/properties/searchFields';
import {SearchPageComponent } from '../searchUtils/searchPage.component';
import {SearchUtilsClass } from '../searchUtils/searchUtils.class';
import {DOI} from '../../utils/string-utils.class';
@Component({
selector: 'search-datasets',
@ -148,7 +149,17 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
var DOIs:string[] = DOI.getDOIsFromString(keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
parameters += "q=("+doisParams+")"
}else{
parameters = "q="+'"' + keyword + '"';
}
}
this._getResults(parameters,refine,page,size);
}

View File

@ -73,7 +73,7 @@ export class SearchOrganizationsComponent {
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
parameters = "q="+'"' + keyword + '"';
}
this._getResults(parameters,refine,page,this.searchUtils.size);
}

View File

@ -147,7 +147,7 @@ export class SearchPeopleComponent {
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
parameters = "q="+'"' + keyword + '"';
}
this._getResults(parameters,refine,page,this.searchUtils.size);
}

View File

@ -79,7 +79,7 @@ export class SearchProjectsComponent {
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
parameters = "q="+'"' + keyword + '"';
}
this._getResults(parameters,refine,page,this.searchUtils.size);
}

View File

@ -11,6 +11,7 @@ import {SearchFields} from '../../utils/properties/searchFields';
import {SearchPageComponent } from '../searchUtils/searchPage.component';
import {SearchUtilsClass} from '../searchUtils/searchUtils.class';
import {ExportCSVComponent} from '../../utils/exportCSV.component';
import {DOI} from '../../utils/string-utils.class';
@Component({
selector: 'search-publications',
@ -177,7 +178,17 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s
public getResults(keyword:string,refine:boolean, page: number, size: number){
var parameters = "";
if(keyword.length > 0){
parameters = "q=" + keyword + "&op=and";
var DOIs:string[] = DOI.getDOIsFromString(keyword);
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
parameters += "q=("+doisParams+")"
}else{
parameters = "q="+'"' + keyword + '"';
}
}
this._getResults(parameters,refine,page,size);
}

View File

@ -27,8 +27,18 @@ export class SearchCrossrefService {
//.catch(this.handleError);
}
searchCrossrefByDOI(doi: string):any {
let url = OpenaireProperties.getSearchCrossrefAPIURL()+'?filter=doi:'+doi;
searchCrossrefByDOIs(DOIs: string[]):any {
/*
$request ="http://api.crossref.org/works"."?filter=";
foreach($dois as $doi){
$request.="doi:".urlencode( trim($doi)).",";
}
*/
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?",":"")+'doi:'+DOIs[i];
}
let url = OpenaireProperties.getSearchCrossrefAPIURL()+'?filter='+doisParams;
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));
@ -36,7 +46,7 @@ export class SearchCrossrefService {
return this.http.get( url)
.map(request => <any> request.json().message)
.do(items => console.log("Crossref Results: total results = "+items['total-results']+" for doi = "+doi))
.do(items => console.log("Crossref Results: total results = "+items['total-results']+" for doi = "+doisParams))
.do(res => {
this._cache.set(key, res);
});

View File

@ -39,7 +39,34 @@ export class SearchDatasetsService {
this._cache.set(key, res);
});
}
searchDatasetsByDois (DOIs: string[], refineParams:string, page: number, size: number, refineFields:string[] ):any {
let link = OpenaireProperties.getSearchAPIURLLast()+"datasets";
let url = link+"?";
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
url += "q=("+doisParams+")"
}
if(refineParams!= null && refineParams != '' ) {
url += refineParams;
}
url += "&page="+ (page-1) +"&size="+size+"&format=json";
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));
}
return this.http.get(url)
.map(res => <any> res.json())
//.do(res => console.info(res))
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields)])
.do(res => {
this._cache.set(key, res);
});
}
advancedSearchDatasets (params: string, page: number, size: number ):any {
let url = OpenaireProperties.getSearchResourcesAPIURL();
var basicQuery = "(oaftype exact result) and (resulttypeid exact dataset) "
@ -225,7 +252,7 @@ export class SearchDatasetsService {
//OpenaireProperties.getSearchAPIURLLast()
//"http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"
let url = OpenaireProperties.getSearchAPIURLLast()+"datasets/count?q="+params+"&format=json";
let url = OpenaireProperties.getSearchAPIURLLast()+"datasets/count?q="+'"' + params + '"'+"&format=json";
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));

View File

@ -226,7 +226,7 @@ export class SearchOrganizationsService {
//OpenaireProperties.getSearchAPIURLLast()
//"http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"
let url = OpenaireProperties.getSearchAPIURLLast()+"organizations/count?q="+params+ "&format=json";
let url = OpenaireProperties.getSearchAPIURLLast()+"organizations/count?q="+'"' + params + '"'+ "&format=json";
let key = url;
if (this._cache.has(key)) {

View File

@ -109,7 +109,7 @@ export class SearchPeopleService {
//OpenaireProperties.getSearchAPIURLLast()
//"http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"
let url = OpenaireProperties.getSearchAPIURLLast()+"people/count?q="+params+ "&format=json";
let url = OpenaireProperties.getSearchAPIURLLast()+"people/count?q="+'"' + params + '"'+ "&format=json";
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));

View File

@ -225,7 +225,7 @@ export class SearchProjectsService {
//OpenaireProperties.getSearchAPIURLLast()
//"http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"
let url = OpenaireProperties.getSearchAPIURLLast()+"projects/count?q="+params+ "&format=json";
let url = OpenaireProperties.getSearchAPIURLLast()+"projects/count?q="+'"' + params + '"'+ "&format=json";
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));

View File

@ -15,7 +15,6 @@ export class SearchPublicationsService {
private sizeOfDescription: number = 497;
constructor(private http: Http, public _cache: CacheService) {}
searchPublications (params: string, refineParams:string, page: number, size: number, refineFields:string[] ):any {
let link = OpenaireProperties.getSearchAPIURLLast()+"publications";
@ -43,6 +42,38 @@ export class SearchPublicationsService {
});
}
searchPublicationsByDois (DOIs: string[], refineParams:string, page: number, size: number, refineFields:string[] ):any {
let link = OpenaireProperties.getSearchAPIURLLast()+"publications";
let url = link+"?"+"&format=json&";
var doisParams = "";
for(var i =0 ;i < DOIs.length; i++){
doisParams+=(doisParams.length > 0?" or ":"")+'((pidclassid exact doi) and (pid exact "'+ DOIs[i]+'"))';
}
if(doisParams.length > 0){
url += "q=("+doisParams+")"
}
if(refineParams!= null && refineParams != '' ) {
url += refineParams;
}
url += "&page="+(page-1)+"&size="+size;
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));
}
return this.http.get(url)
.map(res => <any> res.json())
//.do(res => console.info(res))
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields)])
.do(res => {
this._cache.set(key, res);
});
}
advancedSearchPublications (params: string, page: number, size: number ):any {
let url = OpenaireProperties.getSearchResourcesAPIURL();
var basicQuery = "(oaftype exact result) and (resulttypeid exact publication) ";
@ -340,7 +371,7 @@ export class SearchPublicationsService {
//OpenaireProperties.getSearchAPIURLLast()
//"http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"
let url = OpenaireProperties.getSearchAPIURLLast()+"publications/count?q="+params+ "&format=json";
let url = OpenaireProperties.getSearchAPIURLLast()+"publications/count?q="+ '"' + params + '"' +"&format=json";
let key = url;
if (this._cache.has(key)) {
return Observable.of(this._cache.get(key));

View File

@ -8,7 +8,7 @@ import {SearchPublicationsService} from '../services/searchPublications.service'
import {SearchDatasetsService} from '../services/searchDatasets.service';
import {ISVocabulariesService} from '../services/ISVocabularies.service';
import {Dates} from '../utils/dates.class';
import {Dates} from '../utils/string-utils.class';
@Component({
selector: 'test',
template: `
@ -17,7 +17,7 @@ import {Dates} from '../utils/dates.class';
<!--static-autocomplete [(list)]=lan [(filtered)] =filtered [(selected)] =selected [showSelected]=true placeHolderMessage = "Search for languages" title = "Languages:" [multipleSelections]=false ></static-autocomplete-->
<div>
<div style ="width:30%; height:250px;" >
<div>
Selected::
<span class="row-fluid show-grid auto-complete-choice" *ngFor="let item of selected" >

View File

@ -33,3 +33,29 @@ export class Dates {
}
}
export class DOI{
public static getDOIsFromString(str:string):string[]{
var DOIs:string[] = [];
var words:string[] = str.split(" ");
for(var i=0; i< words.length; i++){
if(DOI.isValidDOI(words[i]) && DOIs.indexOf(words[i]) == -1){
DOIs.push(words[i]);
}
}
return DOIs;
}
public static isValidDOI(str:string):boolean{
var exp1 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])\S)+)\b/g
var exp2 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])[[:graph:]])+)\b/g
if(str.match(exp1)!=null || str.match(exp2)!=null){
// console.log("It's a DOI");
return true;
}
return false;
}
}