1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-12-06 02:51:11 +01:00

Adding workgroup API (SMACK-185).

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@7400 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Matt Tucker 2007-03-07 23:38:36 +00:00 committed by matt
parent 939feb9017
commit fe545abeae
64 changed files with 9744 additions and 0 deletions

View file

@ -0,0 +1,68 @@
/**
* $Revision$
* $Date$
*
* Copyright 2003-2007 Jive Software.
*
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.smackx.workgroup.ext.macros;
/**
* Macro datamodel.
*/
public class Macro {
public static final int TEXT = 0;
public static final int URL = 1;
public static final int IMAGE = 2;
private String title;
private String description;
private String response;
private int type;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}

View file

@ -0,0 +1,116 @@
/**
* $Revision$
* $Date$
*
* Copyright 2003-2007 Jive Software.
*
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.smackx.workgroup.ext.macros;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* MacroGroup datamodel.
*/
public class MacroGroup {
private List macros;
private List macroGroups;
// Define MacroGroup
private String title;
public MacroGroup() {
macros = new ArrayList();
macroGroups = new ArrayList();
}
public void addMacro(Macro macro) {
macros.add(macro);
}
public void removeMacro(Macro macro) {
macros.remove(macro);
}
public Macro getMacroByTitle(String title) {
Collection col = Collections.unmodifiableList(macros);
Iterator iter = col.iterator();
while (iter.hasNext()) {
Macro macro = (Macro)iter.next();
if (macro.getTitle().equalsIgnoreCase(title)) {
return macro;
}
}
return null;
}
public void addMacroGroup(MacroGroup group) {
macroGroups.add(group);
}
public void removeMacroGroup(MacroGroup group) {
macroGroups.remove(group);
}
public Macro getMacro(int location) {
return (Macro)macros.get(location);
}
public MacroGroup getMacroGroupByTitle(String title) {
Collection col = Collections.unmodifiableList(macroGroups);
Iterator iter = col.iterator();
while (iter.hasNext()) {
MacroGroup group = (MacroGroup)iter.next();
if (group.getTitle().equalsIgnoreCase(title)) {
return group;
}
}
return null;
}
public MacroGroup getMacroGroup(int location) {
return (MacroGroup)macroGroups.get(location);
}
public List getMacros() {
return macros;
}
public void setMacros(List macros) {
this.macros = macros;
}
public List getMacroGroups() {
return macroGroups;
}
public void setMacroGroups(List macroGroups) {
this.macroGroups = macroGroups;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

View file

@ -0,0 +1,144 @@
/**
* $Revision$
* $Date$
*
* Copyright 2003-2007 Jive Software.
*
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.smackx.workgroup.ext.macros;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.util.StringUtils;
import org.xmlpull.v1.XmlPullParser;
/**
* Macros iq is responsible for handling global and personal macros in the a Live Assistant
* Workgroup.
*/
public class Macros extends IQ {
private MacroGroup rootGroup;
private boolean personal;
private MacroGroup personalMacroGroup;
private static ClassLoader cl;
public static void setClassLoader(ClassLoader cloader) {
cl = cloader;
}
public MacroGroup getRootGroup() {
return rootGroup;
}
public void setRootGroup(MacroGroup rootGroup) {
this.rootGroup = rootGroup;
}
public boolean isPersonal() {
return personal;
}
public void setPersonal(boolean personal) {
this.personal = personal;
}
public MacroGroup getPersonalMacroGroup() {
return personalMacroGroup;
}
public void setPersonalMacroGroup(MacroGroup personalMacroGroup) {
this.personalMacroGroup = personalMacroGroup;
}
/**
* Element name of the packet extension.
*/
public static final String ELEMENT_NAME = "macros";
/**
* Namespace of the packet extension.
*/
public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup";
public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
buf.append("<").append(ELEMENT_NAME).append(" xmlns=\"").append(NAMESPACE).append("\">");
if (isPersonal()) {
buf.append("<personal>true</personal>");
}
// TODO: REMOVE XSTREAM
// if (getPersonalMacroGroup() != null) {
// final XStream xstream = new XStream();
// xstream.alias("macro", Macro.class);
// xstream.alias("macrogroup", MacroGroup.class);
//
// if (cl != null) {
// xstream.setClassLoader(cl);
// }
// String persitedGroup = StringUtils.escapeForXML(xstream.toXML(getPersonalMacroGroup()));
// buf.append("<personalMacro>").append(persitedGroup).append("</personalMacro>");
// }
buf.append("</").append(ELEMENT_NAME).append("> ");
return buf.toString();
}
/**
* An IQProvider for Macro packets.
*
* @author Derek DeMoro
*/
public static class InternalProvider implements IQProvider {
public InternalProvider() {
super();
}
public IQ parseIQ(XmlPullParser parser) throws Exception {
Macros macroGroup = new Macros();
boolean done = false;
while (!done) {
int eventType = parser.next();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("model")) {
String macros = parser.nextText();
// TODO: REMOVE XSTREAM
// XStream xstream = new XStream();
// if(cl != null){
// xstream.setClassLoader(cl);
// }
// xstream.alias("macro", Macro.class);
// xstream.alias("macrogroup", MacroGroup.class);
// MacroGroup group = (MacroGroup)xstream.fromXML(macros);
// macroGroup.setRootGroup(group);
}
}
else if (eventType == XmlPullParser.END_TAG) {
if (parser.getName().equals(ELEMENT_NAME)) {
done = true;
}
}
}
return macroGroup;
}
}
}