/* * File : TCPReportBean.java * Created : 17-feb-2003 13:06 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.util.Domable; import edu.xtec.util.DomableBean; import java.lang.reflect.Constructor; import java.util.ArrayList; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.09.10 */ public class TCPReportBean extends DomableBean{ public static final String GET_PROPERTY="get property", GET_PROPERTIES="get_properties", ADD_SESSION="add session", ADD_ACTIVITY="add activity", GET_GROUPS="get groups", GET_USERS="get users", GET_USER_DATA="get user data", GET_GROUP_DATA="get group data", NEW_GROUP="new group", NEW_USER="new user", MULTIPLE="multiple", UNKNOWN_KEY="unknown"; public static final String ERROR="error"; public static final Class[] DOMABLES={ TCPReportBean.class, GroupData.class, UserData.class, ActivityReg.class }; public static final String[] DOMABLE_NAMES={ TCPReportBean.ELEMENT_NAME, GroupData.ELEMENT_NAME, UserData.ELEMENT_NAME, ActivityReg.ELEMENT_NAME }; public static final String SESSION="session", USER="user", KEY="key", CONTEXT="context", TIME="time", PROJECT="project", CODE="code", NUM="num", DEFAULT="default", RESULT="result", GROUP="group", ACTIVITY="activity"; /** Creates a new instance of TCPReportBean */ public TCPReportBean() { super(ERROR); } public TCPReportBean(String id) { super(id); } public TCPReportBean(String id, Domable[] data) { super(id); setData(data); } public TCPReportBean(org.jdom.Element e) throws Exception{ super(ERROR); setProperties(e, null); } public Domable[] getData() throws Exception{ org.jdom.Element[] elements=getElements(); ArrayList<Domable> v=new ArrayList<Domable>(elements.length); for(org.jdom.Element element : elements){ String name=element.getName(); for(int j=0; j<DOMABLES.length; j++){ if(name.equals(DOMABLE_NAMES[j])){ Class<?> cl=DOMABLES[j]; Constructor cons=cl.getConstructor(new Class[]{org.jdom.Element.class}); v.add((Domable)cons.newInstance(new Object[]{element})); break; } } } return v.toArray(new Domable[v.size()]); } public void setData(Domable[] data){ if(data!=null) for(Domable d : data) setData(d); } public void setData(Domable data){ if(data!=null) addElement(data.getJDomElement()); } public Domable getSingleData() throws Exception{ Domable[] dm=getData(); return (dm==null || dm.length<1) ? null : dm[0]; } }