Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsOperationProgress.java @ 891:d1a5fc6c1d6e
Log agent-side checkout progress with blocks
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 07 Nov 2014 14:55:14 +0100 |
parents | bf83331f51f0 |
children | 7bf4d943d5bb |
line wrap: on
line source
/* * Copyright 2000-2014 JetBrains s.r.o. * * 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 jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.vcs.VcsOperationProgress; import org.jetbrains.annotations.NotNull; public class MercurialVcsOperationProgress implements MercurialProgress { private final VcsOperationProgress myProgress; private String myPrevMessage; private int myPrevPercents; public MercurialVcsOperationProgress(@NotNull VcsOperationProgress progress) { myProgress = progress; } public void progressStarted(@NotNull String progressMessage) { reportProgress(progressMessage); } public void progressFinished(@NotNull String progressMessage) { reportProgress(progressMessage); } public void reportProgress(@NotNull String progressMessage) { myProgress.reportProgress(progressMessage); } public void reportProgress(float percentage, @NotNull String stage) { if (percentage < 0) { resetPrevProgress(); myProgress.reportProgress(stage); } else { int percents = (int) Math.floor(percentage * 100); if (!isDuplicate(stage, percents)) { myProgress.reportProgress(stage + " " + percents + "%"); updatePrevProgress(stage, percents); } } } private void resetPrevProgress() { myPrevMessage = null; myPrevPercents = -1; } private boolean isDuplicate(@NotNull String message, int percents) { return message.equals(myPrevMessage) && percents == myPrevPercents; } private void updatePrevProgress(@NotNull String message, int percents) { myPrevMessage = message; myPrevPercents = percents; } }