@Override protected Long compute() { long count = 0L; List<RecursiveTask<Long>> forks = new LinkedList<>(); for (Folder subFolder : folder.getSubFolders()) { FolderSearchTask task = new FolderSearchTask(subFolder, searchedWord); forks.add(task); task.fork(); } for (Document document : folder.getDocuments()) { DocumentSearchTask task = new DocumentSearchTask(document, searchedWord); forks.add(task); task.fork(); } for (RecursiveTask<Long> task : forks) { count = count + task.join(); } return count; }
@Test public void testAddDocumentsIntoTheFolder() { Folder folder = new Folder("Home", Visibility.PUBLIC, true); Document doc = new Paper(); folder.addDocuments(doc); Assert.assertEquals(folder.getDocuments().iterator().next().getName(), doc.getName()); }
Long countOccurrencesOnSingleThread(Folder folder, String searchedWord) { long count = 0; for (Folder subFolder : folder.getSubFolders()) { count = count + countOccurrencesOnSingleThread(subFolder, searchedWord); } for (Document document : folder.getDocuments()) { count = count + occurrencesCount(document, searchedWord); } return count; }
@Override protected List<GeoPointCarbon> compute() { List<GeoPointCarbon> listOfPoints = new ArrayList<>(); List<RecursiveTask<List<GeoPointCarbon>>> forks = new LinkedList<>(); for (Folder subFolder : folder.getSubFolders()) { FolderSearchTask task = new FolderSearchTask(subFolder, region); forks.add(task); task.fork(); } for (Document document : folder.getDocuments()) { DocumentSearchTask task = new DocumentSearchTask(document, region); forks.add(task); task.fork(); } for (RecursiveTask<List<GeoPointCarbon>> task : forks) { listOfPoints.addAll(task.join()); } return listOfPoints; }
@Test public void testCollectionsInicialization() { Folder folder = new Folder("Home", Visibility.PUBLIC, true); Assert.assertTrue(folder.getFolders().size() == 0); Assert.assertTrue(folder.getDocuments().size() == 0); }