17949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton/*
27949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Copyright (C) 2010 The Android Open Source Project
37949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton *
47949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License");
57949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * you may not use this file except in compliance with the License.
67949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * You may obtain a copy of the License at
77949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton *
87949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton *      http://www.apache.org/licenses/LICENSE-2.0
97949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton *
107949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Unless required by applicable law or agreed to in writing, software
117949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS,
127949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * See the License for the specific language governing permissions and
147949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * limitations under the License.
157949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton */
167949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
177949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonpackage com.android.apps.tag.message;
187949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
19081de56bfdd18f47025ef7af85b45592db244233Nick Kralevichimport com.android.apps.tag.record.ImageRecord;
2046793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevichimport com.android.apps.tag.record.MimeRecord;
217949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.ParsedNdefRecord;
227949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.SmartPoster;
237949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.TextRecord;
2407b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parksimport com.android.apps.tag.record.UnknownRecord;
257949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.UriRecord;
2640d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parksimport com.android.apps.tag.record.VCardRecord;
27c44565157238598ce702102db678c5d048be131cNick Kralevich
28c44565157238598ce702102db678c5d048be131cNick Kralevichimport android.nfc.NdefMessage;
29c44565157238598ce702102db678c5d048be131cNick Kralevichimport android.nfc.NdefRecord;
307949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
317949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport java.util.ArrayList;
327949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport java.util.List;
337949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
347949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton/**
357949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Utility class for creating {@link ParsedNdefMessage}s.
367949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton */
377949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonpublic class NdefMessageParser {
387949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
397949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    // Utility class
407949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    private NdefMessageParser() { }
417949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
427949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    /** Parse an NdefMessage */
437949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    public static ParsedNdefMessage parse(NdefMessage message) {
44a6855221fb6e5c6c19d31283a18ced44cccdf442Jason parks        return new ParsedNdefMessage(getRecords(message));
457949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    }
467949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton
477949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    public static List<ParsedNdefRecord> getRecords(NdefMessage message) {
485e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich        return getRecords(message.getRecords());
495e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich    }
505e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich
515e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich    public static List<ParsedNdefRecord> getRecords(NdefRecord[] records) {
527949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton        List<ParsedNdefRecord> elements = new ArrayList<ParsedNdefRecord>();
535e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich        for (NdefRecord record : records) {
54116871653662979554a7326991ba4fd599ac44ffNick Pelly            if (SmartPoster.isPoster(record)) {
55116871653662979554a7326991ba4fd599ac44ffNick Pelly                elements.add(SmartPoster.parse(record));
56116871653662979554a7326991ba4fd599ac44ffNick Pelly            } else if (UriRecord.isUri(record)) {
577949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton                elements.add(UriRecord.parse(record));
587949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton            } else if (TextRecord.isText(record)) {
597949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton                elements.add(TextRecord.parse(record));
60081de56bfdd18f47025ef7af85b45592db244233Nick Kralevich            } else if (ImageRecord.isImage(record)) {
61081de56bfdd18f47025ef7af85b45592db244233Nick Kralevich                elements.add(ImageRecord.parse(record));
6240d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parks            } else if (VCardRecord.isVCard(record)) {
6340d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parks                elements.add(VCardRecord.parse(record));
6446793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevich            } else if (MimeRecord.isMime(record)) {
6546793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevich                elements.add(MimeRecord.parse(record));
6607b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parks            } else {
6707b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parks                elements.add(new UnknownRecord());
687949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton            }
697949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton        }
707949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton        return elements;
717949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton    }
727949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton}
73