001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.lib.collab.xmpp.jso.impl.x.address;
043:
044: import org.jabberstudio.jso.JID;
045: import org.jabberstudio.jso.StreamDataFactory;
046: import org.jabberstudio.jso.StreamElement;
047: import org.jabberstudio.jso.StreamObject;
048: import org.jabberstudio.jso.StreamNode;
049: import org.jabberstudio.jso.NSI;
050: import org.jabberstudio.jso.format.DateTimeProfileFormat;
051: import net.outer_planes.jso.ElementNode;
052:
053: import org.netbeans.lib.collab.xmpp.jso.iface.x.address.*;
054:
055: /**
056: * implementation of AMPRule
057: *
058: * @author Jacques Belissent
059: */
060: public class AddressNode extends ElementNode implements Address {
061:
062: public static final NSI ATTRNAME_TYPE = new NSI("type", null);
063: public static final NSI ATTRNAME_DELIVERED = new NSI("delivered",
064: null);
065: public static final NSI ATTRNAME_JID = new NSI("jid", null);
066:
067: /** Creates a new instance of AMPRuleNode */
068: public AddressNode(StreamDataFactory sdf, NSI name) {
069: super (sdf, name);
070: }
071:
072: public AddressNode(StreamDataFactory sdf) {
073: super (sdf, NAME);
074: }
075:
076: protected AddressNode(StreamElement parent, AddressNode base) {
077: super (parent, base);
078: }
079:
080: public void setType(Address.Type type)
081: throws IllegalArgumentException {
082: setAttributeObject(ATTRNAME_TYPE, type);
083: }
084:
085: public void setDelivered(boolean b) throws IllegalArgumentException {
086: setAttributeValue(ATTRNAME_DELIVERED, Boolean.toString(b));
087: }
088:
089: public void setJID(JID jid) throws IllegalArgumentException {
090: setAttributeObject(ATTRNAME_JID, jid);
091: }
092:
093: public JID getJID() {
094: Object val = getAttributeObject(ATTRNAME_JID);
095: JID jid = null;
096:
097: if (val instanceof JID) {
098: jid = (JID) val;
099: } else if (val != null) {
100: try {
101: jid = JID.valueOf(val);
102: setAttributeObject(ATTRNAME_JID, jid);
103: } catch (IllegalArgumentException iae) {
104: }
105: }
106:
107: return jid;
108: }
109:
110: public boolean isDelivered() {
111: String bs = getAttributeValue(ATTRNAME_DELIVERED);
112: return bs != null && new Boolean(bs).booleanValue();
113: }
114:
115: public Address.Type getType() {
116: Address.Type t = null;
117: Object val = getAttributeObject(ATTRNAME_TYPE);
118: if (val instanceof Address.Type) {
119: t = (Address.Type) val;
120: } else if (val != null) {
121: try {
122: //todo t = JID.valueOf(val);
123: setAttributeObject(ATTRNAME_TYPE, t);
124: } catch (IllegalArgumentException iae) {
125: }
126: }
127: return t;
128: }
129:
130: public StreamObject copy(StreamElement parent) {
131: return new AddressNode(parent, this );
132: }
133:
134: public boolean equals(Object o) {
135: if (o instanceof AddressNode) {
136: AddressNode r = (AddressNode) o;
137: if (r.getJID() != null && !r.getJID().equals(getJID()))
138: return false;
139: if (getJID() != null && !getJID().equals(r.getJID()))
140: return false;
141: return true;
142: } else {
143: return false;
144: }
145: }
146:
147: }
|