From 014130920fa7b6747148d1f33d2c4bbd4e575fe0 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 10 Jul 2017 19:32:17 +0300 Subject: [PATCH] diff: extract method --- .../intellij/openapi/diff/impl/dir/DTree.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java index 94ca2a1b0946..8e931937e9d0 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java @@ -153,18 +153,21 @@ public class DTree { tree.setType(DiffType.SOURCE); } else { assert src != null; - DiffType dtype = src.getSize() == trg.getSize() ? DiffType.EQUAL : DiffType.CHANGED; - if (dtype == DiffType.EQUAL) { - switch (settings.compareMode) { - case CONTENT: - dtype = isEqual(src, trg) ? DiffType.EQUAL : DiffType.CHANGED; - break; - case TIMESTAMP: - dtype = Math.abs(src.getTimeStamp() - trg.getTimeStamp()) <= settings.compareTimestampAccuracy ? DiffType.EQUAL : DiffType.CHANGED; - break; - } + boolean equals; + switch (settings.compareMode) { + case CONTENT: + equals = isEqualContents(src, trg); + break; + case SIZE: + equals = isEqualSizes(src, trg); + break; + case TIMESTAMP: + equals = isEqualTimestamps(src, trg, settings); + break; + default: + throw new IllegalStateException(settings.compareMode.name()); } - tree.setType(dtype); + tree.setType(equals ? DiffType.EQUAL : DiffType.CHANGED); } tree.update(settings); } @@ -234,7 +237,16 @@ public class DTree { } } - private static boolean isEqual(DiffElement file1, DiffElement file2) { + private static boolean isEqualSizes(DiffElement file1, DiffElement file2) { + return file1.getSize() == file2.getSize(); + } + + private static boolean isEqualTimestamps(DiffElement src, DiffElement trg, DirDiffSettings settings) { + if (src.getSize() != trg.getSize()) return false; + return Math.abs(src.getTimeStamp() - trg.getTimeStamp()) <= settings.compareTimestampAccuracy; + } + + private static boolean isEqualContents(DiffElement file1, DiffElement file2) { if (file1.isContainer() || file2.isContainer()) return false; if (file1.getSize() != file2.getSize()) return false; try {