Newer
Older
DesignCraft / src / main / java / ast / CompilationUnit.java
@c-okada c-okada 6 days ago 1 KB DependencyInversionを追加
package ast;

import java.util.ArrayList;
import java.util.List;

public class CompilationUnit extends ASTNode {
	private String fileName = null;
	private List<ImportDeclaration> imports = new ArrayList<>();
	private List<TypeDeclaration> types = new ArrayList<>();
	private List<InterfaceDeclaration> interfaces = new ArrayList<>();

	public CompilationUnit(TypeDeclaration type) {
		types.add(type);
		if(type.getTypeName().contains("<"))
			fileName = type.getTypeName().split("<")[0] + ".java";
		else
			fileName = type.getTypeName() + ".java";
	}

	public CompilationUnit(InterfaceDeclaration interfaceDeclaration) {
		interfaces.add(interfaceDeclaration);
		fileName = interfaceDeclaration.getTypeName() + ".java";
	}

	public List<ImportDeclaration> imports() {
		return imports;
	}
	
	public List<TypeDeclaration> types() {
		return types;
	}
	
	public void addImport(ImportDeclaration imp) {
		imports.add(imp);
	}
	
	public void addType(TypeDeclaration type) {
		types.add(type);
	}

	public List<InterfaceDeclaration> interfaces() {
		return interfaces;
	}

	public void addInterface(InterfaceDeclaration interfaceDeclaration) {
		interfaces.add(interfaceDeclaration);
	}

	public String getFileName() {
		return fileName;
	}
	
	public String toString() {
		String result = "";
		for (ImportDeclaration imp: imports) {
			result += imp.toString();
		}
		result +="\n";
		for (TypeDeclaration type: types) {
			result += type.toString();
		}
		for (InterfaceDeclaration iDec: interfaces) {
			result += iDec.toString();
		}
		return result;
	}
}