@Override public boolean isValid(ExtractPagesParameters value, ConstraintValidatorContext context) { if (value != null) { return value.getPredefinedSetOfPages() != PredefinedSetOfPages.NONE || !value.getPageSelection().isEmpty(); } return true; }
@Override public boolean isValid(ExtractPagesParameters value, ConstraintValidatorContext context) { if (value != null) { return value.getPredefinedSetOfPages() != PredefinedSetOfPages.NONE || !value.getPageSelection().isEmpty(); } return true; }
/** * @param upperLimit * the number of pages of the document (upper limit). * @return the selected set of pages. Iteration ordering is predictable, it is the order in which elements were inserted into the {@link PageRange} set or the natural order in * case of {@link PredefinedSetOfPages}. * @see PagesSelection#getPages(int) */ @Override public Set<Integer> getPages(int upperLimit) { Set<Integer> pages = new NullSafeSet<Integer>(); if (predefinedSetOfPages != PredefinedSetOfPages.NONE) { pages = predefinedSetOfPages.getPages(upperLimit); } else { for (PageRange range : getPageSelection()) { pages.addAll(range.getPages(upperLimit)); } } if(!invertSelection) { return pages; } Set<Integer> invertedPages = new NullSafeSet<Integer>(); for(int i = 1; i <= upperLimit; i++) { if(!pages.contains(i)) { invertedPages.add(i); } } return invertedPages; }
/** * @param upperLimit * the number of pages of the document (upper limit). * @return the selected set of pages. Iteration ordering is predictable, it is the order in which elements were inserted into the {@link PageRange} set or the natural order in * case of {@link PredefinedSetOfPages}. * @see PagesSelection#getPages(int) */ @Override public Set<Integer> getPages(int upperLimit) { Set<Integer> pages = new NullSafeSet<Integer>(); if (predefinedSetOfPages != PredefinedSetOfPages.NONE) { pages = predefinedSetOfPages.getPages(upperLimit); } else { for (PageRange range : getPageSelection()) { pages.addAll(range.getPages(upperLimit)); } } if(!invertSelection) { return pages; } Set<Integer> invertedPages = new NullSafeSet<Integer>(); for(int i = 1; i <= upperLimit; i++) { if(!pages.contains(i)) { invertedPages.add(i); } } return invertedPages; }
@Test public void testHasTransitions() { when(params.getPredefinedSetOfPages()).thenReturn(null); when(params.getPageSelection()).thenReturn(Collections.singleton(range)); assertTrue(victim.isValid(params, null)); }
@Test public void testHasBoth() { when(params.getPredefinedSetOfPages()).thenReturn(PredefinedSetOfPages.EVEN_PAGES); when(params.getPageSelection()).thenReturn(Collections.singleton(range)); assertTrue(victim.isValid(params, null)); }
@Test public void testHasNone() { when(params.getPredefinedSetOfPages()).thenReturn(PredefinedSetOfPages.NONE); when(params.getPageSelection()).thenReturn(Collections.EMPTY_SET); assertFalse(victim.isValid(params, null)); } }
@Test public void testGetPageSelection() { ExtractPagesParameters victim = new ExtractPagesParameters(PredefinedSetOfPages.EVEN_PAGES); assertTrue(victim.getPageSelection().isEmpty()); ExtractPagesParameters victim2 = new ExtractPagesParameters(); victim2.addPageRange(new PageRange(12)); assertFalse(victim2.getPageSelection().isEmpty()); }
@Test public void pageRange_combined() { ExtractPagesParameters parameters = defaultCommandLine().with("-s", "3,5,8-10,2,2,9-9,30-") .invokeSejdaConsole(); assertContainsAll(parameters.getPageSelection(), Arrays.asList(new PageRange(3, 3), new PageRange(5, 5), new PageRange(8, 10), new PageRange(2, 2), new PageRange(9, 9), new PageRange(30))); }