001/* 002// $Id: //open/util/resgen/src/org/eigenbase/xom/NodeDef.java#4 $ 003// Package org.eigenbase.xom is an XML Object Mapper. 004// Copyright (C) 2005-2008 The Eigenbase Project 005// Copyright (C) 2005-2008 Disruptive Tech 006// Copyright (C) 2005-2008 LucidEra, Inc. 007// Portions Copyright (C) 2001-2005 Kana Software, Inc. and others. 008// 009// This library is free software; you can redistribute it and/or modify it 010// under the terms of the GNU Lesser General Public License as published by the 011// Free Software Foundation; either version 2 of the License, or (at your 012// option) any later version approved by The Eigenbase Project. 013// 014// This library is distributed in the hope that it will be useful, 015// but WITHOUT ANY WARRANTY; without even the implied warranty of 016// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017// GNU Lesser General Public License for more details. 018// 019// You should have received a copy of the GNU Lesser General Public License 020// along with this library; if not, write to the Free Software 021// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 022// 023// jhyde, 11 October, 2001 024*/ 025 026package org.eigenbase.xom; 027import java.io.PrintWriter; 028 029/** 030 * <code>NodeDef</code> represents a node in a parse tree. It is a base class 031 * for {@link ElementDef}, {@link TextDef}, etc. 032 * 033 * @author jhyde 034 * @since 11 October, 2001 035 * @version $Id: //open/util/resgen/src/org/eigenbase/xom/NodeDef.java#4 $ 036 **/ 037public interface NodeDef { 038 039 /** 040 * Returns the name of this node's tag. 041 **/ 042 String getName(); 043 044 /** 045 * Returns the type of this element. 046 * Values are as for {@link DOMWrapper#getType}. 047 */ 048 int getType(); 049 050 /** 051 * Returns the text inside this node. 052 **/ 053 String getText(); 054 055 /** 056 * Returns the children of this node. 057 **/ 058 NodeDef[] getChildren(); 059 060 /** 061 * Outputs this element definition in XML to any XMLOutput. 062 * @param out the XMLOutput class to display the XML 063 **/ 064 void displayXML(XMLOutput out, int indent); 065 066 /** 067 * Outputs this node to any PrintWriter, 068 * in a formatted fashion with automatic indenting. 069 * @param out the PrintWriter to which to write this NodeDef. 070 * @param indent the indentation level for the printout. 071 */ 072 void display(PrintWriter out, int indent); 073 074 /** 075 * Retrieves the {@link DOMWrapper} which was used to create this 076 * node. Only works if this nodes's {@link MetaDef.Element#keepDef} was 077 * true (or, if it is not set, if the default 078 * {@link MetaDef.Model#defaultKeepDef} is true); 079 * otherwise, returns <code>null</code>. 080 * 081 * @return wrapper underlying this node 082 */ 083 DOMWrapper getWrapper(); 084 085 /** 086 * Returns the location of this element in its document. 087 * 088 * @return location of this element, or null if location is not available 089 */ 090 Location getLocation(); 091} 092 093// End NodeDef.java