01: /*
02: * <copyright>
03: *
04: * Copyright 2000-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.tools.csmart.core.property.name;
28:
29: import java.io.Serializable;
30:
31: /**
32: * The interface to the name of a configurable component.
33: **/
34: public interface CompositeName extends Comparable, Serializable {
35: /**
36: * Get the number of elements of the name.
37: * @return the number elements of the name
38: **/
39: int size();
40:
41: /**
42: * Get the n-th element of the name
43: * @param n the element index
44: * @return the Name of the selected element
45: **/
46: CompositeName get(int n);
47:
48: /**
49: * Get all but the last element of the name
50: * @return the name minus the last element
51: */
52: CompositeName getPrefix();
53:
54: /**
55: * Get the first n elements of the name.
56: * @return a CompositeName which is the first n elements of the name
57: */
58: CompositeName getPrefix(int n);
59:
60: /**
61: * Get the last element of the name
62: * @return the Name of the selected element
63: **/
64: CompositeName last();
65:
66: /**
67: * Test if this name ends with the given name
68: * @param name the name to compare to
69: * @return true if the final elements of this name are equal to
70: * the elements of the given name
71: **/
72: boolean endsWith(CompositeName name);
73:
74: /**
75: * Test if this name starts with the given name
76: * @param name the name to compare to
77: * @return true if the initial elements of this name are equal to
78: * the elements of the given name
79: **/
80: boolean startsWith(CompositeName name);
81:
82: /**
83: * Test two names for equality. Names may be of different classes
84: * as long as they are equivalent
85: * @param o Object to be compared with. Must be a CompositeName.
86: **/
87: boolean equals(Object o);
88:
89: /**
90: * Flush any information cached about this name, presumably because the
91: * prefix has changed in some way.
92: **/
93: void decache();
94:
95: }
|