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