Project

General

Profile

1

    
2
import {SearchPublicationsService} from '../../services/searchPublications.service';
3
import {ErrorCodes} from '../../utils/properties/openaireProperties';
4
import {SearchFields} from '../../utils/properties/searchFields';
5
 import {SearchUtilsClass } from '../../searchPages/searchUtils/searchUtils.class';
6
import {DOI} from '../../utils/string-utils.class';
7

    
8

    
9
export class FetchPublications {
10
  public results =[];
11
  // public filters =[];
12
  public searchUtils:SearchUtilsClass = new SearchUtilsClass();
13
  // public baseUrl:string = "";
14
  public sub: any;
15
  public subResults: any;
16
  public searchFields:SearchFields = new SearchFields();
17
  // public refineFields: string[] =  this.searchFields.RESULT_REFINE_FIELDS;
18
  // public fieldIdsMap=this.searchFields.RESULT_FIELDS;
19
    //:  { [key:string] :{ name:string, operator:string, type:string, indexField:string, equalityOperator:string  }} = this.searchFields.PUBLICATION_FIELDS_MAP;
20

    
21
  public CSV: any = {  "columnNames":  ["Title", "Authors", "Publication Year", "DOI",
22
                                       /*"Download From", "Publication type", "Journal",*/
23
                                       "Funder", "Project Name (GA Number)", "Access"],
24
                      "export":[]
25
                  };
26
  public CSVDownloaded = false;
27
  public csvParams: string;
28

    
29
  constructor ( private _searchPublicationsService: SearchPublicationsService ) {
30
    var errorCodes:ErrorCodes = new ErrorCodes();
31
    this.searchUtils.status =errorCodes.LOADING;
32
    // this.baseUrl = OpenaireProperties.getLinkToSearchPublications();
33

    
34
  }
35

    
36

    
37
  public ngOnDestroy() {
38
    if(this.sub){
39
      this.sub.unsubscribe();
40
    }
41
    if(this.subResults){
42
      this.subResults.unsubscribe();
43
    }
44
  }
45

    
46
  public getResultsByKeyword(keyword:string,  page: number, size: number){
47
    var parameters = "";
48
    if(keyword.length > 0){
49
      var DOIs:string[] = DOI.getDOIsFromString(keyword);
50
      var doisParams = "";
51

    
52
      for(var i =0 ;i < DOIs.length; i++){
53
        doisParams+=(doisParams.length > 0?"&":"")+'doi="'+ DOIs[i]+'"';
54
      }
55
      if(doisParams.length > 0){
56
        parameters +=  "&"+doisParams;
57
      }else{
58
        parameters = "q=" + keyword;
59
      }
60
    }
61

    
62

    
63
    var errorCodes:ErrorCodes = new ErrorCodes();
64
    this.searchUtils.status = errorCodes.LOADING;
65

    
66
    this.subResults = this._searchPublicationsService.searchPublications(parameters,null, page, size, []).subscribe(
67
        data => {
68
            this.searchUtils.totalResults = data[0];
69
            console.info("search Publications: [Parameters:"+parameters+" ]  [total results:"+this.searchUtils.totalResults+"]");
70
            this.results = data[1];
71

    
72
            var errorCodes:ErrorCodes = new ErrorCodes();
73
            this.searchUtils.status = errorCodes.DONE;
74
            if(this.searchUtils.totalResults == 0 ){
75
              this.searchUtils.status = errorCodes.NONE;
76
            }
77
         },
78
        err => {
79
            console.log(err);
80
             //TODO check erros (service not available, bad request)
81
            // if( ){
82
            //   this.searchUtils.status = ErrorCodes.ERROR;
83
            // }
84
            var errorCodes:ErrorCodes = new ErrorCodes();
85
            this.searchUtils.status = errorCodes.ERROR;
86

    
87
        }
88
    );
89
  }
90

    
91
public getResultsForEntity(entity:string, id:string, page: number, size: number){
92
    var errorCodes:ErrorCodes = new ErrorCodes();
93
    this.searchUtils.status = errorCodes.LOADING;
94

    
95
  var parameters = "";
96
  if(entity == "project") {
97
    parameters = "projects/"+id;
98
  } else if(entity == "person") {
99
    parameters = "people/"+id;
100
  }
101

    
102
  if(parameters != "") {
103
      this._searchPublicationsService.searchPublicationsForEntity(parameters, page, size).subscribe(
104
          data => {
105
              this.searchUtils.totalResults = data[0];
106

    
107
              console.info("search Publications for "+entity+": [Parameters:"+parameters+" ]  [total results:"+this.searchUtils.totalResults+"]");
108
              this.results = data[1];
109

    
110
              var errorCodes:ErrorCodes = new ErrorCodes();
111
              this.searchUtils.status = errorCodes.DONE;
112
              if(this.searchUtils.totalResults == 0 ){
113
                this.searchUtils.status = errorCodes.NONE;
114
              }
115
          },
116
          err => {
117
              console.log(err);
118
               //TODO check erros (service not available, bad request)
119
              // if( ){
120
              //   this.searchUtils.status = ErrorCodes.ERROR;
121
              // }
122
              var errorCodes:ErrorCodes = new ErrorCodes();
123
              this.searchUtils.status = errorCodes.ERROR;
124
          }
125
      );
126
  }
127
}
128

    
129
public getResultsForDataproviders(id:string, resultsFrom:string, page: number, size: number){
130
    var errorCodes:ErrorCodes = new ErrorCodes();
131
    this.searchUtils.status = errorCodes.LOADING;
132

    
133
  var parameters;
134
  if(resultsFrom == "collectedFrom") {
135
      parameters = "publications?fq=collectedfromdatasourceid exact "+'"'+id+'"';
136
  } else if(resultsFrom == "hostedBy") {
137
      parameters = "publications?fq=resulthostingdatasourceid exact "+'"'+id+'"';
138
  }
139

    
140
  if(parameters != "") {
141

    
142
      this._searchPublicationsService.searchPublicationsForDataproviders(parameters, page, size).subscribe(
143
          data => {
144
              this.searchUtils.totalResults = data[0];
145
              console.info("search Publications for Dataproviders: [Parameters:"+parameters+" ]  [total results:"+this.searchUtils.totalResults+"]");
146
              this.results = data[1];
147

    
148
              var errorCodes:ErrorCodes = new ErrorCodes();
149
              this.searchUtils.status = errorCodes.DONE;
150
              if(this.searchUtils.totalResults == 0 ){
151
                this.searchUtils.status = errorCodes.NONE;
152
              }
153
          },
154
          err => {
155
              console.log(err);
156
               //TODO check erros (service not available, bad request)
157
              // if( ){
158
              //   this.searchUtils.status = ErrorCodes.ERROR;
159
              // }
160
              var errorCodes:ErrorCodes = new ErrorCodes();
161
              this.searchUtils.status = errorCodes.ERROR;
162
          }
163
      );
164
  }
165
}
166

    
167
public getAggregatorResults(id:string, page: number, size: number){
168
    var errorCodes:ErrorCodes = new ErrorCodes();
169
    this.searchUtils.status = errorCodes.LOADING;
170
    
171
  this.subResults = this._searchPublicationsService.searchAggregators(id, '&fq=collectedfromdatasourceid exact "'+id+'"',"&refine=true&fields=resulthostingdatasource" , page, size).subscribe(
172
      data => {
173
          this.results = data;
174

    
175
          var errorCodes:ErrorCodes = new ErrorCodes();
176
          this.searchUtils.status = errorCodes.DONE;
177
          if(this.searchUtils.totalResults == 0 ){
178
            this.searchUtils.status = errorCodes.NONE;
179
          }
180
      },
181
      err => {
182
          console.log(err);
183
           //TODO check erros (service not available, bad request)
184
          // if( ){
185
          //   this.searchUtils.status = ErrorCodes.ERROR;
186
          // }
187
          var errorCodes:ErrorCodes = new ErrorCodes();
188
          this.searchUtils.status = errorCodes.ERROR;
189
      }
190
  );
191
}
192

    
193

    
194
}
(6-6/6)