/* * Copyright 2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jcommons.file.java.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.jcommons.io.MessageUtils; import org.jcommons.io.PrintUtils; /** * @author Jeff Butler * */ public class TopLevelEnumeration extends InnerEnum implements CompilationUnit { private Set<FullyQualifiedJavaType> importedTypes; private Set<String> staticImports; private List<String> fileCommentLines; /** * @param type */ public TopLevelEnumeration(FullyQualifiedJavaType type) { super(type); importedTypes = new TreeSet<FullyQualifiedJavaType>(); fileCommentLines = new ArrayList<String>(); staticImports = new TreeSet<String>(); } public String getFormattedContent() { StringBuilder sb = new StringBuilder(); for (String fileCommentLine : fileCommentLines) { sb.append(fileCommentLine); PrintUtils.newLine(sb); } if (getType().getPackageName() != null && getType().getPackageName().length() > 0) { sb.append("package "); //$NON-NLS-1$ sb.append(getType().getPackageName()); sb.append(';'); PrintUtils.newLine(sb); PrintUtils.newLine(sb); } for (String staticImport : staticImports) { sb.append("import static "); //$NON-NLS-1$ sb.append(staticImport); sb.append(';'); PrintUtils.newLine(sb); } if (staticImports.size() > 0) { PrintUtils.newLine(sb); } Set<String> importStrings = PrintUtils.calculateImports(importedTypes); for (String importString : importStrings) { sb.append(importString); PrintUtils.newLine(sb); } if (importStrings.size() > 0) { PrintUtils.newLine(sb); } sb.append(super.getFormattedContent(0)); return sb.toString(); } public Set<FullyQualifiedJavaType> getImportedTypes() { return Collections.unmodifiableSet(importedTypes); } public FullyQualifiedJavaType getSuperClass() { throw new UnsupportedOperationException(MessageUtils.getString("RuntimeError.11")); //$NON-NLS-1$ } public boolean isJavaInterface() { return false; } public boolean isJavaEnumeration() { return true; } public void addImportedType(FullyQualifiedJavaType importedType) { if (importedType.isExplicitlyImported() && !importedType.getPackageName().equals( getType().getPackageName())) { importedTypes.add(importedType); } } public void addFileCommentLine(String commentLine) { fileCommentLines.add(commentLine); } public List<String> getFileCommentLines() { return fileCommentLines; } public void addImportedTypes(Set<FullyQualifiedJavaType> importedTypes) { this.importedTypes.addAll(importedTypes); } public Set<String> getStaticImports() { return staticImports; } public void addStaticImport(String staticImport) { staticImports.add(staticImport); } public void addStaticImports(Set<String> staticImports) { this.staticImports.addAll(staticImports); } }