1be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu/*
2be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * Copyright (C) 2013 The Android Open Source Project
3be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu *
4be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * Licensed under the Apache License, Version 2.0 (the "License");
5be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * you may not use this file except in compliance with the License.
6be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * You may obtain a copy of the License at
7be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu *
8be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu *      http://www.apache.org/licenses/LICENSE-2.0
9be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu *
10be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * Unless required by applicable law or agreed to in writing, software
11be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * distributed under the License is distributed on an "AS IS" BASIS,
12be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * See the License for the specific language governing permissions and
14be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * limitations under the License.
15be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu */
16be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
17be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hupackage com.android.exchange.eas;
18be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
19be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport com.android.exchange.EasResponse;
20be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport com.android.exchange.adapter.Serializer;
21be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport com.android.exchange.adapter.SettingsParser;
22be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport com.android.exchange.adapter.Tags;
23be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
24be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport org.apache.http.HttpEntity;
25be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
26be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Huimport java.io.IOException;
27be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
28be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu/**
29be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * Performs an Exchange Settings request to the server to communicate our device information.
30be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * While the settings command can be used for all sorts of things, we currently only use it to
31be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * notify the server of our device information after a Provision command, and only for certain
32be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * versions of the protocol (12.1 and 14.0; versions after 14.0 instead specify the device info
33be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * in the provision command).
34be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu *
35be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * See http://msdn.microsoft.com/en-us/library/ee202944(v=exchg.80).aspx for details on the Settings
36be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * command in general.
37be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * See http://msdn.microsoft.com/en-us/library/gg675476(v=exchg.80).aspx for details on the
38be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu * requirement for communicating device info for some versions of Exchange.
39be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu */
40be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hupublic class EasSettings extends EasOperation {
41be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
42be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
43be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    /** Result code indicating the Settings command succeeded. */
44be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    private static final int RESULT_OK = 1;
45be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
46be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    public EasSettings(final EasOperation parentOperation) {
47be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        super(parentOperation);
48be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    }
49be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
508c95506ad96f5990d5e4d4ca86b05ec95dd4b1d6Yu Ping Hu    public boolean sendDeviceInformation() {
518c95506ad96f5990d5e4d4ca86b05ec95dd4b1d6Yu Ping Hu        return performOperation() == RESULT_OK;
52be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    }
53be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
54be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    @Override
55be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    protected String getCommand() {
56be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        return "Settings";
57be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    }
58be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
59be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    @Override
60be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    protected HttpEntity getRequestEntity() throws IOException {
61be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        final Serializer s = new Serializer();
62be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        s.start(Tags.SETTINGS_SETTINGS);
63a09e6cc2e8fca144de4d0b69f129b177f4a3219bAnthony Lee        addDeviceInformationToSerializer(s);
64be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        s.end().done();
65be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        return makeEntity(s);
66be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    }
67be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
68be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    @Override
698c95506ad96f5990d5e4d4ca86b05ec95dd4b1d6Yu Ping Hu    protected int handleResponse(final EasResponse response) throws IOException {
70be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu        return new SettingsParser(response.getInputStream()).parse()
71be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu                ? RESULT_OK : RESULT_OTHER_FAILURE;
72be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu    }
73be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu
74be22ff8b8b3aa6057de165b76da433cabad4dcfdYu Ping Hu}
75