| // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library analyzer.src.generated.java_io; |
| |
| import "dart:io"; |
| |
| import 'package:path/path.dart' as path; |
| |
| class JavaFile { |
| @deprecated |
| static path.Context pathContext = path.context; |
| static final String separator = Platform.pathSeparator; |
| static final int separatorChar = Platform.pathSeparator.codeUnitAt(0); |
| String _path; |
| JavaFile(String path) { |
| _path = path; |
| } |
| JavaFile.fromUri(Uri uri) : this(path.context.fromUri(uri)); |
| JavaFile.relative(JavaFile base, String child) { |
| if (child.isEmpty) { |
| this._path = base._path; |
| } else { |
| this._path = path.context.join(base._path, child); |
| } |
| } |
| @override |
| int get hashCode => _path.hashCode; |
| @override |
| bool operator ==(other) { |
| return other is JavaFile && other._path == _path; |
| } |
| |
| bool exists() { |
| if (_newFile().existsSync()) { |
| return true; |
| } |
| if (_newDirectory().existsSync()) { |
| return true; |
| } |
| return false; |
| } |
| |
| JavaFile getAbsoluteFile() => new JavaFile(getAbsolutePath()); |
| String getAbsolutePath() { |
| String abolutePath = path.context.absolute(_path); |
| abolutePath = path.context.normalize(abolutePath); |
| return abolutePath; |
| } |
| |
| JavaFile getCanonicalFile() => new JavaFile(getCanonicalPath()); |
| String getCanonicalPath() { |
| return _newFile().resolveSymbolicLinksSync(); |
| } |
| |
| String getName() => path.context.basename(_path); |
| String getParent() { |
| var result = path.context.dirname(_path); |
| // "." or "/" or "C:\" |
| if (result.length < 4) return null; |
| return result; |
| } |
| |
| JavaFile getParentFile() { |
| var parent = getParent(); |
| if (parent == null) return null; |
| return new JavaFile(parent); |
| } |
| |
| String getPath() => _path; |
| bool isDirectory() { |
| return _newDirectory().existsSync(); |
| } |
| |
| bool isExecutable() { |
| return _newFile().statSync().mode & 0x111 != 0; |
| } |
| |
| bool isFile() { |
| return _newFile().existsSync(); |
| } |
| |
| int lastModified() { |
| try { |
| return _newFile().lastModifiedSync().millisecondsSinceEpoch; |
| } catch (exception) { |
| return -1; |
| } |
| } |
| |
| List<JavaFile> listFiles() { |
| var files = <JavaFile>[]; |
| var entities = _newDirectory().listSync(); |
| for (FileSystemEntity entity in entities) { |
| files.add(new JavaFile(entity.path)); |
| } |
| return files; |
| } |
| |
| String readAsStringSync() => _newFile().readAsStringSync(); |
| @override |
| String toString() => _path.toString(); |
| Uri toURI() { |
| String absolutePath = getAbsolutePath(); |
| return path.context.toUri(absolutePath); |
| } |
| |
| Directory _newDirectory() => new Directory(_path); |
| File _newFile() => new File(_path); |
| } |
| |
| @Deprecated("Only used by `DirectoryBasedDartSdk`, which is also deprecated.") |
| class JavaSystemIO { |
| static Map<String, String> _properties = new Map(); |
| static String getenv(String name) => Platform.environment[name]; |
| static String getProperty(String name) { |
| { |
| String value = _properties[name]; |
| if (value != null) { |
| return value; |
| } |
| } |
| if (name == 'os.name') { |
| return Platform.operatingSystem; |
| } |
| if (name == 'line.separator') { |
| if (Platform.isWindows) { |
| return '\r\n'; |
| } |
| return '\n'; |
| } |
| if (name == 'com.google.dart.sdk') { |
| String exec = Platform.executable; |
| if (exec.length != 0) { |
| String sdkPath; |
| // may be "xcodebuild/ReleaseIA32/dart" with "sdk" sibling |
| { |
| var outDir = path.context.dirname(path.context.dirname(exec)); |
| sdkPath = path.context.join(path.context.dirname(outDir), "sdk"); |
| if (new Directory(sdkPath).existsSync()) { |
| _properties[name] = sdkPath; |
| return sdkPath; |
| } |
| } |
| // probably be "dart-sdk/bin/dart" |
| sdkPath = path.context.dirname(path.context.dirname(exec)); |
| _properties[name] = sdkPath; |
| return sdkPath; |
| } |
| } |
| return null; |
| } |
| |
| /// Only needed when when using `DirectoryBasedDartSdk`, which is also |
| /// deprecated. |
| /// |
| /// When using `FolderBasedDartSdk`, there is no need to set |
| /// `com.google.dart.sdk`. |
| @deprecated |
| static String setProperty(String name, String value) { |
| String oldValue = _properties[name]; |
| _properties[name] = value; |
| return oldValue; |
| } |
| } |