/******************************************************************************* * 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.project.server; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.vfs.Path; import org.eclipse.che.api.vfs.VirtualFile; import java.util.HashMap; import java.util.Map; /** * Wrapper for {@link VirtualFile}. * * @author andrew00x */ public abstract class VirtualFileEntry { private VirtualFile virtualFile; protected Map<String, String> attributes; protected ProjectRegistry projectRegistry; VirtualFileEntry(VirtualFile virtualFile) { this.virtualFile = virtualFile; this.attributes = new HashMap<>(); } VirtualFileEntry(VirtualFile virtualFile, ProjectRegistry projectRegistry) throws ServerException { this.virtualFile = virtualFile; this.attributes = new HashMap<>(); this.projectRegistry = projectRegistry; } /** * @return last modification date */ public long getModified() { return virtualFile.getLastModificationDate(); } /** * Tests whether this item is a regular file. * * @see org.eclipse.che.api.vfs.VirtualFile#isFile() */ public boolean isFile() { return virtualFile.isFile(); } /** * Tests whether this item is a folder. * * @see org.eclipse.che.api.vfs.VirtualFile#isFolder() */ public boolean isFolder() { return virtualFile.isFolder(); } /** * Gets name. * * @see org.eclipse.che.api.vfs.VirtualFile#getName() */ public String getName() { return virtualFile.getName(); } /** * Gets path. * * @see org.eclipse.che.api.vfs.VirtualFile#getPath() */ public Path getPath() { return virtualFile.getPath(); } /** * @return project this item belongs to */ public String getProject() { if (projectRegistry == null) { return null; } final RegisteredProject parentProject = projectRegistry.getParentProject(getPath().toString()); if (parentProject == null) { return null; } return parentProject.getPath(); } /** * @return whether the item is project */ public boolean isProject() { // root if (projectRegistry == null || getProject() == null) { return false; } return getProject().equals(getPath().toString()); } /** * Deletes this item. * * @throws ForbiddenException * if delete operation is forbidden * @throws ServerException * if other error occurs */ public void remove() throws ServerException, ForbiddenException { virtualFile.delete(null); } public VirtualFile getVirtualFile() { return virtualFile; } public Map<String, String> getAttributes() { return attributes; } }