package ru.csu.stan.java.classgen.util; import java.util.HashSet; import java.util.Set; /** * Компилируемый файл с точки зрения хранимых в нем типов. * Необходим для хранения импортов. * * @author mz * */ public class CompilationUnit { /** Импорты в файле */ private Set<String> imports = new HashSet<String>(); /** Имена классов в файле */ private Set<String> classes = new HashSet<String>(); /** Имя пакета в файле */ private String packageName; /** Имя файла */ private String filename; /** * Получение имени текущего файла. * @return */ public String getFilename() { return filename; } /** * Установка значения имени текущего файла. * @param filename */ public void setFilename(String filename) { this.filename = filename; } /** * Получение имени пакета в текущем файле. * @return */ public String getPackageName() { return packageName; } /** * Установка имени пакета в текущем файле. * @param packageName */ public void setPackageName(String packageName) { this.packageName = packageName; } /** * Добавление в файл импорта. * @param importName */ public void addImport(String importName){ imports.add(importName); } /** * Добавление в файл имени класса, описанного там. * @param className */ public void addClass(String className){ classes.add(className); } /** * Получение всех "импортов со звездочкой", то есть, импортов пакета целиком. * @return */ public Set<String> getStarImports(){ Set<String> result = new HashSet<String>(); for (String importName : imports) if (importName.indexOf('*') > 0) result.add(importName); return result; } /** * Получение списка классов, определенных в файле. * @return */ public Set<String> getClasses(){ return classes; } /** * Проверка на то, что в файле имеется указанный класс. * @param className * @return */ public boolean hasClass(String className){ return classes.contains(className); } /** * Получение списка импортов в файле. * @return */ public Set<String> getImports(){ return imports; } }