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 java.util.List;
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/**
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * <P>
224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * The interface which should be implemented by the classes which have to analyze each
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * vCard entry minutely.
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * </P>
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * <P>
264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Here, there are several terms specific to vCard (and this library).
274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * </P>
284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * <P>
294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * The term "entry" is one vCard representation in the input, which should start with "BEGIN:VCARD"
304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * and end with "END:VCARD".
314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * </P>
324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * <P>
334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * The term "property" is one line in vCard entry, which consists of "group", "property name",
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * "parameter(param) names and values", and "property values".
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * </P>
364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * <P>
374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * e.g. group1.propName;paramName1=paramValue1;paramName2=paramValue2;propertyValue1;propertyValue2...
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * </P>
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapublic interface VCardInterpreter {
414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Called when vCard interpretation started.
434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
441de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa    void onVCardStarted();
454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Called when vCard interpretation finished.
484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
491de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa    void onVCardEnded();
504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
5148dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa    /**
524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Called when parsing one vCard entry started.
534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * More specifically, this method is called when "BEGIN:VCARD" is read.
5448dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     *
551de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa     * This may be called before {@link #onEntryEnded()} is called, as vCard 2.1 accepts nested
561de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa     * vCard.
5748dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     *
5848dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * <code>
5948dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * BEGIN:VCARD
6048dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * BEGIN:VCARD
6148dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * VERSION:2.1
6248dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * N:test;;;;
6348dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * END:VCARD
6448dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * END:VCARD
6548dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa     * </code>
664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
671de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa    void onEntryStarted();
684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Called when parsing one vCard entry ended.
714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * More specifically, this method is called when "END:VCARD" is read.
724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
731de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa    void onEntryEnded();
744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
761de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa     * Called when a property is created.
774199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
781de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa    void onPropertyCreated(VCardProperty property);
794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa}
80