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 MULTI_TAXONOMY, 031 GRSCICOLL, 032 EVENT, 033 // Extension types 034 IMAGE, 035 MULTIMEDIA, 036 AUDUBON, 037 MEASUREMENT_OR_FACT, 038 AMPLIFICATION, 039 DNA_DERIVED_DATA, 040 // Specific 041 LOCATION_FEATURE, 042 // Tables, 043 // Remeber to add mapping to org.gbif.pipelines.core.utils.DwcaExtensionTermUtils 044 // and org.gbif.pipelines.ingest.utils.HdfsViewAvroUtils 045 OCCURRENCE, 046 MEASUREMENT_OR_FACT_TABLE, 047 IDENTIFICATION_TABLE, 048 RESOURCE_RELATIONSHIP_TABLE, 049 AMPLIFICATION_TABLE, 050 CLONING_TABLE, 051 GEL_IMAGE_TABLE, 052 LOAN_TABLE, 053 MATERIAL_SAMPLE_TABLE, 054 PERMIT_TABLE, 055 PREPARATION_TABLE, 056 PRESERVATION_TABLE, 057 GERMPLASM_MEASUREMENT_SCORE_TABLE, 058 GERMPLASM_MEASUREMENT_TRAIT_TABLE, 059 GERMPLASM_MEASUREMENT_TRIAL_TABLE, 060 GERMPLASM_ACCESSION_TABLE, 061 EXTENDED_MEASUREMENT_OR_FACT_TABLE, 062 CHRONOMETRIC_AGE_TABLE, 063 REFERENCE_TABLE, 064 IDENTIFIER_TABLE, 065 AUDUBON_TABLE, 066 IMAGE_TABLE, 067 MULTIMEDIA_TABLE, 068 DNA_DERIVED_DATA_TABLE; 069 070 @Override 071 public String all() { 072 return ALL.name(); 073 } 074 075 public static Set<RecordType> getAllInterpretation() { 076 return new HashSet<>( 077 Arrays.asList( 078 VERBATIM, 079 // Core types 080 METADATA, 081 IDENTIFIER_ABSENT, 082 CLUSTERING, 083 BASIC, 084 TEMPORAL, 085 LOCATION, 086 TAXONOMY, 087 MULTI_TAXONOMY, 088 GRSCICOLL, 089 // Extension types 090 IMAGE, 091 MULTIMEDIA, 092 AUDUBON, 093 MEASUREMENT_OR_FACT, 094 AMPLIFICATION, 095 DNA_DERIVED_DATA, 096 // Specific 097 LOCATION_FEATURE, 098 OCCURRENCE)); 099 } 100 101 public static Set<String> getAllInterpretationAsString() { 102 return getAllInterpretation().stream().map(RecordType::name).collect(Collectors.toSet()); 103 } 104 105 public static Set<String> getAllValidatorInterpretationAsString() { 106 Set<String> set = getAllInterpretationAsString(); 107 set.add(IDENTIFIER.name()); 108 set.remove(IDENTIFIER_ABSENT.name()); 109 return set; 110 } 111 112 public static Set<RecordType> getAllTables() { 113 return new HashSet<>( 114 Arrays.asList( 115 OCCURRENCE, 116 MEASUREMENT_OR_FACT_TABLE, 117 IDENTIFICATION_TABLE, 118 RESOURCE_RELATIONSHIP_TABLE, 119 AMPLIFICATION_TABLE, 120 CLONING_TABLE, 121 GEL_IMAGE_TABLE, 122 LOAN_TABLE, 123 MATERIAL_SAMPLE_TABLE, 124 PERMIT_TABLE, 125 PREPARATION_TABLE, 126 PRESERVATION_TABLE, 127 GERMPLASM_MEASUREMENT_SCORE_TABLE, 128 GERMPLASM_MEASUREMENT_TRAIT_TABLE, 129 GERMPLASM_MEASUREMENT_TRIAL_TABLE, 130 GERMPLASM_ACCESSION_TABLE, 131 EXTENDED_MEASUREMENT_OR_FACT_TABLE, 132 CHRONOMETRIC_AGE_TABLE, 133 REFERENCE_TABLE, 134 IDENTIFIER_TABLE, 135 AUDUBON_TABLE, 136 IMAGE_TABLE, 137 MULTIMEDIA_TABLE, 138 DNA_DERIVED_DATA_TABLE)); 139 } 140 } 141}