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