package org.gbif.occurrence.common.identifier; import javax.annotation.Nullable; /** * A helper class for building the row keys used in the occurrence lookup table/process. * TODO: this is too similar to OccurrenceKeyBuilder - they should be merged */ public class OccurrenceKeyHelper { private static final char DELIM = '|'; private OccurrenceKeyHelper() { } public static String buildKeyPrefix(String datasetKey) { return datasetKey + DELIM; } @Nullable public static String buildKey(@Nullable HolyTriplet triplet) { if (triplet == null || triplet.getDatasetKey() == null || triplet.getInstitutionCode() == null || triplet.getCollectionCode() == null || triplet.getCatalogNumber() == null) { return null; } StringBuilder sb = new StringBuilder(triplet.getDatasetKey().toString()); sb.append(DELIM); sb.append(triplet.getInstitutionCode()); sb.append(DELIM); sb.append(triplet.getCollectionCode()); sb.append(DELIM); sb.append(triplet.getCatalogNumber()); sb.append(DELIM); sb.append(triplet.getUnitQualifier()); return sb.toString(); } @Nullable public static String buildKey(@Nullable PublisherProvidedUniqueIdentifier pubProvided) { if (pubProvided == null || pubProvided.getDatasetKey() == null || pubProvided.getPublisherProvidedIdentifier() == null) { return null; } StringBuilder sb = new StringBuilder(pubProvided.getDatasetKey().toString()); sb.append(DELIM); sb.append(pubProvided.getPublisherProvidedIdentifier()); return sb.toString(); } @Nullable public static String buildUnscopedKey(@Nullable PublisherProvidedUniqueIdentifier pubProvidedUniqueId) { if (pubProvidedUniqueId == null) { return null; } return pubProvidedUniqueId.getPublisherProvidedIdentifier(); } @Nullable public static String buildUnscopedKey(@Nullable HolyTriplet triplet) { if (triplet == null || triplet.getDatasetKey() == null || triplet.getInstitutionCode() == null || triplet.getCollectionCode() == null || triplet.getCatalogNumber() == null) { return null; } StringBuilder sb = new StringBuilder(triplet.getInstitutionCode()); sb.append(DELIM); sb.append(triplet.getCollectionCode()); sb.append(DELIM); sb.append(triplet.getCatalogNumber()); sb.append(DELIM); sb.append(triplet.getUnitQualifier()); return sb.toString(); } }