17531be7774769c84b499b1de5dc46da3a9468316Marc Blank/* Copyright (C) 2010 The Android Open Source Project.
27531be7774769c84b499b1de5dc46da3a9468316Marc Blank *
37531be7774769c84b499b1de5dc46da3a9468316Marc Blank * Licensed under the Apache License, Version 2.0 (the "License");
47531be7774769c84b499b1de5dc46da3a9468316Marc Blank * you may not use this file except in compliance with the License.
57531be7774769c84b499b1de5dc46da3a9468316Marc Blank * You may obtain a copy of the License at
67531be7774769c84b499b1de5dc46da3a9468316Marc Blank *
77531be7774769c84b499b1de5dc46da3a9468316Marc Blank *      http://www.apache.org/licenses/LICENSE-2.0
87531be7774769c84b499b1de5dc46da3a9468316Marc Blank *
97531be7774769c84b499b1de5dc46da3a9468316Marc Blank * Unless required by applicable law or agreed to in writing, software
107531be7774769c84b499b1de5dc46da3a9468316Marc Blank * distributed under the License is distributed on an "AS IS" BASIS,
117531be7774769c84b499b1de5dc46da3a9468316Marc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127531be7774769c84b499b1de5dc46da3a9468316Marc Blank * See the License for the specific language governing permissions and
137531be7774769c84b499b1de5dc46da3a9468316Marc Blank * limitations under the License.
147531be7774769c84b499b1de5dc46da3a9468316Marc Blank */
157531be7774769c84b499b1de5dc46da3a9468316Marc Blank
167531be7774769c84b499b1de5dc46da3a9468316Marc Blankpackage com.android.exchange.adapter;
177531be7774769c84b499b1de5dc46da3a9468316Marc Blank
18110837ebff288a75f9bda067c38e2c46797d99b5Alon Albertimport com.android.exchange.Eas;
1962c287af3bed45818accf595c56879ad5c57aaf9Yu Ping Huimport com.android.mail.utils.LogUtils;
207531be7774769c84b499b1de5dc46da3a9468316Marc Blank
217531be7774769c84b499b1de5dc46da3a9468316Marc Blankimport java.io.IOException;
227531be7774769c84b499b1de5dc46da3a9468316Marc Blankimport java.io.InputStream;
237531be7774769c84b499b1de5dc46da3a9468316Marc Blank
247531be7774769c84b499b1de5dc46da3a9468316Marc Blank/**
257531be7774769c84b499b1de5dc46da3a9468316Marc Blank * Parse the result of a MeetingRequest command.
267531be7774769c84b499b1de5dc46da3a9468316Marc Blank */
277531be7774769c84b499b1de5dc46da3a9468316Marc Blankpublic class MeetingResponseParser extends Parser {
28110837ebff288a75f9bda067c38e2c46797d99b5Alon Albert    private static final String TAG = Eas.LOG_TAG;
297531be7774769c84b499b1de5dc46da3a9468316Marc Blank
3062c287af3bed45818accf595c56879ad5c57aaf9Yu Ping Hu    public MeetingResponseParser(final InputStream in) throws IOException {
317531be7774769c84b499b1de5dc46da3a9468316Marc Blank        super(in);
327531be7774769c84b499b1de5dc46da3a9468316Marc Blank    }
337531be7774769c84b499b1de5dc46da3a9468316Marc Blank
3462c287af3bed45818accf595c56879ad5c57aaf9Yu Ping Hu    private void parseResult() throws IOException {
357531be7774769c84b499b1de5dc46da3a9468316Marc Blank        while (nextTag(Tags.MREQ_RESULT) != END) {
367531be7774769c84b499b1de5dc46da3a9468316Marc Blank            if (tag == Tags.MREQ_STATUS) {
377531be7774769c84b499b1de5dc46da3a9468316Marc Blank                int status = getValueInt();
387531be7774769c84b499b1de5dc46da3a9468316Marc Blank                if (status != 1) {
393eef378426c7c88608f53f5a268baed40259ccf6Alon Albert                    LogUtils.w(TAG, "Error in meeting response: %d", status);
407531be7774769c84b499b1de5dc46da3a9468316Marc Blank                }
417531be7774769c84b499b1de5dc46da3a9468316Marc Blank            } else if (tag == Tags.MREQ_CAL_ID) {
423eef378426c7c88608f53f5a268baed40259ccf6Alon Albert                LogUtils.d(TAG, "Meeting response calender id: %s", getValue());
437531be7774769c84b499b1de5dc46da3a9468316Marc Blank            } else {
447531be7774769c84b499b1de5dc46da3a9468316Marc Blank                skipTag();
457531be7774769c84b499b1de5dc46da3a9468316Marc Blank            }
467531be7774769c84b499b1de5dc46da3a9468316Marc Blank        }
477531be7774769c84b499b1de5dc46da3a9468316Marc Blank    }
487531be7774769c84b499b1de5dc46da3a9468316Marc Blank
497531be7774769c84b499b1de5dc46da3a9468316Marc Blank    @Override
507531be7774769c84b499b1de5dc46da3a9468316Marc Blank    public boolean parse() throws IOException {
517531be7774769c84b499b1de5dc46da3a9468316Marc Blank        boolean res = false;
527531be7774769c84b499b1de5dc46da3a9468316Marc Blank        if (nextTag(START_DOCUMENT) != Tags.MREQ_MEETING_RESPONSE) {
537531be7774769c84b499b1de5dc46da3a9468316Marc Blank            throw new IOException();
547531be7774769c84b499b1de5dc46da3a9468316Marc Blank        }
557531be7774769c84b499b1de5dc46da3a9468316Marc Blank        while (nextTag(START_DOCUMENT) != END_DOCUMENT) {
567531be7774769c84b499b1de5dc46da3a9468316Marc Blank            if (tag == Tags.MREQ_RESULT) {
577531be7774769c84b499b1de5dc46da3a9468316Marc Blank                parseResult();
587531be7774769c84b499b1de5dc46da3a9468316Marc Blank            } else {
597531be7774769c84b499b1de5dc46da3a9468316Marc Blank                skipTag();
607531be7774769c84b499b1de5dc46da3a9468316Marc Blank            }
617531be7774769c84b499b1de5dc46da3a9468316Marc Blank        }
627531be7774769c84b499b1de5dc46da3a9468316Marc Blank        return res;
637531be7774769c84b499b1de5dc46da3a9468316Marc Blank    }
647531be7774769c84b499b1de5dc46da3a9468316Marc Blank}
657531be7774769c84b499b1de5dc46da3a9468316Marc Blank
66