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 {
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
.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR_EMAIL, email));
// emailQuery
// .must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR_EMAIL, email));
//addAuthorizationQuery(user, emailQuery);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(emailQuery).size(pageSize)
sourceBuilder.query(queryBuilder).size(pageSize)
.from(0);
searchRequest.source(sourceBuilder);
......
......@@ -24,7 +24,9 @@ public final class SearchRepositoryConstants {
public static final String METADATA_CREATOR = "metadata.creator.name";
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_EMAIL = "metadata.contributor.email";
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_TYPE = "metadata.type";
......
......@@ -83,7 +83,7 @@ public class SearchResource {
SearchInputMetadataDTO metadata = new SearchInputMetadataDTO();
metadata.setAuthor(login);
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 totalAmountOfDownloads = 0;
for (SearchResultDTO result : results.getSearchResult()) {
......
<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">
More than 500 views
<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>
<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>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
More than 100 views
<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>
<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>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
More than 10 views
<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>
<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>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
More than 500 downloads
<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>
<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>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
More than 100 downloads
<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>
<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>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
More than 10 downloads
<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>
<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>
</li>
</ul>
......
......@@ -23,18 +23,21 @@ export class AchievementsComponent implements OnInit {
console.log('I have been called');
this.searchService.getStatisticsForUser(this.account.firstName + ' ' + this.account.lastName).subscribe(
(data: Statistics) => {
this.statistics = data;
// eslint-disable-next-line no-console
console.log(
'Data: Number of Downloads: ' +
data.downloads +
' Number of views: ' +
data.views +
' for account ' +
this.account.firstName +
' ' +
this.account.lastName
);
if (data) {
this.statistics = data;
// eslint-disable-next-line no-console
console.log(
'Data: Number of Downloads: ' +
data.downloads +
' Number of views: ' +
data.views +
' for account ' +
this.account.firstName +
' ' +
this.account.lastName
);
}
},
() => 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