150d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono/*
250d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * Copyright (C) 2015 The Android Open Source Project
350d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono *
450d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * Licensed under the Apache License, Version 2.0 (the "License");
550d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * you may not use this file except in compliance with the License.
650d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * You may obtain a copy of the License at
750d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono *
850d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono *      http://www.apache.org/licenses/LICENSE-2.0
950d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono *
1050d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * Unless required by applicable law or agreed to in writing, software
1150d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * distributed under the License is distributed on an "AS IS" BASIS,
1250d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * See the License for the specific language governing permissions and
1450d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * limitations under the License.
1550d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono */
1650d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono
1750d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hironopackage com.android.mtp;
1850d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono
1950d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hironoimport android.mtp.MtpStorageInfo;
2050d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono
2109109567e9816d20f51b5ce0175751116836635fDaichi Hironoimport com.android.internal.annotations.VisibleForTesting;
2209109567e9816d20f51b5ce0175751116836635fDaichi Hirono
2350d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hironoclass MtpRoot {
248b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    final int mDeviceId;
25e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono    final int mStorageId;
2650d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono    final String mDescription;
2750d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono    final long mFreeSpace;
2850d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono    final long mMaxCapacity;
2950d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono    final String mVolumeIdentifier;
3050d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono
3109109567e9816d20f51b5ce0175751116836635fDaichi Hirono    @VisibleForTesting
328b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    MtpRoot(int deviceId,
338b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono            int storageId,
3409109567e9816d20f51b5ce0175751116836635fDaichi Hirono            String description,
3509109567e9816d20f51b5ce0175751116836635fDaichi Hirono            long freeSpace,
3609109567e9816d20f51b5ce0175751116836635fDaichi Hirono            long maxCapacity,
3709109567e9816d20f51b5ce0175751116836635fDaichi Hirono            String volumeIdentifier) {
388b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mDeviceId = deviceId;
398b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mStorageId = storageId;
408b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mDescription = description;
418b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mFreeSpace = freeSpace;
428b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mMaxCapacity = maxCapacity;
438b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mVolumeIdentifier = volumeIdentifier;
4409109567e9816d20f51b5ce0175751116836635fDaichi Hirono    }
4509109567e9816d20f51b5ce0175751116836635fDaichi Hirono
46f83ccbd7edd32e728785fb7aad44f11886e79645Daichi Hirono    MtpRoot(int deviceId, MtpStorageInfo storageInfo) {
478b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mDeviceId = deviceId;
4850d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono        mStorageId = storageInfo.getStorageId();
4950d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono        mDescription = storageInfo.getDescription();
5050d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono        mFreeSpace = storageInfo.getFreeSpace();
5150d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono        mMaxCapacity = storageInfo.getMaxCapacity();
528b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        mVolumeIdentifier = storageInfo.getVolumeIdentifier();
538b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    }
548b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono
558b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    @Override
568b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    public boolean equals(Object object) {
578b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        if (!(object instanceof MtpRoot))
588b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono            return false;
598b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        final MtpRoot other = (MtpRoot) object;
608b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono        return mDeviceId == other.mDeviceId &&
618b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono                mStorageId == other.mStorageId &&
628b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono                mDescription.equals(other.mDescription) &&
638b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono                mFreeSpace == other.mFreeSpace &&
648b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono                mMaxCapacity == other.mMaxCapacity &&
658b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono                mVolumeIdentifier.equals(other.mVolumeIdentifier);
668b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    }
678b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono
688b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    @Override
698b9024f0c20b1b79df1f2d0bc2f1a82f726b1176Daichi Hirono    public int hashCode() {
70f83ccbd7edd32e728785fb7aad44f11886e79645Daichi Hirono        return mDeviceId ^ mStorageId ^ mDescription.hashCode() ^
7117c8d8bcdae4b31d295431fc089db81bf3721c54Daichi Hirono                ((int) mFreeSpace) ^ ((int) mMaxCapacity) ^ mVolumeIdentifier.hashCode();
7217c8d8bcdae4b31d295431fc089db81bf3721c54Daichi Hirono    }
73f83ccbd7edd32e728785fb7aad44f11886e79645Daichi Hirono
7417c8d8bcdae4b31d295431fc089db81bf3721c54Daichi Hirono    @Override
7517c8d8bcdae4b31d295431fc089db81bf3721c54Daichi Hirono    public String toString() {
76f83ccbd7edd32e728785fb7aad44f11886e79645Daichi Hirono        return "MtpRoot{Name: " + mDescription + "}";
7750d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono    }
7850d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono}
79