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