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 026 package org.eigenbase.xom; 027 import 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 **/ 037 public 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