use of org.obiba.opal.core.domain.taxonomy.Vocabulary in project mica2 by obiba.
the class VocabularyMissingRangeTermsExceptionMapper method getErrorDto.
@Override
protected GeneratedMessage.ExtendableMessage<?> getErrorDto(VocabularyMissingRangeTermsException e) {
Vocabulary vocabulary = e.getVocabulary();
ErrorDtos.ClientErrorDto.Builder builder = ErrorDtos.ClientErrorDto.newBuilder().setCode(getStatus().getStatusCode());
if (vocabulary != null) {
builder.setMessageTemplate("server.error.taxonomy.range-criterion-missing-terms");
builder.addArguments(vocabulary.getName());
}
return builder.build();
}
use of org.obiba.opal.core.domain.taxonomy.Vocabulary in project mica2 by obiba.
the class TaxonomyAggregationMetaDataProvider method getVocabulary.
private Optional<Vocabulary> getVocabulary(String aggregation) {
String key = aggregation.replaceAll("^attributes-", "").replaceAll("-und$", "");
AttributeKey attrKey = AttributeKey.from(key);
String targetTaxonomy = attrKey.hasNamespace(null) ? "Default" : attrKey.getNamespace();
String targetVocabulary = attrKey.getName();
return //
getTaxonomies().stream().filter(//
taxonomy -> !Strings.isNullOrEmpty(targetTaxonomy) && taxonomy.getName().equals(targetTaxonomy)).map(//
Taxonomy::getVocabularies).flatMap(//
Collection::stream).filter(//
vocabulary -> vocabulary.getName().equals(targetVocabulary)).findFirst();
}
use of org.obiba.opal.core.domain.taxonomy.Vocabulary in project mica2 by obiba.
the class TaxonomyAggregationMetaDataProvider method getAllLocalizedMetadata.
private Map<String, LocalizedMetaData> getAllLocalizedMetadata(String aggregation) {
Optional<Vocabulary> vocabulary = getVocabulary(aggregation);
if (vocabulary.isPresent()) {
Map<String, LocalizedMetaData> r = Maps.newHashMap();
for (Term t : vocabulary.get().getTerms()) {
LocalizedString title = new LocalizedString();
title.putAll(t.getTitle());
LocalizedString description = new LocalizedString();
description.putAll(t.getDescription());
String className = t.getAttributeValue("className");
if (Strings.isNullOrEmpty(className)) {
className = t.getClass().getSimpleName();
}
if (!r.containsKey(t.getName())) {
r.put(t.getName(), new LocalizedMetaData(title, description, className));
}
}
return r;
}
return null;
}
use of org.obiba.opal.core.domain.taxonomy.Vocabulary in project mica2 by obiba.
the class TaxonomySearchResource method filterVocabulary.
@GET
@Path("/vocabulary/{vocabulary}/_filter")
@Timed
public Opal.VocabularyDto filterVocabulary(@PathParam("name") String name, @PathParam("vocabulary") String vocabularyName, @QueryParam("target") @DefaultValue("variable") String target, @QueryParam("query") String query, @QueryParam("locale") String locale) {
TaxonomyTarget taxonomyTarget = getTaxonomyTarget(target);
if (taxonomyTarget.equals(TaxonomyTarget.TAXONOMY))
return Dtos.asDto(getTaxonomy(taxonomyTarget, name).getVocabulary(vocabularyName));
List<String> foundVocabularies = filterVocabularies(taxonomyTarget, String.format("name:%s", vocabularyName), locale);
if (foundVocabularies.isEmpty()) {
throw new NoSuchVocabularyException(name, vocabularyName);
}
Taxonomy taxonomy = getTaxonomy(taxonomyTarget, name);
Vocabulary vocabulary = taxonomy.getVocabulary(vocabularyName);
Opal.VocabularyDto.Builder tBuilder = Dtos.asDto(vocabulary, false).toBuilder();
String filteredQuery = String.format(Strings.isNullOrEmpty(query) ? "taxonomyName:%s AND vocabularyName:%s" : "taxonomyName:%s AND vocabularyName:%s AND (%s)", name, vocabularyName, query);
Map<String, Map<String, List<String>>> taxoNamesMap = asMap(filterTerms(taxonomyTarget, filteredQuery, locale, null));
if (taxoNamesMap.isEmpty() || !taxoNamesMap.containsKey(name) || taxoNamesMap.get(name).isEmpty() || taxoNamesMap.get(name).get(vocabularyName).isEmpty())
return tBuilder.build();
taxoNamesMap.get(name).get(vocabularyName).forEach(term -> tBuilder.addTerms(Dtos.asDto(vocabulary.getTerm(term))));
return tBuilder.build();
}
Aggregations