Refactor: Add own class for computing the preview diff URL This makes the code easier reuseable. Change-Id: I7456f6bc11735b8ecce14bc692e33d49fe715756 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/PreviewDiffUrl.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/PreviewDiffUrl.java new file mode 100644 index 0000000..366ad4a --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/PreviewDiffUrl.java
@@ -0,0 +1,66 @@ +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.xdocs; + +import com.google.gerrit.extensions.annotations.PluginName; +import com.google.inject.Inject; + +public class PreviewDiffUrl { + private final String pluginName; + + @Inject + PreviewDiffUrl(@PluginName String pluginName) { + this.pluginName = pluginName; + } + + public String getSideBySideUrl(int changeId, Integer patchSetIdA, + int patchSetIdB, String path) { + return getUrl(changeId, patchSetIdA, patchSetIdB, path, false); + } + + public String getSideBySideIconUrl() { + return "plugins/" + pluginName + "/static/sideBySideDiffPreview.png"; + } + + public String getUnifiedUrl(int changeId, Integer patchSetIdA, + int patchSetIdB, String path) { + return getUrl(changeId, patchSetIdA, patchSetIdB, path, true); + } + + public String getUnifiedIconUrl() { + return "plugins/" + pluginName + "/static/unifiedDiffPreview.png"; + } + + private String getUrl(int changeId, Integer patchSetIdA, int patchSetIdB, + String path, boolean unified) { + StringBuilder url = new StringBuilder(); + url.append("#/x/"); + url.append(pluginName); + url.append("/c/"); + url.append(changeId); + url.append("/"); + if (patchSetIdA != null) { + url.append(patchSetIdA); + url.append(".."); + } + url.append(patchSetIdB); + url.append("/"); + url.append(path); + if (unified) { + url.append(",unified"); + } + return url.toString(); + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/SideBySideDiffPreviewWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/SideBySideDiffPreviewWebLink.java index 27c04bf..0205047 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/SideBySideDiffPreviewWebLink.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/SideBySideDiffPreviewWebLink.java
@@ -14,7 +14,6 @@ package com.googlesource.gerrit.plugins.xdocs; -import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.common.DiffWebLinkInfo; import com.google.gerrit.extensions.webui.DiffWebLink; import com.google.inject.Inject; @@ -25,14 +24,14 @@ public class SideBySideDiffPreviewWebLink implements DiffWebLink { private static final String SIDE_BY_SIDE_PREVIEW_DIFF = "side-by-side preview diff"; - private final String pluginName; + private final PreviewDiffUrl previewDiffUrl; private final Formatters formatters; @Inject SideBySideDiffPreviewWebLink( - @PluginName String pluginName, + PreviewDiffUrl previewDiffUrl, Formatters formatters) { - this.pluginName = pluginName; + this.previewDiffUrl = previewDiffUrl; this.formatters = formatters; } @@ -46,26 +45,8 @@ } return DiffWebLinkInfo.forSideBySideDiffView(SIDE_BY_SIDE_PREVIEW_DIFF, - "plugins/" + pluginName + "/static/sideBySideDiffPreview.png", - getUrl(pluginName, changeId, patchSetIdA, patchSetIdB, pathB), + previewDiffUrl.getSideBySideIconUrl(), + previewDiffUrl.getSideBySideUrl(changeId, patchSetIdA, patchSetIdB, pathB), Target.SELF); } - - public static String getUrl(String pluginName, int changeId, - Integer patchSetIdA, int patchSetIdB, String path) { - StringBuilder url = new StringBuilder(); - url.append("#/x/"); - url.append(pluginName); - url.append("/c/"); - url.append(changeId); - url.append("/"); - if (patchSetIdA != null) { - url.append(patchSetIdA); - url.append(".."); - } - url.append(patchSetIdB); - url.append("/"); - url.append(path); - return url.toString(); - } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/UnifiedDiffPreviewWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/UnifiedDiffPreviewWebLink.java index f51c2b6..a3cdb6e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/UnifiedDiffPreviewWebLink.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/UnifiedDiffPreviewWebLink.java
@@ -14,7 +14,6 @@ package com.googlesource.gerrit.plugins.xdocs; -import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.common.DiffWebLinkInfo; import com.google.gerrit.extensions.webui.DiffWebLink; import com.google.inject.Inject; @@ -25,14 +24,14 @@ public class UnifiedDiffPreviewWebLink implements DiffWebLink { private static final String UNIFIED_PREVIEW_DIFF = "unified preview diff"; - private final String pluginName; + private final PreviewDiffUrl previewDiffUrl; private final Formatters formatters; @Inject UnifiedDiffPreviewWebLink( - @PluginName String pluginName, + PreviewDiffUrl previewDiffUrl, Formatters formatters) { - this.pluginName = pluginName; + this.previewDiffUrl = previewDiffUrl; this.formatters = formatters; } @@ -46,14 +45,8 @@ } return DiffWebLinkInfo.forUnifiedDiffView(UNIFIED_PREVIEW_DIFF, - "plugins/" + pluginName + "/static/unifiedDiffPreview.png", - getUrl(pluginName, changeId, patchSetIdA, patchSetIdB, pathB), + previewDiffUrl.getUnifiedIconUrl(), + previewDiffUrl.getUnifiedUrl(changeId, patchSetIdA, patchSetIdB, pathB), Target.SELF); } - - private static String getUrl(String pluginName, int changeId, - Integer patchSetIdA, int patchSetIdB, String path) { - return SideBySideDiffPreviewWebLink.getUrl(pluginName, changeId, - patchSetIdA, patchSetIdB, path) + ",unified"; - } }