1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software.
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License.
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS,
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License.
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.workgroup.settings;
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smackx.workgroup.util.ModelUtil;
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.IQ;
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.provider.IQProvider;
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.xmlpull.v1.XmlPullParser;
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class SearchSettings extends IQ {
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private String forumsLocation;
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private String kbLocation;
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public boolean isSearchEnabled() {
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return ModelUtil.hasLength(getForumsLocation()) && ModelUtil.hasLength(getKbLocation());
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getForumsLocation() {
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return forumsLocation;
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void setForumsLocation(String forumsLocation) {
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.forumsLocation = forumsLocation;
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getKbLocation() {
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return kbLocation;
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void setKbLocation(String kbLocation) {
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.kbLocation = kbLocation;
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public boolean hasKB(){
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return ModelUtil.hasLength(getKbLocation());
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public boolean hasForums(){
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return ModelUtil.hasLength(getForumsLocation());
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Element name of the packet extension.
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final String ELEMENT_NAME = "search-settings";
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Namespace of the packet extension.
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup";
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getChildElementXML() {
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        StringBuilder buf = new StringBuilder();
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append("<").append(ELEMENT_NAME).append(" xmlns=");
70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append('"');
71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append(NAMESPACE);
72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append('"');
73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append("></").append(ELEMENT_NAME).append("> ");
74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return buf.toString();
75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Packet extension provider for AgentStatusRequest packets.
80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static class InternalProvider implements IQProvider {
82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        public IQ parseIQ(XmlPullParser parser) throws Exception {
84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            if (parser.getEventType() != XmlPullParser.START_TAG) {
85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new IllegalStateException("Parser not in proper position, or bad XML.");
86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            SearchSettings settings = new SearchSettings();
89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            boolean done = false;
91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            String kb = null;
92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            String forums = null;
93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            while (!done) {
95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                int eventType = parser.next();
96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if ((eventType == XmlPullParser.START_TAG) && ("forums".equals(parser.getName()))) {
97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    forums = parser.nextText();
98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                else if ((eventType == XmlPullParser.START_TAG) && ("kb".equals(parser.getName()))) {
100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    kb = parser.nextText();
101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                else if (eventType == XmlPullParser.END_TAG && "search-settings".equals(parser.getName())) {
103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    done = true;
104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            settings.setForumsLocation(forums);
108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            settings.setKbLocation(kb);
109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            return settings;
110d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
111d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
112d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
113