package org.sinrel.engine.library; import java.io.File; import org.sinrel.engine.Engine; public final class OSManager { /** * @param name Имя рабочей папки * @param clientName Имя сервера, к которому принадлежит клиент * @return Возвращает директорию в которой содержатся файлы клиента * Пример: * name = sinrel * clientName = simple * Будет возвращена директория - C:\Users\%USERNAME%\AppData\Roaming\.sinrel\simple\bin (Для Windows) */ public static final File getClientFolder( String workingDirectory, String clientName ) { return new File( getWorkingDirectory( workingDirectory ).getPath() , clientName + File.separator + "bin" + File.separator ); } public static final File getClientFolder( Engine engine, String clientName ) { return getClientFolder( engine.getSettings().getDirectory(), clientName ); } public static final File getClientWorkingDirectory( Engine e, String clientName ) { return new File( getWorkingDirectory( e.getSettings().getDirectory() ).getPath(), clientName ); } public static final File getClientWorkingDirectory( String applicationName, String clientName ) { return new File( getWorkingDirectory( applicationName ).getPath(), clientName ); } public static final File getWorkingDirectory(String applicationName) { String userHome = System.getProperty("user.home", "."); File workingDirectory; switch (getPlatform().ordinal()) { case 0: case 1: workingDirectory = new File(userHome, '.' + applicationName + '/'); break; case 2: String applicationData = System.getenv("APPDATA"); if (applicationData != null) workingDirectory = new File(applicationData, "." + applicationName + '/'); else { workingDirectory = new File(userHome, '.' + applicationName + '/'); } break; case 3: workingDirectory = new File(userHome, "Library/Application Support/" + applicationName); break; default: workingDirectory = new File(userHome, applicationName + '/'); } return workingDirectory; } public static final File getWorkingDirectory( Engine engine ) { return getWorkingDirectory( engine.getSettings().getDirectory() ); } /** * @return Возвращает имя серии операционной системы ( Для Windows 7/XP будет возвращено значение windows ) */ public static final OS getPlatform() { String osName = System.getProperty("os.name").toLowerCase(); if (osName.contains("win")) return OS.windows; if (osName.contains("mac")) return OS.macos; if (osName.contains("solaris")) return OS.solaris; if (osName.contains("sunos")) return OS.solaris; if (osName.contains("linux")) return OS.linux; if (osName.contains("unix")) return OS.linux; return OS.unknown; } public static enum OS { linux, solaris, windows, macos, unknown; } /** * @return Возвращает версию Java, на которой запущен движок. */ public static float getJavaVersion() { String version = System.getProperty( "java.version" ); return Float.parseFloat( version.substring( 0, 3 ) ); } }