/******************************************************************************* * Copyright (c) 2010 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.hibernate.eclipse.console.test.project; import java.io.IOException; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IField; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; public class SimpleTestProject extends TestProject { public static final String PACKAGE_NAME = "test"; //$NON-NLS-1$ public static final String TYPE_NAME = "TestClass"; //$NON-NLS-1$ public static final String FILE_NAME = "TestClass.java"; //$NON-NLS-1$ public SimpleTestProject() { super("HibernateToolsTestProject"); //$NON-NLS-1$ } public SimpleTestProject(String projectName) { super(projectName); } public String getFullyQualifiedTestClassName(){ return PACKAGE_NAME + "." + TYPE_NAME; //$NON-NLS-1$ } public IType getTestClassType() { IType type = null; try { type = getIJavaProject().findType(getFullyQualifiedTestClassName()); } catch (JavaModelException e) { throw new RuntimeException(e); } return type; } public IField getTestClassField() { return getTestClassType().getField("testField"); //$NON-NLS-1$ } protected void buildProject() throws JavaModelException, CoreException, IOException { super.buildProject(); buildType(buildPackage(PACKAGE_NAME, project, javaProject), FILE_NAME); } private IPackageFragmentRoot buildSourceFolder(IProject project, IJavaProject javaProject) throws CoreException { IFolder folder = project.getFolder(SRC_FOLDER); folder.create(false, true, null); IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(folder); IClasspathEntry[] newEntries = { JavaCore .newSourceEntry(root.getPath()) }; javaProject.setRawClasspath(newEntries, null); return root; } private IPackageFragment buildPackage(String name, IProject project, IJavaProject javaProject) throws CoreException { IPackageFragmentRoot sourceFolder = buildSourceFolder(project, javaProject); return sourceFolder.createPackageFragment(name, false, null); } protected IType buildType(IPackageFragment pack, String cuName) throws JavaModelException { //create empty ICompilationUnit ICompilationUnit cu = pack.createCompilationUnit(cuName, "", false, null); //$NON-NLS-1$ cu.createPackageDeclaration(pack.getElementName(),null); IType type = cu.createType("public class " + TYPE_NAME + " {}",null,false,null); //$NON-NLS-1$//$NON-NLS-2$ type.createField("private String testField;",null,false,null); //$NON-NLS-1$ type.createMethod("public String getTestField() {return this.testField;}",null,false,null); //$NON-NLS-1$ type.createMethod("public void setTestField(String testField) {this.testField = testField;}",null,false,null); //$NON-NLS-1$ return type; } }