13652b361896defff06be1f37c5200f27c7610b97Neil Fuller/* 23652b361896defff06be1f37c5200f27c7610b97Neil Fuller * Copyright (C) 2017 The Android Open Source Project 33652b361896defff06be1f37c5200f27c7610b97Neil Fuller * 43652b361896defff06be1f37c5200f27c7610b97Neil Fuller * Licensed under the Apache License, Version 2.0 (the "License"); 53652b361896defff06be1f37c5200f27c7610b97Neil Fuller * you may not use this file except in compliance with the License. 63652b361896defff06be1f37c5200f27c7610b97Neil Fuller * You may obtain a copy of the License at 73652b361896defff06be1f37c5200f27c7610b97Neil Fuller * 83652b361896defff06be1f37c5200f27c7610b97Neil Fuller * http://www.apache.org/licenses/LICENSE-2.0 93652b361896defff06be1f37c5200f27c7610b97Neil Fuller * 103652b361896defff06be1f37c5200f27c7610b97Neil Fuller * Unless required by applicable law or agreed to in writing, software 113652b361896defff06be1f37c5200f27c7610b97Neil Fuller * distributed under the License is distributed on an "AS IS" BASIS, 123652b361896defff06be1f37c5200f27c7610b97Neil Fuller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133652b361896defff06be1f37c5200f27c7610b97Neil Fuller * See the License for the specific language governing permissions and 143652b361896defff06be1f37c5200f27c7610b97Neil Fuller * limitations under the License. 153652b361896defff06be1f37c5200f27c7610b97Neil Fuller */ 163652b361896defff06be1f37c5200f27c7610b97Neil Fuller 173652b361896defff06be1f37c5200f27c7610b97Neil Fullerpackage com.android.timezone.distro; 183652b361896defff06be1f37c5200f27c7610b97Neil Fuller 193652b361896defff06be1f37c5200f27c7610b97Neil Fuller/** 203652b361896defff06be1f37c5200f27c7610b97Neil Fuller * Information about a staged time zone distro operation. 213652b361896defff06be1f37c5200f27c7610b97Neil Fuller */ 223652b361896defff06be1f37c5200f27c7610b97Neil Fullerpublic class StagedDistroOperation { 233652b361896defff06be1f37c5200f27c7610b97Neil Fuller 243652b361896defff06be1f37c5200f27c7610b97Neil Fuller private static final StagedDistroOperation UNINSTALL_STAGED = 253652b361896defff06be1f37c5200f27c7610b97Neil Fuller new StagedDistroOperation(true /* isUninstall */, null /* stagedVersion */); 263652b361896defff06be1f37c5200f27c7610b97Neil Fuller 273652b361896defff06be1f37c5200f27c7610b97Neil Fuller public final boolean isUninstall; 283652b361896defff06be1f37c5200f27c7610b97Neil Fuller public final DistroVersion distroVersion; 293652b361896defff06be1f37c5200f27c7610b97Neil Fuller 303652b361896defff06be1f37c5200f27c7610b97Neil Fuller private StagedDistroOperation(boolean isUninstall, DistroVersion distroVersion) { 313652b361896defff06be1f37c5200f27c7610b97Neil Fuller this.isUninstall = isUninstall; 323652b361896defff06be1f37c5200f27c7610b97Neil Fuller this.distroVersion = distroVersion; 333652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 343652b361896defff06be1f37c5200f27c7610b97Neil Fuller 353652b361896defff06be1f37c5200f27c7610b97Neil Fuller public static StagedDistroOperation install(DistroVersion distroVersion) { 363652b361896defff06be1f37c5200f27c7610b97Neil Fuller if (distroVersion == null) { 373652b361896defff06be1f37c5200f27c7610b97Neil Fuller throw new NullPointerException("distroVersion==null"); 383652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 393652b361896defff06be1f37c5200f27c7610b97Neil Fuller return new StagedDistroOperation(false /* isUninstall */, distroVersion); 403652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 413652b361896defff06be1f37c5200f27c7610b97Neil Fuller 423652b361896defff06be1f37c5200f27c7610b97Neil Fuller public static StagedDistroOperation uninstall() { 433652b361896defff06be1f37c5200f27c7610b97Neil Fuller return UNINSTALL_STAGED; 443652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 453652b361896defff06be1f37c5200f27c7610b97Neil Fuller 463652b361896defff06be1f37c5200f27c7610b97Neil Fuller @Override 473652b361896defff06be1f37c5200f27c7610b97Neil Fuller public boolean equals(Object o) { 483652b361896defff06be1f37c5200f27c7610b97Neil Fuller if (this == o) { 493652b361896defff06be1f37c5200f27c7610b97Neil Fuller return true; 503652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 513652b361896defff06be1f37c5200f27c7610b97Neil Fuller if (o == null || getClass() != o.getClass()) { 523652b361896defff06be1f37c5200f27c7610b97Neil Fuller return false; 533652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 543652b361896defff06be1f37c5200f27c7610b97Neil Fuller 553652b361896defff06be1f37c5200f27c7610b97Neil Fuller StagedDistroOperation that = (StagedDistroOperation) o; 563652b361896defff06be1f37c5200f27c7610b97Neil Fuller 573652b361896defff06be1f37c5200f27c7610b97Neil Fuller if (isUninstall != that.isUninstall) { 583652b361896defff06be1f37c5200f27c7610b97Neil Fuller return false; 593652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 603652b361896defff06be1f37c5200f27c7610b97Neil Fuller return distroVersion != null ? distroVersion.equals(that.distroVersion) 613652b361896defff06be1f37c5200f27c7610b97Neil Fuller : that.distroVersion == null; 623652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 633652b361896defff06be1f37c5200f27c7610b97Neil Fuller 643652b361896defff06be1f37c5200f27c7610b97Neil Fuller @Override 653652b361896defff06be1f37c5200f27c7610b97Neil Fuller public int hashCode() { 663652b361896defff06be1f37c5200f27c7610b97Neil Fuller int result = (isUninstall ? 1 : 0); 673652b361896defff06be1f37c5200f27c7610b97Neil Fuller result = 31 * result + (distroVersion != null ? distroVersion.hashCode() : 0); 683652b361896defff06be1f37c5200f27c7610b97Neil Fuller return result; 693652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 703652b361896defff06be1f37c5200f27c7610b97Neil Fuller 713652b361896defff06be1f37c5200f27c7610b97Neil Fuller @Override 723652b361896defff06be1f37c5200f27c7610b97Neil Fuller public String toString() { 733652b361896defff06be1f37c5200f27c7610b97Neil Fuller return "StagedDistroOperation{" + 743652b361896defff06be1f37c5200f27c7610b97Neil Fuller "isUninstall=" + isUninstall + 753652b361896defff06be1f37c5200f27c7610b97Neil Fuller ", distroVersion=" + distroVersion + 763652b361896defff06be1f37c5200f27c7610b97Neil Fuller '}'; 773652b361896defff06be1f37c5200f27c7610b97Neil Fuller } 783652b361896defff06be1f37c5200f27c7610b97Neil Fuller} 79