/** * Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET * (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije * informacijske družbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE * COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVAÇÃO, SA (PTIN), IBM Corp., * INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM * ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC)) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following * conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.societies.personalisation.preference.api.model; import java.io.Serializable; import java.util.Enumeration; import javax.swing.tree.DefaultMutableTreeNode; import org.societies.api.internal.personalisation.model.IOutcome; /** * @author Elizabeth * @version 1.0 * @created 08-Nov-2011 14:02:57 */ public class PreferenceTreeNode extends DefaultMutableTreeNode implements IPreference, Serializable { public PreferenceTreeNode(){ super(); } public PreferenceTreeNode(IPreferenceCondition pc){ super(pc); } public PreferenceTreeNode(IOutcome po){ super(po,false); } public IPreferenceOutcome getOutcome() { Object obj = this.getUserObject(); if (obj instanceof IOutcome){ return (IPreferenceOutcome) obj; } return null; } public IPreferenceCondition getCondition() { Object obj = this.getUserObject(); if (obj instanceof IPreferenceCondition){ return (IPreferenceCondition) obj; } return null; } public boolean isBranch() { Object obj = this.getUserObject(); if (obj==null){ return true; } if (obj instanceof IPreferenceCondition){ return true; } return false; } public boolean isLeaf(){ Object obj = this.getUserObject(); if (obj instanceof IPreferenceCondition){ return false; } if (obj==null){ return false; } return true; } public Object[] getUserObjectPath(){ return super.getUserObjectPath(); } public void add(IPreference p) { super.add(p); } public void remove(IPreference p) { super.remove(p); } public Enumeration<IPreference> depthFirstEnumeration(){ return super.depthFirstEnumeration(); } public Enumeration<IPreference> breadthFirstEnumeration(){ return super.breadthFirstEnumeration(); } public IPreference getRoot(){ return (IPreference) super.getRoot(); } public int getLevel(){ return super.getLevel(); } public int getDepth(){ return super.getDepth(); } /** * @see DefaultMutableTreeNode#preorderEnumeration() * @return an enumeration of IPreference node objects traversed in pre-order */ public Enumeration<IPreference> preorderEnumeration(){ return super.preorderEnumeration(); } /** * @see DefaultMutableTreeNode#postorderEnumeration() * @return an enumeration of IPreference node objects traversed in post-order */ public Enumeration<IPreference> postorderEnumeration(){ return super.postorderEnumeration(); } /* public String toString(){ String str = ""; if (this.isLeaf()){ String tab = "\n"; for (int i = 0; i<this.getLevel(); i++){ tab = tab.concat("\t"); } return tab.concat(this.getOutcome().toString()); }else{ String tab = "\n"; if (null!=this.userObject){ for (int i=0; i<this.getLevel(); i++){ str = str.concat("\t"); } str = str + this.userObject.toString()+"\n"; } Enumeration<IPreference> e = this.children(); while (e.hasMoreElements()){ str = str+e.nextElement().toString()+"\n"; } return str; } }*/ public String toString(){ if (this.userObject==null){ return "root"; } return this.getUserObject().toString(); } public String toTreeString(){ String str = ""; Enumeration<IPreference> e = this.preorderEnumeration(); while (e.hasMoreElements()){ IPreference p = e.nextElement(); for (int i = 0; i<p.getLevel(); i++){ str = str.concat("\t"); } str = str.concat(p.toString()+"\n"); } return str; } }