VCardParser.java revision 4199c54c527330ac01699b176e7bca186a3aa3a4
14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/*
24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project
34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License");
54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * you may not use this file except in compliance with the License.
64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * You may obtain a copy of the License at
74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *      http://www.apache.org/licenses/LICENSE-2.0
94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software
114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS,
124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * See the License for the specific language governing permissions and
144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * limitations under the License.
154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapackage com.android.vcard;
174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport com.android.vcard.exception.VCardException;
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.io.IOException;
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.io.InputStream;
224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapublic interface VCardParser {
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * <p>
264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Parses the given stream and send the vCard data into VCardBuilderBase object.
274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * </p>.
284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * <p>
294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Note that vCard 2.1 specification allows "CHARSET" parameter, and some career sets
304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * local encoding to it. For example, Japanese phone career uses Shift_JIS, which is
314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * formally allowed in vCard 2.1, but not allowed in vCard 3.0. In vCard 2.1,
324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * In some exreme case, it is allowed for vCard to have different charsets in one vCard.
334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * </p>
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * <p>
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * We recommend you use {@link VCardSourceDetector} and detect which kind of source the
364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * vCard comes from and explicitly specify a charset using the result.
374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * </p>
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     *
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * @param is The source to parse.
404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * @param interepreter A {@link VCardInterpreter} object which used to construct data.
414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * @throws IOException, VCardException
424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void parse(InputStream is, VCardInterpreter interepreter)
444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa            throws IOException, VCardException;
454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * <p>
484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Cancel parsing vCard. Useful when you want to stop the parse in the other threads.
494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * </p>
504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * <p>
514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Actual cancel is done after parsing the current vcard.
524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * </p>
534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public abstract void cancel();
554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa}
56