/**
* Copyright (c) 2014 Codetrails GmbH.
* 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:
* Johannes Dorn - initial API and implementation.
*/
package org.eclipse.recommenders.snipmatch;
import static java.util.Objects.requireNonNull;
import static org.eclipse.recommenders.snipmatch.Location.NONE;
import java.util.Set;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.eclipse.recommenders.coordinates.ProjectCoordinate;
public class SearchContext implements ISearchContext {
private final String searchText;
private final Location location;
private final String filename;
private final Set<ProjectCoordinate> availableDependencies;
public SearchContext(String searchText, Location location, String filename,
Set<ProjectCoordinate> availableDependencies) {
this.searchText = requireNonNull(searchText);
this.location = requireNonNull(location);
this.filename = requireNonNull(filename);
this.availableDependencies = requireNonNull(availableDependencies);
}
public SearchContext(String searchText) {
this.searchText = requireNonNull(searchText);
this.location = NONE;
this.filename = null;
this.availableDependencies = null;
}
@Override
public String getSearchText() {
return searchText;
}
@Override
public Location getLocation() {
return location;
}
@Override
public String getFilename() {
return filename;
}
@Override
public boolean isRestrictedByDependencies() {
return availableDependencies != null;
}
@Override
public Set<ProjectCoordinate> getDependencies() {
return availableDependencies;
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(obj, this);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}