1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software. 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.workgroup.ext.macros; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.ArrayList; 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Collection; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Collections; 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Iterator; 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.List; 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * MacroGroup datamodel. 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class MacroGroup { 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private List<Macro> macros; 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private List<MacroGroup> macroGroups; 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // Define MacroGroup 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String title; 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public MacroGroup() { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macros = new ArrayList<Macro>(); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macroGroups = new ArrayList<MacroGroup>(); 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void addMacro(Macro macro) { 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macros.add(macro); 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void removeMacro(Macro macro) { 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macros.remove(macro); 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Macro getMacroByTitle(String title) { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Collection<Macro> col = Collections.unmodifiableList(macros); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Iterator<Macro> iter = col.iterator(); 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen while (iter.hasNext()) { 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Macro macro = (Macro)iter.next(); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (macro.getTitle().equalsIgnoreCase(title)) { 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return macro; 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return null; 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void addMacroGroup(MacroGroup group) { 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macroGroups.add(group); 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void removeMacroGroup(MacroGroup group) { 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen macroGroups.remove(group); 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Macro getMacro(int location) { 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return (Macro)macros.get(location); 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public MacroGroup getMacroGroupByTitle(String title) { 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Collection<MacroGroup> col = Collections.unmodifiableList(macroGroups); 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Iterator<MacroGroup> iter = col.iterator(); 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen while (iter.hasNext()) { 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen MacroGroup group = (MacroGroup)iter.next(); 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (group.getTitle().equalsIgnoreCase(title)) { 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return group; 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return null; 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public MacroGroup getMacroGroup(int location) { 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return (MacroGroup)macroGroups.get(location); 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public List<Macro> getMacros() { 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return macros; 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setMacros(List<Macro> macros) { 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.macros = macros; 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public List<MacroGroup> getMacroGroups() { 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return macroGroups; 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setMacroGroups(List<MacroGroup> macroGroups) { 106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.macroGroups = macroGroups; 107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getTitle() { 110d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return title; 111d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 112d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 113d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setTitle(String title) { 114d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.title = title; 115d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 116d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 117d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 118d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 119d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<macrogroup>"); 120d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<title>" + getTitle() + "</title>"); 121d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<macros>"); 122d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen for (Macro macro : getMacros()) 123d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 124d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<macro>"); 125d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<title>" + macro.getTitle() + "</title>"); 126d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<type>" + macro.getType() + "</type>"); 127d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<description>" + macro.getDescription() + "</description>"); 128d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<response>" + macro.getResponse() + "</response>"); 129d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</macro>"); 130d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 131d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</macros>"); 132d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 133d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getMacroGroups().size() > 0) { 134d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<macroGroups>"); 135d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen for (MacroGroup groups : getMacroGroups()) { 136d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(groups.toXML()); 137d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 138d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</macroGroups>"); 139d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 140d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</macrogroup>"); 141d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 142d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 143d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 144