DicTraverseSession.java revision c4e4dfe17dd60d200b851d228ce718543900a1fc
1f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright/*
2f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Copyright (C) 2012, The Android Open Source Project
3f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
4f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Licensed under the Apache License, Version 2.0 (the "License");
5f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * you may not use this file except in compliance with the License.
6f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * You may obtain a copy of the License at
7f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
8f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *     http://www.apache.org/licenses/LICENSE-2.0
9f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
10f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Unless required by applicable law or agreed to in writing, software
11f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * distributed under the License is distributed on an "AS IS" BASIS,
12f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * See the License for the specific language governing permissions and
14f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * limitations under the License.
15f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright */
16f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
17f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightpackage com.android.inputmethod.latin;
18f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
19f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightimport java.util.Locale;
20f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
21f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightpublic class DicTraverseSession {
22f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    static {
23f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright        JniUtils.loadNativeLibrary();
24f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    }
25f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
26f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    private long mNativeDicTraverseSession;
27f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
28f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    public DicTraverseSession(Locale locale) {
29f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright        mNativeDicTraverseSession = createNativeDicTraverseSession(
30f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright                locale != null ? locale.toString() : "");
31f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    }
32f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
33f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    private native long setDicTraverseSessionNative(String locale);
34f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    private native void releaseDicTraverseSessionNative(long nativeDicTraverseSession);
35f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
36    private final long createNativeDicTraverseSession(String locale) {
37        return setDicTraverseSessionNative(locale);
38    }
39
40    private void closeInternal() {
41        if (mNativeDicTraverseSession != 0) {
42            releaseDicTraverseSessionNative(mNativeDicTraverseSession);
43            mNativeDicTraverseSession = 0;
44        }
45    }
46
47    public void close() {
48        closeInternal();
49    }
50
51    @Override
52    protected void finalize() throws Throwable {
53        try {
54            closeInternal();
55        } finally {
56            super.finalize();
57        }
58    }
59}
60