001 package org.mesopotamia.lang.java; 002 003 import java.util.List; 004 005 import org.mesopotamia.MesopotamiaException; 006 import org.mesopotamia.NodeData; 007 import org.mesopotamia.RepositoryLanguage; 008 import org.mesopotamia.Scan; 009 import org.w3c.dom.Element; 010 011 import biz.hammurapi.util.CollectionVisitable; 012 import biz.hammurapi.util.Visitor; 013 014 public class CompilationUnit extends JavaLanguageElement { 015 016 public CompilationUnit(NodeData xData, Class<?> context, Scan scan, 017 RepositoryLanguage language, Object environment) throws MesopotamiaException { 018 super(xData, context, scan, language, environment); 019 020 // Select attributes 021 PackageName = selectSingleElementText(PackageDefinition.class, "PACKAGE_DEF"); 022 Imports = selectText(ImportDefinition.class, "IMPORT|STATIC_IMPORT"); 023 Types = select(TypeDefinition.class, "#org.mesopotamia.lang.java.TypeDefinition"); 024 025 } 026 027 public void toDom(Element holder) { 028 super.toDom(holder); 029 030 // Serialize attributes 031 setAttribute(holder, "PackageName", PackageName); 032 setElement(holder, "Imports", Imports); 033 setElement(holder, "Types", Types); 034 } 035 036 // Attributes 037 private String PackageName; 038 039 private List<String> Imports; 040 041 private List<TypeDefinition> Types; 042 043 // Accessors 044 public String getPackageName() { 045 return PackageName; 046 } 047 048 public List<String> getImports() { 049 return Imports; 050 } 051 052 public List<TypeDefinition> getTypes() { 053 return Types; 054 } 055 056 protected void acceptChildren(Visitor visitor) { 057 super.acceptChildren(visitor); 058 // Visiting non-text attributes 059 new CollectionVisitable(Types, false).accept(visitor); 060 } 061 062 }