/******************************************************************************* * Copyright (c) 2009 Vlad Dumitrescu and others. * 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: * Vlad Dumitrescu *******************************************************************************/ package org.erlide.backend.runtimeinfo; import org.erlide.utils.PreferencesUtils; import org.osgi.service.prefs.Preferences; public class RuntimeInfoLoader { static final String CODE_PATH = "codePath"; static final String HOME_DIR = "homeDir"; static final String ARGS = "args"; static final String WORKING_DIR = "workingDir"; static final String MANAGED = "managed"; static final String LONG_NAME = "longName"; static final String START_SHELL = "startShell"; private final RuntimeInfo info; public RuntimeInfoLoader(final RuntimeInfo info) { this.info = info; } public void store(final Preferences root) { final Preferences node = root.node(info.getName()); final String code = PreferencesUtils.packList(info.getCodePath()); node.put(CODE_PATH, code); node.put(HOME_DIR, info.getOtpHome()); node.put(ARGS, info.getArgs()); node.put(WORKING_DIR, info.getWorkingDir()); node.putBoolean(MANAGED, info.isManaged()); node.putBoolean(LONG_NAME, info.getLongName()); node.putBoolean(START_SHELL, info.isStartShell()); } public void load(final Preferences node) { info.setName(node.name()); final String path = node.get(CODE_PATH, ""); info.setCodePath(PreferencesUtils.unpackList(path)); info.setOtpHome(node.get(HOME_DIR, "")); info.setArgs(node.get(ARGS, "")); final String wd = node.get(WORKING_DIR, info.getWorkingDir()); if (wd.length() != 0) { info.setWorkingDir(wd); } info.setManaged(node.getBoolean(MANAGED, true)); info.useLongName(node.getBoolean(LONG_NAME, true)); info.setStartShell(node.getBoolean(START_SHELL, false)); } }