From 97ed4b02c9de2c6239d9676635fb482920ccaebe Mon Sep 17 00:00:00 2001 From: uhm0311 Date: Wed, 27 Dec 2023 17:39:40 +0900 Subject: [PATCH] CLEANUP: Reduce indent depth of SMGetResult merge method. --- .../internal/result/SMGetResultImpl.java | 121 +++++++++--------- .../internal/result/SMGetResultOldImpl.java | 77 +++++------ 2 files changed, 103 insertions(+), 95 deletions(-) diff --git a/src/main/java/net/spy/memcached/internal/result/SMGetResultImpl.java b/src/main/java/net/spy/memcached/internal/result/SMGetResultImpl.java index d3418e881..be73096ac 100644 --- a/src/main/java/net/spy/memcached/internal/result/SMGetResultImpl.java +++ b/src/main/java/net/spy/memcached/internal/result/SMGetResultImpl.java @@ -34,6 +34,11 @@ public void setFailedOperationStatus(OperationStatus status) { public void mergeSMGetElements(final List> eachResult, final List eachTrimmedResult) { + mergeSMGetElements(eachResult); + mergeTrimmedKeys(eachTrimmedResult); + } + + private void mergeSMGetElements(final List> eachResult) { if (mergedResult.isEmpty()) { // merged result is empty, add all. mergedResult.addAll(eachResult); @@ -41,73 +46,75 @@ public void mergeSMGetElements(final List> eachResult, while (mergedResult.size() > count) { mergedResult.remove(count); } - } else { - // do sort merge - boolean doInsert; // Is current eachResult could be inserted? - int comp, pos = 0; - for (SMGetElement result : eachResult) { - doInsert = true; - for (; pos < mergedResult.size(); pos++) { - comp = result.compareBkeyTo(mergedResult.get(pos)); - if ((reverse) ? (comp > 0) : (comp < 0)) { + return; + } + + // do sort merge + boolean doInsert; // Is current eachResult could be inserted? + int comp, pos = 0; + for (SMGetElement result : eachResult) { + doInsert = true; + for (; pos < mergedResult.size(); pos++) { + comp = result.compareBkeyTo(mergedResult.get(pos)); + if ((reverse) ? (comp > 0) : (comp < 0)) { + break; + } + if (comp == 0) { + // Duplicated bkey. Compare the "cache key". + int keyComp = result.compareKeyTo(mergedResult.get(pos)); + if ((reverse) ? (keyComp > 0) : (keyComp < 0)) { + if (unique) { + // Remove duplicated bkey. + mergedResult.remove(pos); + } break; - } - if (comp == 0) { - // Duplicated bkey. Compare the "cache key". - int keyComp = result.compareKeyTo(mergedResult.get(pos)); - if ((reverse) ? (keyComp > 0) : (keyComp < 0)) { - if (unique) { - // Remove duplicated bkey. - mergedResult.remove(pos); - } + } else { + if (unique) { + // NOT the first cache key with the same bkey. do NOT insert. + doInsert = false; break; - } else { - if (unique) { - // NOT the first cache key with the same bkey. do NOT insert. - doInsert = false; - break; - } } } } - if (!doInsert) { // UNIQUE - continue; - } - if (pos >= count) { - // At this point, following conditions are met. - // - mergedResult.size() == totalResultElementCount && - // - The current of eachResult is - // behind of the last of mergedResult. - // Then, all the next elements of eachResult are - // definitely behind of the last of mergedResult. - // So, stop the current sort-merge. - break; - } - mergedResult.add(pos, result); - if (mergedResult.size() > count) { - mergedResult.remove(count); - } - pos += 1; } + if (!doInsert) { // UNIQUE + continue; + } + if (pos >= count) { + // At this point, following conditions are met. + // - mergedResult.size() == totalResultElementCount && + // - The current of eachResult is + // behind of the last of mergedResult. + // Then, all the next elements of eachResult are + // definitely behind of the last of mergedResult. + // So, stop the current sort-merge. + break; + } + mergedResult.add(pos, result); + if (mergedResult.size() > count) { + mergedResult.remove(count); + } + pos += 1; + } + } + + private void mergeTrimmedKeys(final List eachTrimmedResult) { + if (mergedTrimmedKeys.isEmpty()) { + mergedTrimmedKeys.addAll(eachTrimmedResult); + return; } - if (!eachTrimmedResult.isEmpty()) { - if (mergedTrimmedKeys.isEmpty()) { - mergedTrimmedKeys.addAll(eachTrimmedResult); - } else { - // do sort merge trimmed list - int comp, pos = 0; - for (SMGetTrimKey result : eachTrimmedResult) { - for (; pos < mergedTrimmedKeys.size(); pos++) { - comp = result.compareTo(mergedTrimmedKeys.get(pos)); - if ((reverse) ? (comp > 0) : (comp < 0)) { - break; - } - } - mergedTrimmedKeys.add(pos, result); - pos += 1; + // do sort merge trimmed list + int comp, pos = 0; + for (SMGetTrimKey result : eachTrimmedResult) { + for (; pos < mergedTrimmedKeys.size(); pos++) { + comp = result.compareTo(mergedTrimmedKeys.get(pos)); + if ((reverse) ? (comp > 0) : (comp < 0)) { + break; } } + mergedTrimmedKeys.add(pos, result); + pos += 1; } } diff --git a/src/main/java/net/spy/memcached/internal/result/SMGetResultOldImpl.java b/src/main/java/net/spy/memcached/internal/result/SMGetResultOldImpl.java index fc76ab2ff..60f7be8bc 100644 --- a/src/main/java/net/spy/memcached/internal/result/SMGetResultOldImpl.java +++ b/src/main/java/net/spy/memcached/internal/result/SMGetResultOldImpl.java @@ -57,49 +57,50 @@ public void mergeSMGetElements(final List> eachResult, while (mergedResult.size() > totalResultElementCount) { mergedResult.remove(totalResultElementCount); } - } else { - boolean allAdded = true; // Is all element of eachResult added to mergedResult? - int comp = 0, pos = 0; - for (SMGetElement result : eachResult) { - for (; pos < mergedResult.size(); pos++) { - comp = result.compareTo(mergedResult.get(pos)); - if ((reverse) ? (comp > 0) : (comp < 0)) { - break; - } - } - if (pos >= totalResultElementCount) { - // Can NOT add more than the totalResultElementCount. - allAdded = false; - break; - } - if (pos >= mergedResult.size() && isMergedResultTrimmed.get() && comp != 0) { - // Can NOT add to the trimmed area of mergedResult. - allAdded = false; + return; + } + + boolean allAdded = true; // Is all element of eachResult added to mergedResult? + int comp = 0, pos = 0; + for (SMGetElement result : eachResult) { + for (; pos < mergedResult.size(); pos++) { + comp = result.compareTo(mergedResult.get(pos)); + if ((reverse) ? (comp > 0) : (comp < 0)) { break; } - mergedResult.add(pos, result); - if (mergedResult.size() > totalResultElementCount) { - mergedResult.remove(totalResultElementCount); - } - pos += 1; } - if (isEachResultTrimmed && allAdded && pos > 0) { - // If eachResult is trimmed and all element of it is added, - // trim the elements of mergedResult that exist in the trimmed area of eachResult. - while (pos < mergedResult.size()) { - if (mergedResult.get(pos).compareBkeyTo(mergedResult.get(pos - 1)) == 0) { - pos += 1; - } else { - mergedResult.remove(pos); - } - } - isMergedResultTrimmed.set(true); + if (pos >= totalResultElementCount) { + // Can NOT add more than the totalResultElementCount. + allAdded = false; + break; } - if (mergedResult.size() >= totalResultElementCount) { - // If size of mergedResult is reached to totalResultElementCount, - // then mergedResult is NOT trimmed. - isMergedResultTrimmed.set(false); + if (pos >= mergedResult.size() && isMergedResultTrimmed.get() && comp != 0) { + // Can NOT add to the trimmed area of mergedResult. + allAdded = false; + break; } + mergedResult.add(pos, result); + if (mergedResult.size() > totalResultElementCount) { + mergedResult.remove(totalResultElementCount); + } + pos += 1; + } + if (isEachResultTrimmed && allAdded && pos > 0) { + // If eachResult is trimmed and all element of it is added, + // trim the elements of mergedResult that exist in the trimmed area of eachResult. + while (pos < mergedResult.size()) { + if (mergedResult.get(pos).compareBkeyTo(mergedResult.get(pos - 1)) == 0) { + pos += 1; + } else { + mergedResult.remove(pos); + } + } + isMergedResultTrimmed.set(true); + } + if (mergedResult.size() >= totalResultElementCount) { + // If size of mergedResult is reached to totalResultElementCount, + // then mergedResult is NOT trimmed. + isMergedResultTrimmed.set(false); } }