source: osm/applications/editors/josm/plugins/opendata/includes/org/jdom/Parent.java@ 28000

Last change on this file since 28000 was 28000, checked in by donvip, 12 years ago

Import new "opendata" JOSM plugin

File size: 4.9 KB
Line 
1/*--
2
3 $Id: Parent.java,v 1.13 2007/11/10 05:28:59 jhunter Exp $
4
5 Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin.
6 All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions
10 are met:
11
12 1. Redistributions of source code must retain the above copyright
13 notice, this list of conditions, and the following disclaimer.
14
15 2. Redistributions in binary form must reproduce the above copyright
16 notice, this list of conditions, and the disclaimer that follows
17 these conditions in the documentation and/or other materials
18 provided with the distribution.
19
20 3. The name "JDOM" must not be used to endorse or promote products
21 derived from this software without prior written permission. For
22 written permission, please contact <request_AT_jdom_DOT_org>.
23
24 4. Products derived from this software may not be called "JDOM", nor
25 may "JDOM" appear in their name, without prior written permission
26 from the JDOM Project Management <request_AT_jdom_DOT_org>.
27
28 In addition, we request (but do not require) that you include in the
29 end-user documentation provided with the redistribution and/or in the
30 software itself an acknowledgement equivalent to the following:
31 "This product includes software developed by the
32 JDOM Project (http://www.jdom.org/)."
33 Alternatively, the acknowledgment may be graphical using the logos
34 available at http://www.jdom.org/images/logos.
35
36 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39 DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
40 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 SUCH DAMAGE.
48
49 This software consists of voluntary contributions made by many
50 individuals on behalf of the JDOM Project and was originally
51 created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
52 Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
53 on the JDOM Project, please see <http://www.jdom.org/>.
54
55 */
56
57package org.jdom;
58
59import java.io.Serializable;
60import java.util.Iterator;
61import java.util.List;
62
63/**
64 * Superclass for JDOM objects which are allowed to contain
65 * {@link Content} content.
66 *
67 * @see org.jdom.Content
68 * @see org.jdom.Document
69 * @see org.jdom.Element
70 *
71 * @author Bradley S. Huffman
72 * @author Jason Hunter
73 * @version $Revision: 1.13 $, $Date: 2007/11/10 05:28:59 $
74 */
75public interface Parent extends Cloneable, Serializable {
76
77 /**
78 * Returns the full content of this parent as a {@link java.util.List}
79 * which contains objects of type {@link Content}. The returned list is
80 * <b>"live"</b> and in document order. Any modifications
81 * to it affect the element's actual contents. Modifications are checked
82 * for conformance to XML 1.0 rules.
83 * <p>
84 * Sequential traversal through the List is best done with an Iterator
85 * since the underlying implement of {@link java.util.List#size} may
86 * require walking the entire list and indexed lookups may require
87 * starting at the beginning each time.
88 *
89 * @return a list of the content of the parent
90 * @throws IllegalStateException if parent is a Document
91 * and the root element is not set
92 */
93 List getContent();
94
95 /**
96 * Removes a single child node from the content list.
97 *
98 * @param child child to remove
99 * @return whether the removal occurred
100 */
101 boolean removeContent(Content child);
102
103 /**
104 * Obtain a deep, unattached copy of this parent and it's children.
105 *
106 * @return a deep copy of this parent and it's children.
107 */
108 Object clone();
109
110 /**
111 * Returns an {@link java.util.Iterator} that walks over all descendants
112 * in document order.
113 *
114 * @return an iterator to walk descendants
115 */
116 Iterator getDescendants();
117
118 /**
119 * Return this parent's parent, or null if this parent is currently
120 * not attached to another parent. This is the same method as in Content but
121 * also added to Parent to allow more easy up-the-tree walking.
122 *
123 * @return this parent's parent or null if none
124 */
125 Parent getParent();
126
127 /**
128 * Return this parent's owning document or null if the branch containing
129 * this parent is currently not attached to a document.
130 *
131 * @return this child's owning document or null if none
132 */
133 Document getDocument();
134
135}
Note: See TracBrowser for help on using the repository browser.