This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 93cf2975 authored by Eduard Frankford's avatar Eduard Frankford
Browse files

achievements now working with email search

parent 2c6a1b1e
2 merge requests!62created achievementService and separated some functionality out of...,!45Achievements
...@@ -297,16 +297,53 @@ public class MetaDataRepository { ...@@ -297,16 +297,53 @@ public class MetaDataRepository {
SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_METADATA); SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_METADATA);
BoolQueryBuilder emailQuery = QueryBuilders.boolQuery(); BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder authorBuilder = QueryBuilders.boolQuery();
if (email != null)
authorBuilder.should(QueryBuilders
.multiMatchQuery(email,
SearchRepositoryConstants.METADATA_CREATOR_EMAIL, SearchRepositoryConstants.METADATA_CONTRIBUTOR_EMAIL,
SearchRepositoryConstants.METADATA_PUBLISHER_EMAIL)
.type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX));
if(authorBuilder.hasClauses())
queryBuilder.must(authorBuilder);
// Authorization restrictions
final MatchQueryBuilder publicQuery = QueryBuilders.matchQuery(SearchRepositoryConstants.PROJECT_VISIBILITY, "public")
.fuzzyTranspositions(false).autoGenerateSynonymsPhraseQuery(false).boost(0.0f);
if(user.isEmpty()) {
queryBuilder
.must(publicQuery);
} else {
final Collection<GrantedAuthority> authorities = user.get().getAuthorities();
final BoolQueryBuilder authQuery = QueryBuilders.boolQuery().boost(0.0f);
final Stream<QueryBuilder> prefixAuthQueries = authorities.stream()
.filter(auth -> !auth.getAuthority().startsWith("ROLE"))
.filter(auth -> !auth.getAuthority().startsWith("SCOPE"))
.map(auth -> QueryBuilders.prefixQuery(SearchRepositoryConstants.PROJECT_NAMESPACE, auth.getAuthority()));
prefixAuthQueries.forEach(pq -> authQuery.should(pq) );
if(authQuery.hasClauses())
queryBuilder.must(QueryBuilders.boolQuery().should(authQuery).should(publicQuery));
else
queryBuilder.must(publicQuery);
}
// SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_METADATA);
// BoolQueryBuilder emailQuery = QueryBuilders.boolQuery();
emailQuery // emailQuery
.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR_EMAIL, email)); // .must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR_EMAIL, email));
//addAuthorizationQuery(user, emailQuery); //addAuthorizationQuery(user, emailQuery);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(emailQuery).size(pageSize) sourceBuilder.query(queryBuilder).size(pageSize)
.from(0); .from(0);
searchRequest.source(sourceBuilder); searchRequest.source(sourceBuilder);
......
...@@ -24,7 +24,9 @@ public final class SearchRepositoryConstants { ...@@ -24,7 +24,9 @@ public final class SearchRepositoryConstants {
public static final String METADATA_CREATOR = "metadata.creator.name"; public static final String METADATA_CREATOR = "metadata.creator.name";
public static final String METADATA_CREATOR_EMAIL = "metadata.creator.email"; public static final String METADATA_CREATOR_EMAIL = "metadata.creator.email";
public static final String METADATA_CONTRIBUTOR = "metadata.contributor.name"; public static final String METADATA_CONTRIBUTOR = "metadata.contributor.name";
public static final String METADATA_CONTRIBUTOR_EMAIL = "metadata.contributor.email";
public static final String METADATA_PUBLISHER = "metadata.publisher.name"; public static final String METADATA_PUBLISHER = "metadata.publisher.name";
public static final String METADATA_PUBLISHER_EMAIL = "metadata.publisher.email";
public static final String METADATA_LICENSE = "metadata.license"; public static final String METADATA_LICENSE = "metadata.license";
public static final String METADATA_TYPE = "metadata.type"; public static final String METADATA_TYPE = "metadata.type";
......
...@@ -83,7 +83,7 @@ public class SearchResource { ...@@ -83,7 +83,7 @@ public class SearchResource {
SearchInputMetadataDTO metadata = new SearchInputMetadataDTO(); SearchInputMetadataDTO metadata = new SearchInputMetadataDTO();
metadata.setAuthor(login); metadata.setAuthor(login);
search.setMetadata(metadata); search.setMetadata(metadata);
SearchResultsDTO results = searchService.searchResultForAuthorEmail("Michael.Breu@uibk.ac.at", 1000); SearchResultsDTO results = searchService.searchResultForAuthorEmail("michael.breu@uibk.ac.at", 1000);
int totalAmountOfViews = 0; int totalAmountOfViews = 0;
int totalAmountOfDownloads = 0; int totalAmountOfDownloads = 0;
for (SearchResultDTO result : results.getSearchResult()) { for (SearchResultDTO result : results.getSearchResult()) {
......
<h2>Achievements</h2> <h2>Achievements</h2>
<ul class="list-group"> <ul class="list-group" *ngIf="statistics">
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 500 views More than 500 views
<span *ngIf="statistics.views <= 500" class="badge badge-primary badge-pill">{{statistics.views}}</span> <span *ngIf="statistics?.views <= 500" class="badge badge-primary badge-pill">{{statistics?.views}}</span>
<fa-icon icon="check" *ngIf="statistics.views > 500" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.views > 500" class="greeniconcolor"></fa-icon>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 100 views More than 100 views
<span *ngIf="statistics.views <= 100" class="badge badge-primary badge-pill">{{statistics.views}}</span> <span *ngIf="statistics?.views <= 100" class="badge badge-primary badge-pill">{{statistics?.views}}</span>
<fa-icon icon="check" *ngIf="statistics.views > 100" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.views > 100" class="greeniconcolor"></fa-icon>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 10 views More than 10 views
<span *ngIf="statistics.views <= 10" class="badge badge-primary badge-pill">{{statistics.views}}</span> <span *ngIf="statistics?.views <= 10" class="badge badge-primary badge-pill">{{statistics?.views}}</span>
<fa-icon icon="check" *ngIf="statistics.views > 10" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.views > 10" class="greeniconcolor"></fa-icon>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 500 downloads More than 500 downloads
<span *ngIf="statistics.downloads <= 500" class="badge badge-primary badge-pill">{{statistics.downloads}}</span> <span *ngIf="statistics?.downloads <= 500" class="badge badge-primary badge-pill">{{statistics?.downloads}}</span>
<fa-icon icon="check" *ngIf="statistics.downloads > 500" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.downloads > 500" class="greeniconcolor"></fa-icon>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 100 downloads More than 100 downloads
<span *ngIf="statistics.downloads <= 100" class="badge badge-primary badge-pill">{{statistics.downloads}}</span> <span *ngIf="statistics?.downloads <= 100" class="badge badge-primary badge-pill">{{statistics?.downloads}}</span>
<fa-icon icon="check" *ngIf="statistics.downloads > 100" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.downloads > 100" class="greeniconcolor"></fa-icon>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
More than 10 downloads More than 10 downloads
<span *ngIf="statistics.downloads <= 10" class="badge badge-primary badge-pill">{{statistics.downloads}}</span> <span *ngIf="statistics?.downloads <= 10" class="badge badge-primary badge-pill">{{statistics?.downloads}}</span>
<fa-icon icon="check" *ngIf="statistics.downloads > 10" class="greeniconcolor"></fa-icon> <fa-icon icon="check" *ngIf="statistics?.downloads > 10" class="greeniconcolor"></fa-icon>
</li> </li>
</ul> </ul>
......
...@@ -23,18 +23,21 @@ export class AchievementsComponent implements OnInit { ...@@ -23,18 +23,21 @@ export class AchievementsComponent implements OnInit {
console.log('I have been called'); console.log('I have been called');
this.searchService.getStatisticsForUser(this.account.firstName + ' ' + this.account.lastName).subscribe( this.searchService.getStatisticsForUser(this.account.firstName + ' ' + this.account.lastName).subscribe(
(data: Statistics) => { (data: Statistics) => {
this.statistics = data; if (data) {
// eslint-disable-next-line no-console this.statistics = data;
console.log(
'Data: Number of Downloads: ' + // eslint-disable-next-line no-console
data.downloads + console.log(
' Number of views: ' + 'Data: Number of Downloads: ' +
data.views + data.downloads +
' for account ' + ' Number of views: ' +
this.account.firstName + data.views +
' ' + ' for account ' +
this.account.lastName this.account.firstName +
); ' ' +
this.account.lastName
);
}
}, },
() => alert('Could not load statistics for User') () => alert('Could not load statistics for User')
); );
......
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