/*******************************************************************************
* Copyright (c) 2013-2014 Red Hat, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are 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:
* JBoss by Red Hat - initial API and implementation
*******************************************************************************/
package org.jboss.tools.arquillian.core.internal.archives;
import java.util.LinkedHashSet;
import java.util.Set;
import org.eclipse.jdt.core.IJavaProject;
/**
*
* @author snjeza
*
*/
public class Entry implements IEntry {
private String type;
private String path;
private String source;
private IEntry parent;
private Set<IEntry> children = new LinkedHashSet<IEntry>();
private IJavaProject javaProject;
private String fullyQualifiedName;
private String name;
public Entry(IEntry parent, String type, String path, String source, IJavaProject javaProject, String fullyQualifiedName) {
this.parent = parent;
this.type = type;
this.path = path;
this.source = source;
this.javaProject = javaProject;
this.fullyQualifiedName = fullyQualifiedName;
if (path != null) {
int index = path.lastIndexOf(Archive.PATH_SEPARATOR);
if (index >= 0) {
this.name = path.substring(index + 1);
}
}
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public IEntry getParent() {
return parent;
}
public void setParent(IEntry parent) {
this.parent = parent;
}
@Override
public Set<IEntry> getChildren() {
return children;
}
@Override
public void add(IEntry entry) {
children.add(entry);
}
@Override
public boolean isDirectory() {
return Archive.DIRECTORY.equals(type);
}
@Override
public String getName() {
return name == null ? "?" : name; //$NON-NLS-1$
}
@Override
public IJavaProject getJavaProject() {
return javaProject;
}
public String getFullyQualifiedName() {
return fullyQualifiedName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((parent == null) ? 0 : parent.hashCode());
result = prime * result + ((path == null) ? 0 : path.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Entry other = (Entry) obj;
if (parent == null) {
if (other.parent != null)
return false;
} else if (!parent.equals(other.parent))
return false;
if (path == null) {
if (other.path != null)
return false;
} else if (!path.equals(other.path))
return false;
return true;
}
@Override
public String toString() {
return "Entry [path=" + path + ", type=" + type + ", parent=" + parent
+ ", children=" + children + ", source=" + source + "]";
}
}