package com.redhat.ceylon.eclipse.core.model;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaModelException;
import com.redhat.ceylon.ide.common.model.BaseIdeModule;
import com.redhat.ceylon.ide.common.model.IResourceAware;
import com.redhat.ceylon.ide.common.model.IdeUnit;
import com.redhat.ceylon.ide.common.util.toJavaIterable_;
import com.redhat.ceylon.model.typechecker.model.Package;
public abstract class JavaUnit extends IdeUnit implements IJavaModelAware, IResourceAware {
public JavaUnit(String fileName,
String relativePath, String fullPath,
Package pkg) {
setFilename(fileName);
setRelativePath(relativePath);
setFullPath(fullPath);
setPackage(pkg);
}
@Override
public IFile getResourceFile() {
if (getTypeRoot() != null) {
try {
return (IFile)
getTypeRoot()
.getCorrespondingResource();
} catch (JavaModelException e) {
e.printStackTrace();
}
}
return null;
}
@Override
public IProject getResourceProject() {
if (getResourceFile() != null) {
return (IProject)
getTypeRoot()
.getJavaProject()
.getProject();
}
return null;
}
@Override
public IProject getProject() {
return getResourceProject();
}
@Override
public IFolder getResourceRootFolder() {
if (getResourceFile() != null) {
try {
IPackageFragmentRoot root =
(IPackageFragmentRoot)
getTypeRoot()
.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
if (root != null) {
return (IFolder) root.getCorrespondingResource();
}
} catch (JavaModelException e) {
e.printStackTrace();
}
}
return null;
}
public void remove() {
Package p = getPackage();
p.removeUnit(this);
assert (p.getModule() instanceof BaseIdeModule);
BaseIdeModule module = (BaseIdeModule) p.getModule();
for (BaseIdeModule moduleInReferencingProject :
toJavaIterable_.toJavaIterable(
BaseIdeModule.$TypeDescriptor$,
module.getModuleInReferencingProjects())) {
moduleInReferencingProject.removedOriginalUnit(getRelativePath());
}
}
}