VCS: patch creation separated from patch application, small cleanup
[idea/community.git] / platform / vcs-impl / src / com / intellij / openapi / diff / impl / patch / apply / ApplyTextFilePatch.java
index 0fb9298d9b8f07b32dbf659ef4a1a78cc56c88c5..307cfda70cbdb212c7ccc5a9f3f3c973e315e0dd 100644 (file)
@@ -17,19 +17,14 @@ package com.intellij.openapi.diff.impl.patch.apply;
 
 import com.intellij.openapi.diff.impl.patch.ApplyPatchException;
 import com.intellij.openapi.diff.impl.patch.ApplyPatchStatus;
-import com.intellij.openapi.diff.impl.patch.PatchHunk;
 import com.intellij.openapi.diff.impl.patch.TextFilePatch;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.fileEditor.FileDocumentManager;
 import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
-import com.intellij.openapi.util.text.LineTokenizer;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.Nullable;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
 public class ApplyTextFilePatch extends ApplyFilePatchBase<TextFilePatch> {
   public ApplyTextFilePatch(final TextFilePatch patch) {
@@ -41,7 +36,7 @@ public class ApplyTextFilePatch extends ApplyFilePatchBase<TextFilePatch> {
     byte[] fileContents = fileToPatch.contentsToByteArray();
     CharSequence text = LoadTextUtil.getTextByBinaryPresentation(fileContents, fileToPatch);
     StringBuilder newText = new StringBuilder();
-    ApplyPatchStatus status = applyModifications(text, newText);
+    ApplyPatchStatus status = ApplyFilePatchBase.applyModifications(myPatch, text, newText);
     if (status != ApplyPatchStatus.ALREADY_APPLIED) {
       final Document document = FileDocumentManager.getInstance().getDocument(fileToPatch);
       if (document == null) {
@@ -53,28 +48,6 @@ public class ApplyTextFilePatch extends ApplyFilePatchBase<TextFilePatch> {
     return status;
   }
 
-  // todo taken to another place also, cheeeeeck
-  @Nullable
-  public ApplyPatchStatus applyModifications(final CharSequence text, final StringBuilder newText) throws ApplyPatchException {
-    final List<PatchHunk> hunks = myPatch.getHunks();
-    if (hunks.size() == 0) {
-      return ApplyPatchStatus.SUCCESS;
-    }
-    List<String> lines = new ArrayList<String>();
-    Collections.addAll(lines, LineTokenizer.tokenize(text, false));
-    ApplyPatchStatus result = null;
-    for(PatchHunk hunk: hunks) {
-      result = ApplyPatchStatus.and(result, hunk.apply(lines));
-    }
-    for(int i=0; i<lines.size(); i++) {
-      newText.append(lines.get(i));
-      if (i < lines.size()-1 || !hunks.get(hunks.size()-1).isNoNewLineAtEnd()) {
-        newText.append("\n");
-      }
-    }
-    return result;
-  }
-
   protected void applyCreate(final VirtualFile newFile) throws IOException, ApplyPatchException {
     final Document document = FileDocumentManager.getInstance().getDocument(newFile);
     if (document == null) {