001package org.gbif.api.model.pipelines; 002 003import java.io.Serializable; 004import java.util.Arrays; 005import java.util.HashSet; 006import java.util.Set; 007import java.util.stream.Collectors; 008 009/** Enum to represent the pipelines internal interpretation type steps. */ 010public interface InterpretationType extends Serializable { 011 012 String name(); 013 014 String all(); 015 016 enum RecordType implements InterpretationType { 017 ALL, 018 // Raw 019 VERBATIM, 020 // Core types 021 IDENTIFIER, 022 EVENT_IDENTIFIER, 023 IDENTIFIER_ABSENT, 024 METADATA, 025 BASIC, 026 CLUSTERING, 027 TEMPORAL, 028 LOCATION, 029 TAXONOMY, 030 GRSCICOLL, 031 EVENT, 032 // Extension types 033 IMAGE, 034 MULTIMEDIA, 035 AUDUBON, 036 MEASUREMENT_OR_FACT, 037 AMPLIFICATION, 038 DNA_DERIVED_DATA, 039 // Specific 040 LOCATION_FEATURE, 041 // Tables, 042 // Remeber to add mapping to org.gbif.pipelines.core.utils.DwcaExtensionTermUtils 043 // and org.gbif.pipelines.ingest.utils.HdfsViewAvroUtils 044 OCCURRENCE, 045 MEASUREMENT_OR_FACT_TABLE, 046 IDENTIFICATION_TABLE, 047 RESOURCE_RELATIONSHIP_TABLE, 048 AMPLIFICATION_TABLE, 049 CLONING_TABLE, 050 GEL_IMAGE_TABLE, 051 LOAN_TABLE, 052 MATERIAL_SAMPLE_TABLE, 053 PERMIT_TABLE, 054 PREPARATION_TABLE, 055 PRESERVATION_TABLE, 056 GERMPLASM_MEASUREMENT_SCORE_TABLE, 057 GERMPLASM_MEASUREMENT_TRAIT_TABLE, 058 GERMPLASM_MEASUREMENT_TRIAL_TABLE, 059 GERMPLASM_ACCESSION_TABLE, 060 EXTENDED_MEASUREMENT_OR_FACT_TABLE, 061 CHRONOMETRIC_AGE_TABLE, 062 REFERENCE_TABLE, 063 IDENTIFIER_TABLE, 064 AUDUBON_TABLE, 065 IMAGE_TABLE, 066 MULTIMEDIA_TABLE, 067 DNA_DERIVED_DATA_TABLE; 068 069 @Override 070 public String all() { 071 return ALL.name(); 072 } 073 074 public static Set<RecordType> getAllInterpretation() { 075 return new HashSet<>( 076 Arrays.asList( 077 VERBATIM, 078 // Core types 079 METADATA, 080 IDENTIFIER_ABSENT, 081 CLUSTERING, 082 BASIC, 083 TEMPORAL, 084 LOCATION, 085 TAXONOMY, 086 GRSCICOLL, 087 // Extension types 088 IMAGE, 089 MULTIMEDIA, 090 AUDUBON, 091 MEASUREMENT_OR_FACT, 092 AMPLIFICATION, 093 DNA_DERIVED_DATA, 094 // Specific 095 LOCATION_FEATURE, 096 OCCURRENCE)); 097 } 098 099 public static Set<String> getAllInterpretationAsString() { 100 return getAllInterpretation().stream().map(RecordType::name).collect(Collectors.toSet()); 101 } 102 103 public static Set<String> getAllValidatorInterpretationAsString() { 104 Set<String> set = getAllInterpretationAsString(); 105 set.add(IDENTIFIER.name()); 106 set.remove(IDENTIFIER_ABSENT.name()); 107 return set; 108 } 109 110 public static Set<RecordType> getAllTables() { 111 return new HashSet<>( 112 Arrays.asList( 113 OCCURRENCE, 114 MEASUREMENT_OR_FACT_TABLE, 115 IDENTIFICATION_TABLE, 116 RESOURCE_RELATIONSHIP_TABLE, 117 AMPLIFICATION_TABLE, 118 CLONING_TABLE, 119 GEL_IMAGE_TABLE, 120 LOAN_TABLE, 121 MATERIAL_SAMPLE_TABLE, 122 PERMIT_TABLE, 123 PREPARATION_TABLE, 124 PRESERVATION_TABLE, 125 GERMPLASM_MEASUREMENT_SCORE_TABLE, 126 GERMPLASM_MEASUREMENT_TRAIT_TABLE, 127 GERMPLASM_MEASUREMENT_TRIAL_TABLE, 128 GERMPLASM_ACCESSION_TABLE, 129 EXTENDED_MEASUREMENT_OR_FACT_TABLE, 130 CHRONOMETRIC_AGE_TABLE, 131 REFERENCE_TABLE, 132 IDENTIFIER_TABLE, 133 AUDUBON_TABLE, 134 IMAGE_TABLE, 135 MULTIMEDIA_TABLE, 136 DNA_DERIVED_DATA_TABLE)); 137 } 138 } 139}