197a60d9d00240949b9642c28a34be118469eb727Winson Chung/*
297a60d9d00240949b9642c28a34be118469eb727Winson Chung * Copyright (C) 2015 The Android Open Source Project
397a60d9d00240949b9642c28a34be118469eb727Winson Chung *
497a60d9d00240949b9642c28a34be118469eb727Winson Chung * Licensed under the Apache License, Version 2.0 (the "License");
597a60d9d00240949b9642c28a34be118469eb727Winson Chung * you may not use this file except in compliance with the License.
697a60d9d00240949b9642c28a34be118469eb727Winson Chung * You may obtain a copy of the License at
797a60d9d00240949b9642c28a34be118469eb727Winson Chung *
897a60d9d00240949b9642c28a34be118469eb727Winson Chung *      http://www.apache.org/licenses/LICENSE-2.0
997a60d9d00240949b9642c28a34be118469eb727Winson Chung *
1097a60d9d00240949b9642c28a34be118469eb727Winson Chung * Unless required by applicable law or agreed to in writing, software
1197a60d9d00240949b9642c28a34be118469eb727Winson Chung * distributed under the License is distributed on an "AS IS" BASIS,
1297a60d9d00240949b9642c28a34be118469eb727Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1397a60d9d00240949b9642c28a34be118469eb727Winson Chung * See the License for the specific language governing permissions and
1497a60d9d00240949b9642c28a34be118469eb727Winson Chung * limitations under the License.
1597a60d9d00240949b9642c28a34be118469eb727Winson Chung */
1697a60d9d00240949b9642c28a34be118469eb727Winson Chung
1797a60d9d00240949b9642c28a34be118469eb727Winson Chungpackage com.android.mtp;
1897a60d9d00240949b9642c28a34be118469eb727Winson Chung
199c2a6867578142b3e51fa8787a39d350c147b4faWinson Chungimport android.mtp.MtpStorageInfo;
209c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung
2197a60d9d00240949b9642c28a34be118469eb727Winson Chungimport com.android.internal.annotations.VisibleForTesting;
229c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung
2397a60d9d00240949b9642c28a34be118469eb727Winson Chungclass MtpRoot {
249c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    final int mDeviceId;
2597a60d9d00240949b9642c28a34be118469eb727Winson Chung    final int mStorageId;
2697a60d9d00240949b9642c28a34be118469eb727Winson Chung    final String mDescription;
279c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    final long mFreeSpace;
289c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    final long mMaxCapacity;
2997a60d9d00240949b9642c28a34be118469eb727Winson Chung    final String mVolumeIdentifier;
3097a60d9d00240949b9642c28a34be118469eb727Winson Chung
3197a60d9d00240949b9642c28a34be118469eb727Winson Chung    @VisibleForTesting
3297a60d9d00240949b9642c28a34be118469eb727Winson Chung    MtpRoot(int deviceId,
3397a60d9d00240949b9642c28a34be118469eb727Winson Chung            int storageId,
349c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung            String description,
3597a60d9d00240949b9642c28a34be118469eb727Winson Chung            long freeSpace,
3697a60d9d00240949b9642c28a34be118469eb727Winson Chung            long maxCapacity,
3797a60d9d00240949b9642c28a34be118469eb727Winson Chung            String volumeIdentifier) {
3897a60d9d00240949b9642c28a34be118469eb727Winson Chung        mDeviceId = deviceId;
3997a60d9d00240949b9642c28a34be118469eb727Winson Chung        mStorageId = storageId;
4097a60d9d00240949b9642c28a34be118469eb727Winson Chung        mDescription = description;
4197a60d9d00240949b9642c28a34be118469eb727Winson Chung        mFreeSpace = freeSpace;
4297a60d9d00240949b9642c28a34be118469eb727Winson Chung        mMaxCapacity = maxCapacity;
4397a60d9d00240949b9642c28a34be118469eb727Winson Chung        mVolumeIdentifier = volumeIdentifier;
4497a60d9d00240949b9642c28a34be118469eb727Winson Chung    }
4597a60d9d00240949b9642c28a34be118469eb727Winson Chung
4697a60d9d00240949b9642c28a34be118469eb727Winson Chung    MtpRoot(int deviceId, MtpStorageInfo storageInfo) {
4797a60d9d00240949b9642c28a34be118469eb727Winson Chung        mDeviceId = deviceId;
4897a60d9d00240949b9642c28a34be118469eb727Winson Chung        mStorageId = storageInfo.getStorageId();
499c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung        mDescription = storageInfo.getDescription();
509c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung        mFreeSpace = storageInfo.getFreeSpace();
5183fbf18ced2a386dff5fd9bb30fa5d8229cb517aWinson Chung        mMaxCapacity = storageInfo.getMaxCapacity();
5283fbf18ced2a386dff5fd9bb30fa5d8229cb517aWinson Chung        mVolumeIdentifier = storageInfo.getVolumeIdentifier();
539c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    }
5497a60d9d00240949b9642c28a34be118469eb727Winson Chung
5597a60d9d00240949b9642c28a34be118469eb727Winson Chung    @Override
5697a60d9d00240949b9642c28a34be118469eb727Winson Chung    public boolean equals(Object object) {
5797a60d9d00240949b9642c28a34be118469eb727Winson Chung        if (!(object instanceof MtpRoot))
5897a60d9d00240949b9642c28a34be118469eb727Winson Chung            return false;
5997a60d9d00240949b9642c28a34be118469eb727Winson Chung        final MtpRoot other = (MtpRoot) object;
6097a60d9d00240949b9642c28a34be118469eb727Winson Chung        return mDeviceId == other.mDeviceId &&
6197a60d9d00240949b9642c28a34be118469eb727Winson Chung                mStorageId == other.mStorageId &&
6297a60d9d00240949b9642c28a34be118469eb727Winson Chung                mDescription.equals(other.mDescription) &&
6397a60d9d00240949b9642c28a34be118469eb727Winson Chung                mFreeSpace == other.mFreeSpace &&
6497a60d9d00240949b9642c28a34be118469eb727Winson Chung                mMaxCapacity == other.mMaxCapacity &&
6597a60d9d00240949b9642c28a34be118469eb727Winson Chung                mVolumeIdentifier.equals(other.mVolumeIdentifier);
6697a60d9d00240949b9642c28a34be118469eb727Winson Chung    }
6797a60d9d00240949b9642c28a34be118469eb727Winson Chung
6897a60d9d00240949b9642c28a34be118469eb727Winson Chung    @Override
6997a60d9d00240949b9642c28a34be118469eb727Winson Chung    public int hashCode() {
7097a60d9d00240949b9642c28a34be118469eb727Winson Chung        return mDeviceId ^ mStorageId ^ mDescription.hashCode() ^
7197a60d9d00240949b9642c28a34be118469eb727Winson Chung                ((int) mFreeSpace) ^ ((int) mMaxCapacity) ^ mVolumeIdentifier.hashCode();
7283fbf18ced2a386dff5fd9bb30fa5d8229cb517aWinson Chung    }
7383fbf18ced2a386dff5fd9bb30fa5d8229cb517aWinson Chung
7497a60d9d00240949b9642c28a34be118469eb727Winson Chung    @Override
759c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    public String toString() {
769c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung        return "MtpRoot{Name: " + mDescription + "}";
779c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung    }
789c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung}
799c2a6867578142b3e51fa8787a39d350c147b4faWinson Chung