Java tutorial
/* * Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved. * * This program and the accompanying materials are made available * under the terms of the Eclipse Public License, Version 1.0, * which accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html * */ package net.rim.ejde.internal.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import net.rim.ejde.internal.core.ContextManager; import net.rim.ejde.internal.core.IConstants; import net.rim.ide.RIA; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IPath; import org.osgi.framework.Bundle; public class RIAUtils { static private final Logger _log = Logger.getLogger(RIAUtils.class); static final private String[] dllNames = { "RIMIDEWin32Util.dll", "RIMUsbJni.dll" }; //$NON-NLS-1$ //$NON-NLS-2$ /** * Gets valid jde home based on the given <code>path</code>. The given <code>path</code> should not contain <b>"bin"</b>. * * @param path * of jde home * @return if the give <code>path</code> is a valid jde home, returns the full path of the jde home; otherwise, returns empty * string. */ static public String getValidJDEHome(String path) { String root = path; if (StringUtils.isEmpty(root)) { return StringUtils.EMPTY; } // if "/bin" is already appended, we do not append it again if (!path.endsWith(IConstants.BIN_FOLD_NAME)) root = String.format("%s%s%s", root, File.separator, IConstants.BIN_FOLD_NAME); //$NON-NLS-1$ if (RIA.validateHomePath(root)) return root; return StringUtils.EMPTY; } public static void initDLLs() { IPath dllStoreLocation = ContextManager.PLUGIN.getStateLocation().append("installDlls"); //$NON-NLS-1$ File dllStoreFile = dllStoreLocation.toFile(); if (!dllStoreFile.exists()) dllStoreFile.mkdir(); InputStream inputStream; OutputStream outputStream; File dllFile; byte[] buf; int numbytes; URL bundUrl; for (String dllFileName : dllNames) { inputStream = null; outputStream = null; try { dllFile = dllStoreLocation.append(dllFileName).toFile(); Bundle bundle = ContextManager.PLUGIN.getBundle(); if (!dllFile.exists() || bundle.getLastModified() > dllFile.lastModified()) { bundUrl = bundle.getResource(dllFileName); if (bundUrl == null) continue; inputStream = bundUrl.openStream(); outputStream = new FileOutputStream(dllFile); buf = new byte[4096]; numbytes = 0; while ((numbytes = inputStream.read(buf)) > 0) outputStream.write(buf, 0, numbytes); } } catch (IOException t) { _log.error(t.getMessage(), t); } finally { try { if (inputStream != null) inputStream.close(); if (outputStream != null) outputStream.close(); } catch (IOException t) { _log.error(t.getMessage(), t); } } } // end for } // end initRIADLLs public static boolean canSwitchRIA() { RIA ria = RIA.getCurrentDebugger(); if (ria == null) { return true; } if (ria.isDebuggerAttached() || ria.isSimulatorRunning()) { return false; } return true; } }