use of org.whole.lang.artifacts.model.PackageArtifact in project whole by wholeplatform.
the class ArtifactsWorkspaceUtils method getArtifacts.
public static IEntity getArtifacts(IEntity artifact) {
ArtifactsEntityFactory aef = ArtifactsEntityFactory.instance(RegistryConfigurations.RESOLVER);
IEntity children = BindingManagerFactory.instance.createTuple();
if (Matcher.match(ArtifactsEntityDescriptorEnum.Workspace, artifact)) {
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
for (IProject project : workspaceRoot.getProjects()) {
Project projectArtifact = aef.createProject();
projectArtifact.setName(aef.createName(project.getName()));
projectArtifact.setArtifacts(aef.createArtifacts(0));
children.wAdd(projectArtifact);
}
} else {
try {
IBindingManager bindings = BindingManagerFactory.instance.createBindingManager();
bindPath(artifact, bindings, false);
IContainer container = (IContainer) (bindings.wIsSet("folder") ? bindings.wGetValue("folder") : bindings.wGetValue("project"));
IJavaElement javaContainer = JavaCore.create(container);
if (javaContainer == null || javaContainer.getElementType() == IJavaElement.JAVA_PROJECT) {
for (IResource resource : container.members()) {
if (resource.getType() == IResource.FILE) {
appendFileArtifact(((IFile) resource).getName(), children);
} else {
FolderArtifact folderArtifact = aef.createFolderArtifact();
Metadata metadata = aef.createMetadata();
metadata.setAttributes(aef.createAttributes(aef.createAttribute(AttributeEnum.source)));
folderArtifact.setMetadata(metadata);
folderArtifact.setName(aef.createName(StringUtils.getFileName(resource.getName())));
folderArtifact.setArtifacts(aef.createArtifacts(0));
children.wAdd(folderArtifact);
}
}
} else {
if (javaContainer.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
IPackageFragmentRoot fragmentRoot = (IPackageFragmentRoot) javaContainer;
if (fragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
for (IJavaElement element : fragmentRoot.getChildren()) {
if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
if (element.getElementName() == IPackageFragment.DEFAULT_PACKAGE_NAME) {
appendPackageFragmentChildren((IPackageFragment) element, children);
} else {
PackageArtifact packageArtifact = aef.createPackageArtifact();
packageArtifact.setName(aef.createName(StringUtils.getFileName(element.getElementName())));
packageArtifact.setArtifacts(aef.createArtifacts(0));
children.wAdd(packageArtifact);
}
}
}
}
} else
// IJavaElement.PACKAGE_FRAGMENT
appendPackageFragmentChildren((IPackageFragment) javaContainer, children);
}
} catch (Exception e) {
}
}
return children;
}
use of org.whole.lang.artifacts.model.PackageArtifact in project whole by wholeplatform.
the class ArtifactsWorkspaceUtils method toArtifactsPath.
public static IEntity toArtifactsPath(IJavaElement fromJavaElement, IJavaElement toJavaElement, IEntity child) {
ArtifactsEntityFactory aef = ArtifactsEntityFactory.instance(RegistryConfigurations.RESOLVER);
IEntity entity;
String name = toJavaElement.getElementName();
switch(toJavaElement.getElementType()) {
case IJavaElement.COMPILATION_UNIT:
FileArtifact fileArtifact = aef.createFileArtifact();
fileArtifact.setName(createFileName(name));
entity = fileArtifact;
break;
case IJavaElement.PACKAGE_FRAGMENT:
if (name == IPackageFragment.DEFAULT_PACKAGE_NAME)
return fromJavaElement.equals(toJavaElement) ? child : toArtifactsPath(fromJavaElement, toJavaElement.getParent(), child);
PackageArtifact packageArtifact = aef.createPackageArtifact();
packageArtifact.setName(aef.createName(name));
entity = packageArtifact;
break;
case IJavaElement.PACKAGE_FRAGMENT_ROOT:
FolderArtifact folderArtifact = aef.createFolderArtifact();
Metadata metadata = aef.createMetadata();
metadata.setAttributes(aef.createAttributes(aef.createAttribute(AttributeEnum.source)));
folderArtifact.setMetadata(metadata);
folderArtifact.setName(aef.createName(name));
entity = folderArtifact;
break;
case IJavaElement.JAVA_PROJECT:
Project project = aef.createProject();
project.setName(aef.createName(name));
project.setNatures(aef.createNatures(aef.createNature("org.eclipse.jdt.core.javanature")));
project.setArtifacts(aef.createArtifacts(0));
entity = project;
break;
default:
case IJavaElement.JAVA_MODEL:
Workspace workspace = aef.createWorkspace();
workspace.setProjects(aef.createProjects(0));
entity = workspace;
break;
}
boolean isWorkspace = Matcher.match(ArtifactsEntityDescriptorEnum.Workspace, entity);
if (!EntityUtils.isNull(child))
entity.wGet(isWorkspace ? ArtifactsFeatureDescriptorEnum.projects : ArtifactsFeatureDescriptorEnum.artifacts).wAdd(child);
return fromJavaElement.equals(toJavaElement) ? entity : toArtifactsPath(fromJavaElement, toJavaElement.getParent(), entity);
}
Aggregations