private void checkEditedFragment(TodoItem newTodoItem) { if (myBeforeFile == null) { myBeforeFile = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() { @Override public PsiFile compute() { return myPsiFileFactory.createFileFromText("old" + myAfterFile.getName(), myAfterFile.getFileType(), myBeforeContent); } }); } if (myOldItems == null) { final Collection<IndexPatternOccurrence> all = LightIndexPatternSearch.SEARCH.createQuery(new IndexPatternSearch.SearchParameters(myBeforeFile, TodoIndexPatternProvider .getInstance())).findAll(); final TodoItemsCreator todoItemsCreator = new TodoItemsCreator(); myOldItems = new ArrayList<TodoItem>(); if (all.isEmpty()) { myAcceptor.addedOrEdited(newTodoItem); return; } for (IndexPatternOccurrence occurrence : all) { myOldItems.add(todoItemsCreator.createTodo(occurrence)); } applyFilterAndRemoveDuplicates(myOldItems, myTodoFilter); } if (myOldTodoTexts == null) { final StepIntersection<LineFragment, TodoItem> intersection = new StepIntersection<LineFragment, TodoItem>( LineFragmentConvertor.getInstance(), TodoItemConvertor.getInstance(), myOldItems, new Getter<String>() { @Override public String get() { return myBeforeContent; } }); myOldTodoTexts = new HashSet<String>(); intersection.process(Collections.singletonList(myCurrentLineFragment), new PairConsumer<LineFragment, TodoItem>() { @Override public void consume(LineFragment lineFragment, TodoItem todoItem) { myOldTodoTexts.add(getTodoText(todoItem, myBeforeContent)); } }); } final String text = getTodoText(newTodoItem, myAfterContent); if (! myOldTodoTexts.contains(text)) { myAcceptor.addedOrEdited(newTodoItem); } else { myAcceptor.inChanged(newTodoItem); } }
private void checkEditedFragment(TodoItem newTodoItem) { if (myBeforeFile == null) { myBeforeFile = myPsiFileFactory.createFileFromText("old" + myAfterFile.getName(), myAfterFile.getFileType(), myBeforeContent); } if (myOldItems == null) { final Collection<IndexPatternOccurrence> all = LightIndexPatternSearch.SEARCH.createQuery(new IndexPatternSearch.SearchParameters(myBeforeFile, TodoIndexPatternProvider .getInstance())).findAll(); final TodoItemsCreator todoItemsCreator = new TodoItemsCreator(); myOldItems = new ArrayList<TodoItem>(); if (all.isEmpty()) { myAcceptor.addedOrEdited(newTodoItem); return; } for (IndexPatternOccurrence occurrence : all) { myOldItems.add(todoItemsCreator.createTodo(occurrence)); } applyFilterAndRemoveDuplicates(myOldItems, myTodoFilter); } if (myOldTodoTexts == null) { final StepIntersection<LineFragment, TodoItem> intersection = new StepIntersection<LineFragment, TodoItem>( LineFragmentConvertor.getInstance(), TodoItemConvertor.getInstance(), myOldItems, new Getter<String>() { @Override public String get() { return myBeforeContent; } }); myOldTodoTexts = new HashSet<String>(); intersection.process(Collections.singletonList(myCurrentLineFragment), new PairConsumer<LineFragment, TodoItem>() { @Override public void consume(LineFragment lineFragment, TodoItem todoItem) { myOldTodoTexts.add(getTodoText(todoItem, myBeforeContent)); } }); } final String text = getTodoText(newTodoItem, myAfterContent); if (! myOldTodoTexts.contains(text)) { myAcceptor.addedOrEdited(newTodoItem); } else { myAcceptor.inChanged(newTodoItem); } }