1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.car.vms; 18 19 import android.annotation.SystemApi; 20 import android.os.Parcel; 21 import android.os.Parcelable; 22 23 import java.util.ArrayList; 24 import java.util.Arrays; 25 import java.util.Collections; 26 import java.util.HashSet; 27 import java.util.List; 28 import java.util.Objects; 29 import java.util.Set; 30 31 /** 32 * A dependency for a VMS layer on other VMS layers. 33 * 34 * @hide 35 */ 36 @SystemApi 37 public final class VmsLayerDependency implements Parcelable { 38 private final VmsLayer mLayer; 39 private final Set<VmsLayer> mDependency; 40 41 /** 42 * Construct a dependency for layer on other layers. 43 */ VmsLayerDependency(VmsLayer layer, Set<VmsLayer> dependencies)44 public VmsLayerDependency(VmsLayer layer, Set<VmsLayer> dependencies) { 45 mLayer = layer; 46 mDependency = Collections.unmodifiableSet(dependencies); 47 } 48 49 /** 50 * Constructs a layer without a dependency. 51 */ VmsLayerDependency(VmsLayer layer)52 public VmsLayerDependency(VmsLayer layer) { 53 mLayer = layer; 54 mDependency = Collections.emptySet(); 55 } 56 getLayer()57 public VmsLayer getLayer() { 58 return mLayer; 59 } 60 61 /** 62 * Returns the dependencies. 63 */ getDependencies()64 public Set<VmsLayer> getDependencies() { 65 return mDependency; 66 } 67 68 public static final Parcelable.Creator<VmsLayerDependency> CREATOR = new 69 Parcelable.Creator<VmsLayerDependency>() { 70 public VmsLayerDependency createFromParcel(Parcel in) { 71 return new VmsLayerDependency(in); 72 } 73 74 public VmsLayerDependency[] newArray(int size) { 75 return new VmsLayerDependency[size]; 76 } 77 }; 78 toString()79 public String toString() { 80 return "VmsLayerDependency{ Layer: " + mLayer + " Dependency: " + mDependency + "}"; 81 } 82 83 @Override equals(Object o)84 public boolean equals(Object o) { 85 if (!(o instanceof VmsLayerDependency)) { 86 return false; 87 } 88 VmsLayerDependency p = (VmsLayerDependency) o; 89 return Objects.equals(p.mLayer, mLayer) && p.mDependency.equals(mDependency); 90 } 91 92 @Override hashCode()93 public int hashCode() { 94 return Objects.hash(mLayer, mDependency); 95 } 96 97 @Override writeToParcel(Parcel out, int flags)98 public void writeToParcel(Parcel out, int flags) { 99 out.writeParcelable(mLayer, flags); 100 out.writeParcelableList(new ArrayList<VmsLayer>(mDependency), flags); 101 } 102 103 @Override describeContents()104 public int describeContents() { 105 return 0; 106 } 107 VmsLayerDependency(Parcel in)108 private VmsLayerDependency(Parcel in) { 109 mLayer = in.readParcelable(VmsLayer.class.getClassLoader()); 110 List<VmsLayer> dependency = new ArrayList<>(); 111 in.readParcelableList(dependency, VmsLayer.class.getClassLoader()); 112 mDependency = Collections.unmodifiableSet(new HashSet<VmsLayer>(dependency)); 113 } 114 } 115