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