10cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard/* 20cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Copyright (C) 2011 The Android Open Source Project 30cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * 40cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Licensed under the Apache License, Version 2.0 (the "License"); you may not 50cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * use this file except in compliance with the License. You may obtain a copy of 60cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * the License at 70cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * 80cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * http://www.apache.org/licenses/LICENSE-2.0 90cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * 100cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Unless required by applicable law or agreed to in writing, software 110cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 120cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 130cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * License for the specific language governing permissions and limitations under 140cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * the License. 150cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard */ 160cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 170cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalardpackage com.android.inputmethod.dictionarypack; 180cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 190cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalardimport java.io.File; 200cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 210cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard/** 220cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Immutable class to hold the address of an asset. 230cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * As opposed to a normal file, an asset is usually represented as a contiguous byte array in 240cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * the package file. Open it correctly thus requires the name of the package it is in, but 250cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * also the offset in the file and the length of this data. This class encapsulates these three. 260cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard */ 270cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalardfinal class AssetFileAddress { 280cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public final String mFilename; 290cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public final long mOffset; 300cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public final long mLength; 310cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 320cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public AssetFileAddress(final String filename, final long offset, final long length) { 330cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard mFilename = filename; 340cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard mOffset = offset; 350cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard mLength = length; 360cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard } 370cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 380cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard /** 390cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Makes an AssetFileAddress. This may return null. 400cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * 410cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @param filename the filename. 420cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @return the address, or null if the file does not exist or the parameters are not valid. 430cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard */ 440cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public static AssetFileAddress makeFromFileName(final String filename) { 450cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard if (null == filename) return null; 460cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard final File f = new File(filename); 470cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard if (!f.isFile()) return null; 480cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard return new AssetFileAddress(filename, 0l, f.length()); 490cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard } 500cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard 510cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard /** 520cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * Makes an AssetFileAddress. This may return null. 530cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * 540cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @param filename the filename. 550cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @param offset the offset. 560cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @param length the length. 570cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard * @return the address, or null if the file does not exist or the parameters are not valid. 580cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard */ 590cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard public static AssetFileAddress makeFromFileNameAndOffset(final String filename, 600cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard final long offset, final long length) { 610cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard if (null == filename) return null; 620cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard final File f = new File(filename); 630cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard if (!f.isFile()) return null; 640cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard return new AssetFileAddress(filename, offset, length); 650cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard } 660cc0544a2995c7eb54a830ae54db60af89d4073dJean Chalard} 67