/plugins/cvs/smartcvs-src/org/netbeans/lib/cvsclient/file/FileSystem.java
https://github.com/jexp/idea2 · Java · 106 lines · 63 code · 24 blank · 19 comment · 6 complexity · 1ba9bc37891c9923bebf1b566f92be3f MD5 · raw file
- /*
- * Sun Public License Notice
- *
- * The contents of this file are subject to the Sun Public License
- * Version 1.0 (the "License"). You may not use this file except in
- * compliance with the License. A copy of the License is available at
- * http://www.sun.com/
- *
- * The Original Code is NetBeans. The Initial Developer of the Original
- * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
- * Microsystems, Inc. All Rights Reserved.
- */
- package org.netbeans.lib.cvsclient.file;
- import org.netbeans.lib.cvsclient.util.BugLog;
- import org.jetbrains.annotations.NonNls;
- import java.io.File;
- /**
- * @author Thomas Singer
- */
- public final class FileSystem
- implements IFileSystem {
- // Fields =================================================================
- private final File rootDirectory;
- private final String canonicalRootDirectoryName;
- @NonNls private static final String OS_NAME_PARAMETER = "os.name";
- @NonNls private static final String WINDOWS = "Windows";
- // Setup ==================================================================
- public FileSystem(File rootDirectory) {
- BugLog.getInstance().assertNotNull(rootDirectory);
- this.rootDirectory = rootDirectory;
- this.canonicalRootDirectoryName = getCanonicalFileName(rootDirectory);
- }
- // Implemented ============================================================
- public File getRootDirectory() {
- return rootDirectory;
- }
- public File getFile(String relativeFileName) {
- BugLog.getInstance().assertNotNull(relativeFileName);
- return new File(rootDirectory, relativeFileName);
- }
- public File getFile(AbstractFileObject fileObject) {
- BugLog.getInstance().assertNotNull(fileObject);
- return new File(rootDirectory, fileObject.getPath().substring(1));
- }
- public FileObject getFileObject(File file) throws OutOfFileSystemException {
- BugLog.getInstance().assertNotNull(file);
- if (file.isDirectory()) {
- throw new IllegalArgumentException(file + " isn't a file");
- }
- return FileObject.createInstance(getPath(file));
- }
- public DirectoryObject getDirectoryObject(File directory) throws OutOfFileSystemException {
- BugLog.getInstance().assertNotNull(directory);
- if (directory.isFile()) {
- throw new IllegalArgumentException(directory + " isn't a directory");
- }
- return DirectoryObject.createInstance(getPath(directory));
- }
- // Utils ==================================================================
- private String getPath(File file) throws OutOfFileSystemException {
- final String canonicalFilePath = getCanonicalFileName(file);
- if (!canonicalFilePath.startsWith(canonicalRootDirectoryName)) {
- throw new OutOfFileSystemException(canonicalFilePath, canonicalRootDirectoryName);
- }
- final String filePath = file.getAbsolutePath();
- int beginIndex = canonicalRootDirectoryName.length();
- if (filePath.length() > beginIndex) {
- beginIndex++;
- }
- return '/' + filePath.substring(beginIndex).replace('\\', '/');
- }
- private static String getCanonicalFileName(File file) {
- String canonicalFileName = file.getAbsolutePath();
- if (canonicalFileName.endsWith(File.separator)) {
- canonicalFileName = canonicalFileName.substring(0, canonicalFileName.length() - 1);
- }
- if (System.getProperty(OS_NAME_PARAMETER).startsWith(WINDOWS)) {
- return canonicalFileName.toLowerCase();
- }
- return canonicalFileName;
- }
- }