/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.vfs;
import org.eclipse.che.api.core.ServerException;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
/**
* Helps to find all locked file in folder given in constructor and all its sub folders.
*/
public class LockedFileFinder implements VirtualFileVisitor {
private final VirtualFile folder;
private final List<VirtualFile> locked;
/**
* @param folder folder where need look for looked files
*/
public LockedFileFinder(VirtualFile folder) {
this.folder = folder;
locked = newArrayList();
}
/**
* @return locked files that were found
*/
public List<VirtualFile> findLockedFiles() throws ServerException {
folder.accept(this);
return locked;
}
@Override
public void visit(VirtualFile virtualFile) throws ServerException {
if (virtualFile.isFolder()) {
for (VirtualFile child : virtualFile.getChildren()) {
child.accept(this);
}
}
if (virtualFile.isFile() && virtualFile.isLocked()) {
locked.add(virtualFile);
}
}
}