blob: 838187dfbea3b24fcb3207949758900f5e4a1ee3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 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
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.wst.common.componentcore.internal.resources;
import java.util.Map;
import java.util.Properties;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
public abstract class AbstractResourceListVirtualComponent implements IVirtualComponent {
protected IProject project;
protected IVirtualComponent referencingComp;
public AbstractResourceListVirtualComponent(IProject p, IVirtualComponent referencingComponent) {
this.project = p;
this.referencingComp = referencingComponent;
}
@Override
public boolean equals(Object o) {
if(this == o){
return true;
}
if(o == null){
return false;
}
if(!this.getClass().equals(o.getClass())){
return false;
}
AbstractResourceListVirtualComponent other = (AbstractResourceListVirtualComponent)o;
return (project == null ? other.project == null : project.equals(other.project)) &&
(referencingComp == null ? other.referencingComp == null : referencingComp.equals(other.referencingComp));
}
@Override
public int hashCode() {
return super.hashCode() + (project == null ? 0 : project.hashCode()) + (referencingComp == null ? 0 : referencingComp.hashCode());
}
public void create(int updateFlags, IProgressMonitor aMonitor)
throws CoreException {
// Ignore
}
public boolean exists() {
return true;
}
public IVirtualComponent getComponent() {
return this;
}
public String getName() {
return getId();
}
public String getDeployedName() {
return getName();
}
public String getId() {
String firstSegment = getFirstIdSegment();
if (project != null && project.equals(
referencingComp.getProject()))
return firstSegment;
return firstSegment + Path.SEPARATOR + project.getName();
}
protected abstract String getFirstIdSegment();
public IProject getProject() {
return project;
}
public IVirtualComponent[] getReferencingComponents() {
return referencingComp == null ? new IVirtualComponent[] {}
: new IVirtualComponent[] { referencingComp };
}
public IVirtualFolder getRootFolder() {
// Creates a new instance each time to ensure it's not cached
IContainer[] containers = getUnderlyingContainers();
IResource[] looseResources = getLooseResources();
ResourceListVirtualFolder folder =
new ResourceListVirtualFolder(project, new Path("/"), containers, looseResources); //$NON-NLS-1$
return folder;
}
protected abstract IContainer[] getUnderlyingContainers();
protected abstract IResource[] getLooseResources();
public Properties getMetaProperties() {
return null;
}
public IPath[] getMetaResources() {
return null;
}
public IVirtualReference getReference(String aComponentName) {
// Ignore
return null;
}
public IVirtualReference[] getReferences() {
// Ignore; no children
return new IVirtualReference[] {};
}
public IVirtualReference[] getReferences(Map<String, Object> options) {
// Ignore, no children
return new IVirtualReference[]{};
}
public boolean isBinary() {
return false;
}
public void setMetaProperties(Properties properties) {
// Ignore
}
public void setMetaProperty(String name, String value) {
// Ignore
}
public void setMetaResources(IPath[] theMetaResourcePaths) {
// Ignore
}
public void setReferences(IVirtualReference[] theReferences) {
// Ignore
}
public Object getAdapter(Class adapter) {
// Ignore
return null;
}
public void addReferences(IVirtualReference[] references) {
// Ignore
}
}