package org.gbif.checklistbank.service.mybatis;
import org.gbif.api.model.checklistbank.Description;
import org.gbif.api.model.checklistbank.TableOfContents;
import org.gbif.api.service.checklistbank.DescriptionService;
import org.gbif.checklistbank.model.TocEntry;
import org.gbif.checklistbank.service.mybatis.mapper.DescriptionMapper;
import java.util.List;
import javax.annotation.Nullable;
import com.google.inject.Inject;
/**
* Implements a DescriptionService using MyBatis.
*/
public class DescriptionServiceMyBatis extends NameUsageComponentServiceMyBatis<Description>
implements DescriptionService {
protected static final String ENGLISH = "en";
private final DescriptionMapper descriptionMapper;
@Inject
DescriptionServiceMyBatis(DescriptionMapper descriptionMapper) {
super(descriptionMapper);
this.descriptionMapper = descriptionMapper;
}
@Override
public TableOfContents getToc(int usageKey) {
TableOfContents toc = new TableOfContents();
List<TocEntry> entries;
if (isNub(usageKey)) {
entries = descriptionMapper.listTocEntriesByNub(usageKey);
} else {
entries = descriptionMapper.listTocEntriesByUsage(usageKey);
}
for (TocEntry e : entries) {
toc.addDescription(e.getKey(), e.getLanguage(), e.getTopic());
}
return toc;
}
@Nullable
@Override
public Description get(int key) {
return descriptionMapper.get(key);
}
}