AbstractLeverager { protected void filterTextUnitDTOWithSameTMTextUnitId(List<TextUnitDTO> textUnitDTOs) { logger.debug("Filter the TextUnitDTOs that have the same TMTextUnit id"); if (!textUnitDTOs.isEmpty()) { logger.debug("Take arbitrarily the first TMTextUnit id as the one that will be used to perform leveraging"); Long tmTextUnitIdForLeveraging = textUnitDTOs.get(0).getTmTextUnitId(); for (Iterator<TextUnitDTO> iterator = textUnitDTOs.iterator(); iterator.hasNext();) { TextUnitDTO textUnitDTO = iterator.next(); if (textUnitDTO.getTmTextUnitId().equals(tmTextUnitIdForLeveraging)) { logger.debug("This translation comes from the same TMTextUnit: {}, keep it", textUnitDTO.getTmTextUnitId()); } else { logger.debug("This translation comes from another TMTextUnit: {}, for consistency skip it.", textUnitDTO.getTmTextUnitId()); iterator.remove(); } } } }  abstract List<TextUnitDTO> getLeveragingMatches(TMTextUnit tmTextUnit, Long sourceTmId, Long sourceAssetId); abstract boolean isTranslationNeededIfUniqueMatch(); abstract String getType(); void performLeveragingFor(List<TMTextUnit> tmTextUnits, Long sourceTmId, Long assetId);  }
@Test public void testFilterTextUnitDTOWithSameTMTextUnitIdEmpty() { List<TextUnitDTO> textUnitDTOs = new ArrayList<>(); getLeveragingImpl().filterTextUnitDTOWithSameTMTextUnitId(textUnitDTOs); assertTrue(textUnitDTOs.isEmpty()); }
@Test public void testFilterTextUnitDTOWithSameTMTextUnitId() { List<TextUnitDTO> textUnitDTOs = new ArrayList<>(); TextUnitDTO textUnitDTO = new TextUnitDTO(); textUnitDTO.setTmTextUnitId(1L); textUnitDTOs.add(textUnitDTO); TextUnitDTO textUnitDTO2 = new TextUnitDTO(); textUnitDTO2.setTmTextUnitId(2L); textUnitDTOs.add(textUnitDTO2); TextUnitDTO textUnitDTO3 = new TextUnitDTO(); textUnitDTO3.setTmTextUnitId(1L); textUnitDTOs.add(textUnitDTO3); getLeveragingImpl().filterTextUnitDTOWithSameTMTextUnitId(textUnitDTOs); assertEquals(2, textUnitDTOs.size()); assertEquals(textUnitDTO, textUnitDTOs.get(0)); assertEquals(textUnitDTO3, textUnitDTOs.get(1)); }