@Test public void testReadSheetRowsAuthorSheet() throws Exception { Collection<AssociationUploadRow> rows = uploadSheetProcessor.readSheetRows(authorDepositedSheet); assertThat(rows).isInstanceOf(Collection.class); assertThat(rows).hasOnlyElementsOfType(AssociationUploadRow.class); assertThat(rows).hasSize(1); assertThat(rows).extracting("rowNumber", "authorReportedGene", "strongestAllele", "snp", "proxy", "riskFrequency", "associationRiskFrequency", "pvalueMantissa", "pvalueExponent", "pvalueDescription", "orPerCopyNum", "orPerCopyRecip", "betaNum", "betaUnit", "betaDirection", "range", "orPerCopyRecipRange", "standardError", "description", "multiSnpHaplotype", "snpInteraction", "snpStatus", "snpType", "efoTrait") .containsExactly(tuple(2, null, "rs123-?", "rs123", null, null, "0.6", 1, -9, "This is a description", (float) 2.48, null, null, null, null, "[1.22-1.43]", null, (float) 0.01, null, "N", "N", null, null, null)); }
@Override public Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet) { XSSFRow headerRow = sheet.getRow(0); Map<Integer, UploadFileHeader> headerRowMap = createHeaderMap(headerRow); Collection<AssociationUploadRow> associationUploadRows = new ArrayList<>(); Integer lastRow = sheet.getLastRowNum(); Integer rowNum = 1; while (rowNum <= lastRow) { AssociationUploadRow associationUploadRow = new AssociationUploadRow(); associationUploadRow.setRowNumber(rowNum + 1); XSSFRow row = sheet.getRow(rowNum); if (row.getPhysicalNumberOfCells() > 0) { for (Map.Entry<Integer, UploadFileHeader> heading : headerRowMap.entrySet()) { Integer colNum = heading.getKey(); UploadFileHeader headerName = heading.getValue(); XSSFCell cell = row.getCell(colNum, Row.RETURN_BLANK_AS_NULL); if (cell != null) { try { switch (headerName) { case GENES: associationUploadRow.setAuthorReportedGene(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP: associationUploadRow.setSnp(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ALLELE: associationUploadRow.setStrongestAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SECONDARY_EFFECT_ALLELE: associationUploadRow.setEffectAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OTHER_ALLELES: associationUploadRow.setOtherAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case PROXY_SNP: associationUploadRow.setProxy(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ELEMENT_FREQUENCY_IN_CONTROLS: associationUploadRow.setAssociationRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case INDEPENDENT_SNP_EFFECT_ALLELE_FREQUENCY_IN_CONTROLS: associationUploadRow.setRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case PVALUE_MANTISSA: associationUploadRow.setPvalueMantissa(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_EXPONENT: associationUploadRow.setPvalueExponent(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_DESCRIPTION: associationUploadRow.setPvalueDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR: associationUploadRow.setOrPerCopyNum(SheetCellProcessingService.processFloatValues(cell)); break; case OR_RECIPROCAL: associationUploadRow.setOrPerCopyRecip(SheetCellProcessingService.processFloatValues(cell)); break; case BETA: associationUploadRow.setBetaNum(SheetCellProcessingService.processFloatValues(cell)); break; case BETA_UNIT: associationUploadRow.setBetaUnit(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case BETA_DIRECTION: associationUploadRow.setBetaDirection(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case RANGE: associationUploadRow.setRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR_RECIPROCAL_RANGE: associationUploadRow.setOrPerCopyRecipRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case STANDARD_ERROR: associationUploadRow.setStandardError(SheetCellProcessingService.processFloatValues(cell)); break; case DESCRIPTION: associationUploadRow.setDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case MULTI_SNP_HAPLOTYPE: associationUploadRow.setMultiSnpHaplotype(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_INTERACTION: associationUploadRow.setSnpInteraction(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_STATUS: associationUploadRow.setSnpStatus(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_TYPE: associationUploadRow.setSnpType(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFO_TRAITS: associationUploadRow.setEfoTrait(SheetCellProcessingService.processMandatoryStringValue(cell)); break; default: getLog().warn("Column with unknown heading found in file."); break; } } catch (CellProcessingException cpe) { ValidationError cpeValidationError = new ValidationError(headerName.toString(),cpe.getMessage(),false,"excel"); associationUploadRow.addCellErrorType(cpeValidationError); } } } associationUploadRows.add(associationUploadRow); } rowNum++; } return associationUploadRows; }
SheetProcessorImpl implements UploadSheetProcessor { @Override public Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet) { XSSFRow headerRow = sheet.getRow(0); Map<Integer, UploadFileHeader> headerRowMap = createHeaderMap(headerRow); Collection<AssociationUploadRow> associationUploadRows = new ArrayList<>(); Integer lastRow = sheet.getLastRowNum(); Integer rowNum = 1; while (rowNum <= lastRow) { AssociationUploadRow associationUploadRow = new AssociationUploadRow(); associationUploadRow.setRowNumber(rowNum + 1); XSSFRow row = sheet.getRow(rowNum); if (row.getPhysicalNumberOfCells() > 0) { for (Map.Entry<Integer, UploadFileHeader> heading : headerRowMap.entrySet()) { Integer colNum = heading.getKey(); UploadFileHeader headerName = heading.getValue(); XSSFCell cell = row.getCell(colNum, Row.RETURN_BLANK_AS_NULL); if (cell != null) { try { switch (headerName) { case GENES: associationUploadRow.setAuthorReportedGene(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP: associationUploadRow.setSnp(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ALLELE: associationUploadRow.setStrongestAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SECONDARY_EFFECT_ALLELE: associationUploadRow.setEffectAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OTHER_ALLELES: associationUploadRow.setOtherAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case PROXY_SNP: associationUploadRow.setProxy(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ELEMENT_FREQUENCY_IN_CONTROLS: associationUploadRow.setAssociationRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case INDEPENDENT_SNP_EFFECT_ALLELE_FREQUENCY_IN_CONTROLS: associationUploadRow.setRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case PVALUE_MANTISSA: associationUploadRow.setPvalueMantissa(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_EXPONENT: associationUploadRow.setPvalueExponent(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_DESCRIPTION: associationUploadRow.setPvalueDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR: associationUploadRow.setOrPerCopyNum(SheetCellProcessingService.processFloatValues(cell)); break; case OR_RECIPROCAL: associationUploadRow.setOrPerCopyRecip(SheetCellProcessingService.processFloatValues(cell)); break; case BETA: associationUploadRow.setBetaNum(SheetCellProcessingService.processFloatValues(cell)); break; case BETA_UNIT: associationUploadRow.setBetaUnit(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case BETA_DIRECTION: associationUploadRow.setBetaDirection(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case RANGE: associationUploadRow.setRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR_RECIPROCAL_RANGE: associationUploadRow.setOrPerCopyRecipRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case STANDARD_ERROR: associationUploadRow.setStandardError(SheetCellProcessingService.processFloatValues(cell)); break; case DESCRIPTION: associationUploadRow.setDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case MULTI_SNP_HAPLOTYPE: associationUploadRow.setMultiSnpHaplotype(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_INTERACTION: associationUploadRow.setSnpInteraction(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_STATUS: associationUploadRow.setSnpStatus(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_TYPE: associationUploadRow.setSnpType(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFO_TRAITS: associationUploadRow.setEfoTrait(SheetCellProcessingService.processMandatoryStringValue(cell)); break; default: getLog().warn("Column with unknown heading found in file."); break; } } catch (CellProcessingException cpe) { ValidationError cpeValidationError = new ValidationError(headerName.toString(),cpe.getMessage(),false,"excel"); associationUploadRow.addCellErrorType(cpeValidationError); } } } associationUploadRows.add(associationUploadRow); } rowNum++; } return associationUploadRows; } }
SheetProcessorImpl implements UploadSheetProcessor { @Override public Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet) { XSSFRow headerRow = sheet.getRow(0); Map<Integer, UploadFileHeader> headerRowMap = createHeaderMap(headerRow); Collection<AssociationUploadRow> associationUploadRows = new ArrayList<>(); Integer lastRow = sheet.getLastRowNum(); Integer rowNum = 1; while (rowNum <= lastRow) { AssociationUploadRow associationUploadRow = new AssociationUploadRow(); associationUploadRow.setRowNumber(rowNum + 1); XSSFRow row = sheet.getRow(rowNum); if (row.getPhysicalNumberOfCells() > 0) { for (Map.Entry<Integer, UploadFileHeader> heading : headerRowMap.entrySet()) { Integer colNum = heading.getKey(); UploadFileHeader headerName = heading.getValue(); XSSFCell cell = row.getCell(colNum, Row.RETURN_BLANK_AS_NULL); if (cell != null) { try { switch (headerName) { case GENES: associationUploadRow.setAuthorReportedGene(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP: associationUploadRow.setSnp(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ALLELE: associationUploadRow.setStrongestAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SECONDARY_EFFECT_ALLELE: associationUploadRow.setEffectAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OTHER_ALLELES: associationUploadRow.setOtherAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case PROXY_SNP: associationUploadRow.setProxy(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ELEMENT_FREQUENCY_IN_CONTROLS: associationUploadRow.setAssociationRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case INDEPENDENT_SNP_EFFECT_ALLELE_FREQUENCY_IN_CONTROLS: associationUploadRow.setRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case PVALUE_MANTISSA: associationUploadRow.setPvalueMantissa(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_EXPONENT: associationUploadRow.setPvalueExponent(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_DESCRIPTION: associationUploadRow.setPvalueDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR: associationUploadRow.setOrPerCopyNum(SheetCellProcessingService.processFloatValues(cell)); break; case OR_RECIPROCAL: associationUploadRow.setOrPerCopyRecip(SheetCellProcessingService.processFloatValues(cell)); break; case BETA: associationUploadRow.setBetaNum(SheetCellProcessingService.processFloatValues(cell)); break; case BETA_UNIT: associationUploadRow.setBetaUnit(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case BETA_DIRECTION: associationUploadRow.setBetaDirection(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case RANGE: associationUploadRow.setRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR_RECIPROCAL_RANGE: associationUploadRow.setOrPerCopyRecipRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case STANDARD_ERROR: associationUploadRow.setStandardError(SheetCellProcessingService.processFloatValues(cell)); break; case DESCRIPTION: associationUploadRow.setDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case MULTI_SNP_HAPLOTYPE: associationUploadRow.setMultiSnpHaplotype(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_INTERACTION: associationUploadRow.setSnpInteraction(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_STATUS: associationUploadRow.setSnpStatus(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_TYPE: associationUploadRow.setSnpType(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFO_TRAITS: associationUploadRow.setEfoTrait(SheetCellProcessingService.processMandatoryStringValue(cell)); break; default: getLog().warn("Column with unknown heading found in file."); break; } } catch (CellProcessingException cpe) { ValidationError cpeValidationError = new ValidationError(headerName.toString(),cpe.getMessage(),false,"excel"); associationUploadRow.addCellErrorType(cpeValidationError); } } } associationUploadRows.add(associationUploadRow); } rowNum++; } return associationUploadRows; } @Autowired  SheetProcessorImpl(TranslateUploadHeaders translateUploadHeaders); }
SheetProcessorImpl implements UploadSheetProcessor { @Override public Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet) { XSSFRow headerRow = sheet.getRow(0); Map<Integer, UploadFileHeader> headerRowMap = createHeaderMap(headerRow); Collection<AssociationUploadRow> associationUploadRows = new ArrayList<>(); Integer lastRow = sheet.getLastRowNum(); Integer rowNum = 1; while (rowNum <= lastRow) { AssociationUploadRow associationUploadRow = new AssociationUploadRow(); associationUploadRow.setRowNumber(rowNum + 1); XSSFRow row = sheet.getRow(rowNum); if (row.getPhysicalNumberOfCells() > 0) { for (Map.Entry<Integer, UploadFileHeader> heading : headerRowMap.entrySet()) { Integer colNum = heading.getKey(); UploadFileHeader headerName = heading.getValue(); XSSFCell cell = row.getCell(colNum, Row.RETURN_BLANK_AS_NULL); if (cell != null) { try { switch (headerName) { case GENES: associationUploadRow.setAuthorReportedGene(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP: associationUploadRow.setSnp(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ALLELE: associationUploadRow.setStrongestAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SECONDARY_EFFECT_ALLELE: associationUploadRow.setEffectAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OTHER_ALLELES: associationUploadRow.setOtherAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case PROXY_SNP: associationUploadRow.setProxy(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ELEMENT_FREQUENCY_IN_CONTROLS: associationUploadRow.setAssociationRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case INDEPENDENT_SNP_EFFECT_ALLELE_FREQUENCY_IN_CONTROLS: associationUploadRow.setRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case PVALUE_MANTISSA: associationUploadRow.setPvalueMantissa(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_EXPONENT: associationUploadRow.setPvalueExponent(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_DESCRIPTION: associationUploadRow.setPvalueDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR: associationUploadRow.setOrPerCopyNum(SheetCellProcessingService.processFloatValues(cell)); break; case OR_RECIPROCAL: associationUploadRow.setOrPerCopyRecip(SheetCellProcessingService.processFloatValues(cell)); break; case BETA: associationUploadRow.setBetaNum(SheetCellProcessingService.processFloatValues(cell)); break; case BETA_UNIT: associationUploadRow.setBetaUnit(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case BETA_DIRECTION: associationUploadRow.setBetaDirection(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case RANGE: associationUploadRow.setRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR_RECIPROCAL_RANGE: associationUploadRow.setOrPerCopyRecipRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case STANDARD_ERROR: associationUploadRow.setStandardError(SheetCellProcessingService.processFloatValues(cell)); break; case DESCRIPTION: associationUploadRow.setDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case MULTI_SNP_HAPLOTYPE: associationUploadRow.setMultiSnpHaplotype(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_INTERACTION: associationUploadRow.setSnpInteraction(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_STATUS: associationUploadRow.setSnpStatus(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_TYPE: associationUploadRow.setSnpType(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFO_TRAITS: associationUploadRow.setEfoTrait(SheetCellProcessingService.processMandatoryStringValue(cell)); break; default: getLog().warn("Column with unknown heading found in file."); break; } } catch (CellProcessingException cpe) { ValidationError cpeValidationError = new ValidationError(headerName.toString(),cpe.getMessage(),false,"excel"); associationUploadRow.addCellErrorType(cpeValidationError); } } } associationUploadRows.add(associationUploadRow); } rowNum++; } return associationUploadRows; } @Autowired  SheetProcessorImpl(TranslateUploadHeaders translateUploadHeaders); @Override Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet); @Override Map<Integer, UploadFileHeader> createHeaderMap(XSSFRow row); }
SheetProcessorImpl implements UploadSheetProcessor { @Override public Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet) { XSSFRow headerRow = sheet.getRow(0); Map<Integer, UploadFileHeader> headerRowMap = createHeaderMap(headerRow); Collection<AssociationUploadRow> associationUploadRows = new ArrayList<>(); Integer lastRow = sheet.getLastRowNum(); Integer rowNum = 1; while (rowNum <= lastRow) { AssociationUploadRow associationUploadRow = new AssociationUploadRow(); associationUploadRow.setRowNumber(rowNum + 1); XSSFRow row = sheet.getRow(rowNum); if (row.getPhysicalNumberOfCells() > 0) { for (Map.Entry<Integer, UploadFileHeader> heading : headerRowMap.entrySet()) { Integer colNum = heading.getKey(); UploadFileHeader headerName = heading.getValue(); XSSFCell cell = row.getCell(colNum, Row.RETURN_BLANK_AS_NULL); if (cell != null) { try { switch (headerName) { case GENES: associationUploadRow.setAuthorReportedGene(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP: associationUploadRow.setSnp(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ALLELE: associationUploadRow.setStrongestAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SECONDARY_EFFECT_ALLELE: associationUploadRow.setEffectAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OTHER_ALLELES: associationUploadRow.setOtherAllele(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case PROXY_SNP: associationUploadRow.setProxy(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFFECT_ELEMENT_FREQUENCY_IN_CONTROLS: associationUploadRow.setAssociationRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case INDEPENDENT_SNP_EFFECT_ALLELE_FREQUENCY_IN_CONTROLS: associationUploadRow.setRiskFrequency(SheetCellProcessingService.processStringValue( cell)); break; case PVALUE_MANTISSA: associationUploadRow.setPvalueMantissa(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_EXPONENT: associationUploadRow.setPvalueExponent(SheetCellProcessingService.processIntValues(cell)); break; case PVALUE_DESCRIPTION: associationUploadRow.setPvalueDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR: associationUploadRow.setOrPerCopyNum(SheetCellProcessingService.processFloatValues(cell)); break; case OR_RECIPROCAL: associationUploadRow.setOrPerCopyRecip(SheetCellProcessingService.processFloatValues(cell)); break; case BETA: associationUploadRow.setBetaNum(SheetCellProcessingService.processFloatValues(cell)); break; case BETA_UNIT: associationUploadRow.setBetaUnit(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case BETA_DIRECTION: associationUploadRow.setBetaDirection(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case RANGE: associationUploadRow.setRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case OR_RECIPROCAL_RANGE: associationUploadRow.setOrPerCopyRecipRange(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case STANDARD_ERROR: associationUploadRow.setStandardError(SheetCellProcessingService.processFloatValues(cell)); break; case DESCRIPTION: associationUploadRow.setDescription(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case MULTI_SNP_HAPLOTYPE: associationUploadRow.setMultiSnpHaplotype(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_INTERACTION: associationUploadRow.setSnpInteraction(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_STATUS: associationUploadRow.setSnpStatus(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case SNP_TYPE: associationUploadRow.setSnpType(SheetCellProcessingService.processMandatoryStringValue(cell)); break; case EFO_TRAITS: associationUploadRow.setEfoTrait(SheetCellProcessingService.processMandatoryStringValue(cell)); break; default: getLog().warn("Column with unknown heading found in file."); break; } } catch (CellProcessingException cpe) { ValidationError cpeValidationError = new ValidationError(headerName.toString(),cpe.getMessage(),false,"excel"); associationUploadRow.addCellErrorType(cpeValidationError); } } } associationUploadRows.add(associationUploadRow); } rowNum++; } return associationUploadRows; } @Autowired  SheetProcessorImpl(TranslateUploadHeaders translateUploadHeaders); @Override Collection<AssociationUploadRow> readSheetRows(XSSFSheet sheet); @Override Map<Integer, UploadFileHeader> createHeaderMap(XSSFRow row);  }