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
19e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood/**
20e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Encapsulates the ObjectPropList dataset used by the GetObjectPropList command.
21e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * The fields of this class are read by JNI code in android_media_MtpDatabase.cpp
22e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood */
23e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
247d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwoodclass MtpPropertyList {
25e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
26e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // number of results returned
277d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    private int             mCount;
287d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    // maximum number of results
297d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    private final int       mMaxCount;
30e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // result code for GetObjectPropList
31e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public int              mResult;
32e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // list of object handles (first field in quadruplet)
33e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public final int[]      mObjectHandles;
34e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // list of object propery codes (second field in quadruplet)
35e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public final int[]      mPropertyCodes;
36e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // list of data type codes (third field in quadruplet)
37e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public final int[]     mDataTypes;
38e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // list of long int property values (fourth field in quadruplet, when value is integer type)
39e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public long[]     mLongValues;
40e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // list of long int property values (fourth field in quadruplet, when value is string type)
41e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public String[]   mStringValues;
42e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
43e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    // constructor only called from MtpDatabase
447d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    public MtpPropertyList(int maxCount, int result) {
457d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        mMaxCount = maxCount;
46e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mResult = result;
477d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        mObjectHandles = new int[maxCount];
487d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        mPropertyCodes = new int[maxCount];
497d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        mDataTypes = new int[maxCount];
50e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        // mLongValues and mStringValues are created lazily since both might not be necessary
51e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    }
52e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
537d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    public void append(int handle, int property, int type, long value) {
547d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        int index = mCount++;
55e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        if (mLongValues == null) {
567d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood            mLongValues = new long[mMaxCount];
57e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        }
58e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mObjectHandles[index] = handle;
59e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mPropertyCodes[index] = property;
60e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mDataTypes[index] = type;
61e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mLongValues[index] = value;
62e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    }
63e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
647d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood    public void append(int handle, int property, String value) {
657d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood        int index = mCount++;
66e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        if (mStringValues == null) {
677d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood            mStringValues = new String[mMaxCount];
68e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        }
69e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mObjectHandles[index] = handle;
70e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mPropertyCodes[index] = property;
71e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mDataTypes[index] = MtpConstants.TYPE_STR;
72e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mStringValues[index] = value;
73e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    }
74e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood
75e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    public void setResult(int result) {
76e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood        mResult = result;
77e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood    }
78e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood}
79