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 199e8a4fa78f5b9e3964dca84ad4047210d35c4013Daichi Hironoimport java.util.Objects; 206a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hironoimport static com.android.mtp.MtpDatabaseConstants.DocumentType; 219e8a4fa78f5b9e3964dca84ad4047210d35c4013Daichi Hirono 2250d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono/** 2350d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono * Static utilities for ID. 2450d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono */ 25e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hironoclass Identifier { 2611bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono final int mDeviceId; 2711bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono final int mStorageId; 2811bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono final int mObjectHandle; 2947eb192b2704e27272ca94a95680cac40b6bff3fDaichi Hirono final String mDocumentId; 306a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hirono final @DocumentType int mDocumentType; 31e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono 326a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hirono Identifier(int deviceId, int storageId, int objectHandle, String documentId, 336a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hirono @DocumentType int documentType) { 34e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono mDeviceId = deviceId; 35e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono mStorageId = storageId; 36e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono mObjectHandle = objectHandle; 3747eb192b2704e27272ca94a95680cac40b6bff3fDaichi Hirono mDocumentId = documentId; 386a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hirono mDocumentType = documentType; 39e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono } 40e5323b7493f2bc1537d7e6b2d4595d69fd01d72eDaichi Hirono 4111bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono @Override 4211bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono public boolean equals(Object obj) { 4311bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono if (!(obj instanceof Identifier)) 4411bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono return false; 456a5ea7eae8a70bced97ceef051c965c27cb642caDaichi Hirono final Identifier other = (Identifier) obj; 4611bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono return mDeviceId == other.mDeviceId && mStorageId == other.mStorageId && 4719aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono mObjectHandle == other.mObjectHandle && mDocumentId.equals(other.mDocumentId); 4811bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono } 4911bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono 5011bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono @Override 5111bd3cbd2d4934ba9f5b8b4087954d8f68106192Daichi Hirono public int hashCode() { 529e8a4fa78f5b9e3964dca84ad4047210d35c4013Daichi Hirono return Objects.hash(mDeviceId, mStorageId, mObjectHandle, mDocumentId); 5350d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono } 5419aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 5519aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono @Override 5619aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono public String toString() { 5719aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono final StringBuilder builder = new StringBuilder(); 5819aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("Identifier { "); 5919aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 6019aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("mDeviceId: "); 6119aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(mDeviceId); 6219aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(", "); 6319aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 6419aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("mStorageId: "); 6519aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(mStorageId); 6619aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(", "); 6719aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 6819aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("mObjectHandle: "); 6919aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(mObjectHandle); 7019aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(", "); 7119aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 7219aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("mDocumentId: "); 7319aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(mDocumentId); 7419aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(", "); 7519aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono 7619aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append("mDocumentType: "); 7719aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(mDocumentType); 7819aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono builder.append(" }"); 7919aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono return builder.toString(); 8019aa93249edc5dac01025456ce3bb1881f1b11d1Daichi Hirono } 8150d17aa871d9ca645a8e7af64df8866b85aee245Daichi Hirono} 82