package org.openflexo.generator.utils; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import org.openflexo.toolbox.ToolBox; public class WOBuildProperties { private static final String WO_BUILD_PROPERTIES = "wobuild.properties"; private static final String[] ABSOLUTE_KEYS = new String[] { "wo.dir.root", "wo.woroot", "wo.dir.local.library", "wo.wolocalroot" }; private static final String[] USER_HOME_KEYS = new String[] { "wo.dir.user.home.library.frameworks", "wo.dir.user.home.library" }; private static final String[] WO_DIR_KEYS = new String[] { "wo.dir.local", "wo.wosystemroot", "wo.dir.library", "wo.dir.library.frameworks", "wo.dir.local.library.frameworks", "wo.dir.system" }; private static final String[] DEFAULT_ABSOLUTE_PATH = new String[] { "/", "/", "/Library", "/" }; private static final String[] DEFAULT_USER_HOME_RELATIVE_PATH = new String[] { "Library/Frameworks", "Library" }; private static final String[] DEFAULT_WO_DIR_RELATIVE_PATH = new String[] { "", "", "Library", "Library/Frameworks", "Local/Library/Frameworks", "" }; /** * */ public static void createWoBuildProperties() { File userHome = new File(System.getProperty("user.home")); File f = new File(userHome, "Library/" + WO_BUILD_PROPERTIES); if (!f.exists()) { try { synchronized (WOBuildProperties.class) { if (!f.exists()) { if (!f.getParentFile().exists()) { f.getParentFile().mkdirs(); } f.createNewFile(); Properties p = new Properties(); for (int i = 0; i < ABSOLUTE_KEYS.length; i++) { String s = ABSOLUTE_KEYS[i]; try { p.put(s, new File(DEFAULT_ABSOLUTE_PATH[i]).getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } } File WO_DIR = null; if (System.getenv("NEXT_ROOT") != null) { WO_DIR = new File(System.getenv("NEXT_ROOT")); } if (WO_DIR == null) { if (ToolBox.isWindows()) { File test = new File("c:\\System"); if (test.exists()) { WO_DIR = test; } else { WO_DIR = new File("c:\\Apple"); } } else { WO_DIR = new File("/System"); } } for (int i = 0; i < WO_DIR_KEYS.length; i++) { String s = WO_DIR_KEYS[i]; try { p.put(s, new File(WO_DIR, DEFAULT_WO_DIR_RELATIVE_PATH[i]).getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } } for (int i = 0; i < USER_HOME_KEYS.length; i++) { String s = USER_HOME_KEYS[i]; try { p.put(s, new File(userHome, DEFAULT_USER_HOME_RELATIVE_PATH[i]).getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } } try { p.store(new FileOutputStream(f), "This file stores the wo specific properties"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } catch (IOException e) { e.printStackTrace(); } } } }