| /******************************************************************************* |
| * Copyright (c) 2011, 2017 NumberFour AG |
| * |
| * 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: |
| * NumberFour AG - initial API and Implementation (Alex Panchenko) |
| *******************************************************************************/ |
| package org.eclipse.dltk.internal.core.builder; |
| |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.dltk.core.builder.IBuildState; |
| |
| abstract class AbstractBuildState implements IBuildState { |
| |
| private final String projectName; |
| |
| public AbstractBuildState(String projectName) { |
| this.projectName = projectName; |
| } |
| |
| private final Set<IPath> structuralChanges = new HashSet<>(); |
| |
| @Override |
| public void recordStructuralChange(IPath path) { |
| Assert.isLegal(projectName.equals(path.segment(0))); |
| structuralChanges.add(path); |
| } |
| |
| public void recordStructuralChanges(Collection<IPath> paths) { |
| for (IPath path : paths) { |
| recordStructuralChange(path); |
| } |
| } |
| |
| @Override |
| public Set<IPath> getStructuralChanges() { |
| return Collections.unmodifiableSet(structuralChanges); |
| } |
| |
| public void resetStructuralChanges() { |
| structuralChanges.clear(); |
| } |
| |
| @Override |
| public final void recordDependency(IPath path, IPath dependency) { |
| recordDependency(path, dependency, STRUCTURAL); |
| } |
| } |