1e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood/* 2e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 4e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * you may not use this file except in compliance with the License. 6e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * You may obtain a copy of the License at 7e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 8e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 10e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Unless required by applicable law or agreed to in writing, software 11e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * See the License for the specific language governing permissions and 14e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * limitations under the License. 15e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood */ 16e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 170cd0136d440cf6ad9d5fab430269116786e671ecMike Lockwoodpackage android.mtp; 18e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 19f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhangimport java.util.ArrayList; 20f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhangimport java.util.List; 21f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 22e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood/** 23e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Encapsulates the ObjectPropList dataset used by the GetObjectPropList command. 24e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * The fields of this class are read by JNI code in android_media_MtpDatabase.cpp 25e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood */ 26e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 277d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwoodclass MtpPropertyList { 28e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 29e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of object handles (first field in quadruplet) 30f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private List<Integer> mObjectHandles; 31f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang // list of object property codes (second field in quadruplet) 32f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private List<Integer> mPropertyCodes; 33e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of data type codes (third field in quadruplet) 34f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private List<Integer> mDataTypes; 35e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of long int property values (fourth field in quadruplet, when value is integer type) 36f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private List<Long> mLongValues; 37e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of long int property values (fourth field in quadruplet, when value is string type) 38f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private List<String> mStringValues; 39f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 40f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang // Return value of this operation 41f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang private int mCode; 42f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 43f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public MtpPropertyList(int code) { 44f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mCode = code; 45f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mObjectHandles = new ArrayList<>(); 46f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mPropertyCodes = new ArrayList<>(); 47f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mDataTypes = new ArrayList<>(); 48f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mLongValues = new ArrayList<>(); 49f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mStringValues = new ArrayList<>(); 50e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 51e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 527d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood public void append(int handle, int property, int type, long value) { 53f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mObjectHandles.add(handle); 54f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mPropertyCodes.add(property); 55f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mDataTypes.add(type); 56f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mLongValues.add(value); 57f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mStringValues.add(null); 58e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 59e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 607d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood public void append(int handle, int property, String value) { 61f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mObjectHandles.add(handle); 62f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mPropertyCodes.add(property); 63f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mDataTypes.add(MtpConstants.TYPE_STR); 64f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mStringValues.add(value); 65f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang mLongValues.add(0L); 66f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 67f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 68f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public int getCode() { 69f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mCode; 70f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 71f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 72f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public int getCount() { 73f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mObjectHandles.size(); 74f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 75f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 76f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public int[] getObjectHandles() { 77f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mObjectHandles.stream().mapToInt(Integer::intValue).toArray(); 78f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 79f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 80f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public int[] getPropertyCodes() { 81f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mPropertyCodes.stream().mapToInt(Integer::intValue).toArray(); 82f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 83f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 84f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public int[] getDataTypes() { 85f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mDataTypes.stream().mapToInt(Integer::intValue).toArray(); 86f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang } 87f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang 88f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public long[] getLongValues() { 89f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mLongValues.stream().mapToLong(Long::longValue).toArray(); 90e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 91e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 92f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang public String[] getStringValues() { 93f9c5c2574d95b6d233ebae8beae110f4e15c52c5Jerry Zhang return mStringValues.toArray(new String[0]); 94e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 95e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood} 96