diff options
Diffstat (limited to 'update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java')
-rw-r--r-- | update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java deleted file mode 100644 index ccde29f0b..000000000 --- a/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java +++ /dev/null @@ -1,353 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.update.core; - -import java.io.*; -import java.text.DateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -import org.eclipse.core.runtime.*; -import org.eclipse.update.core.model.*; -import org.eclipse.update.internal.core.*; - -/** - * This class is a collection of utility functions that can be - * used for install processing - * <p> - * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to - * change significantly before reaching stability. It is being made available at this early stage to solicit feedback - * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken - * (repeatedly) as the API evolves. - * </p> - * @deprecated The org.eclipse.update component has been replaced by Equinox p2. - * This API will be deleted in a future release. See bug 311590 for details. - */ -public class Utilities { - - private static Map entryMap; - private static final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.getDefault()); - private static long tmpseed = (new Date()).getTime(); - private static String dirRoot = null; - - /** - * Returns a new working directory (in temporary space). Ensures - * the directory exists. Any directory levels that had to be created - * are marked for deletion on exit. - * - * @return working directory - * @exception IOException - * @since 2.0 - */ - public static synchronized File createWorkingDirectory() throws IOException { - - if (dirRoot == null) { - dirRoot = System.getProperty("java.io.tmpdir"); //$NON-NLS-1$ - // in Linux, returns '/tmp', we must add '/' - if (!dirRoot.endsWith(File.separator)) - dirRoot += File.separator; - - // on Unix/Linux, the temp dir is shared by many users, so we need to ensure - // that the top working directory is different for each user - if (!Platform.getOS().equals("win32")) { //$NON-NLS-1$ - String home = System.getProperty("user.home"); //$NON-NLS-1$ - home = Integer.toString(home.hashCode()); - dirRoot += home + File.separator; - } - dirRoot += "eclipse" + File.separator + ".update" + File.separator + Long.toString(tmpseed) + File.separator; //$NON-NLS-1$ //$NON-NLS-2$ - } - - String tmpName = dirRoot + Long.toString(++tmpseed) + File.separator; - - File tmpDir = new File(tmpName); - verifyPath(tmpDir, false); - if (!tmpDir.exists()) - throw new FileNotFoundException(tmpName); - return tmpDir; - } - - /** - * Create a new working file. The file is marked for deletion on exit. - * - * @see #lookupLocalFile(String) - * @param tmpDir directory location for new file. Any missing directory - * levels are created (and marked for deletion on exit) - * @param name optional file name, or <code>null</code>. If name is not - * specified, a temporary name is generated. - * @return created working file - * @exception IOException - * @since 2.0 - */ - public static synchronized File createLocalFile(File tmpDir, String name) throws IOException { - // create the local file - File temp; - String filePath; - if (name != null) { - // create file with specified name - filePath = name.replace('/', File.separatorChar); - if (filePath.startsWith(File.separator)) - filePath = filePath.substring(1); - temp = new File(tmpDir, filePath); - } else { - // create file with temp name - temp = File.createTempFile("eclipse", null, tmpDir); //$NON-NLS-1$ - } - temp.deleteOnExit(); - verifyPath(temp, true); - - return temp; - } - - /** - * The file is associated with a lookup key. - * @param key optional lookup key, or <code>null</code>. - * @param temp the local working file - * @since 2.0.2 - */ - public synchronized static void mapLocalFile(String key, File temp) { - // create file association - if (key != null) { - if (entryMap == null) - entryMap = new HashMap(); - entryMap.put(key, temp); - } - } - - /** - * Returns a previously cached local file (in temporary area) matching the - * specified key. - * - * @param key lookup key - * @return cached file, or <code>null</code>. - * @since 2.0 - */ - public static synchronized File lookupLocalFile(String key) { - if (entryMap == null) - return null; - return (File) entryMap.get(key); - } - - /** - * Flushes all the keys from the local file map. - * Reinitialize the cache. - * - * @since 2.1 - */ - public synchronized static void flushLocalFile() { - entryMap = null; - } - - /** - * Removes the specified key from the local file map. The file is - * not actually deleted until VM termination. - * - * @param key lookup key - * @since 2.0 - */ - public static synchronized void removeLocalFile(String key) { - if (entryMap != null) - entryMap.remove(key); - } - - /** - * Copies specified input stream to the output stream. Neither stream - * is closed as part of this operation. - * - * @param is input stream - * @param os output stream - * @param monitor progress monitor - * @exception IOException - * @exception InstallAbortedException - * @since 2.0 - */ - public static void copy(InputStream is, OutputStream os, InstallMonitor monitor) throws IOException, InstallAbortedException { - long offset = UpdateManagerUtils.copy(is, os, monitor, 0); - if (offset != -1) { - if (monitor != null && monitor.isCanceled()) { - String msg = Messages.Feature_InstallationCancelled; - throw new InstallAbortedException(msg, null); - } else { - throw new IOException(); - } - } - } - - /** - * Creates a CoreException from some other exception. - * The type of the CoreException is <code>IStatus.ERROR</code> - * If the exception passed as a parameter is also a CoreException, - * the new CoreException will contain all the status of the passed - * CoreException. - * - * @see IStatus#ERROR - * @param s exception string - * @param code the code reported - * @param e actual exception being reported - * @return a CoreException - * @since 2.0 - */ - public static CoreException newCoreException(String s, int code, Throwable e) { - String id = UpdateCore.getPlugin().getBundle().getSymbolicName(); - - // check the case of a multistatus - IStatus status; - if (e instanceof FeatureDownloadException) - return (FeatureDownloadException)e; - else if (e instanceof CoreException) { - if (s == null) - s = ""; //$NON-NLS-1$ - status = new MultiStatus(id, code, s, e); - IStatus childrenStatus = ((CoreException) e).getStatus(); - ((MultiStatus) status).add(childrenStatus); - ((MultiStatus) status).addAll(childrenStatus); - } else { - StringBuffer completeString = new StringBuffer(""); //$NON-NLS-1$ - if (s != null) - completeString.append(s); - if (e != null) { - completeString.append(" ["); //$NON-NLS-1$ - String msg = e.getLocalizedMessage(); - completeString.append(msg!=null?msg:e.toString()); - completeString.append("]"); //$NON-NLS-1$ - } - status = new Status(IStatus.ERROR, id, code, completeString.toString(), e); - } - CoreException ce = new CoreException(status); - - if ( e instanceof FatalIOException) { - ce = new CoreExceptionWithRootCause(status); - ((CoreExceptionWithRootCause)ce).setRootException(e); - } - /* for when we move to 1.5 - if ( e instanceof CoreException) { - ce.initCause(e.getCause()); - } else { - ce.initCause(e); - } - if (e != null) - ce.setStackTrace(e.getStackTrace());*/ - return ce; - } - - /** - * Creates a CoreException from some other exception. - * The type of the CoreException is <code>IStatus.ERROR</code> - * If the exception passed as a parameter is also a CoreException, - * the new CoreException will contain all the status of the passed - * CoreException. - * - * @see IStatus#ERROR - * @param s exception string - * @param e actual exception being reported - * @return a CoreException - * @since 2.0 - */ - public static CoreException newCoreException(String s, Throwable e) { - return newCoreException(s, IStatus.OK, e); - } - - /** - * Creates a CoreException from two other CoreException - * - * @param s overall exception string - * @param s1 string for first detailed exception - * @param s2 string for second detailed exception - * @param e1 first detailed exception - * @param e2 second detailed exception - * @return a CoreException with multi-status - * @since 2.0 - */ - public static CoreException newCoreException(String s, String s1, String s2, CoreException e1, CoreException e2) { - String id = UpdateCore.getPlugin().getBundle().getSymbolicName(); - if (s == null) - s = ""; //$NON-NLS-1$ - - IStatus childStatus1 = e1.getStatus(); - IStatus childStatus2 = e2.getStatus(); - int code = (childStatus1.getCode() == childStatus2.getCode()) ? childStatus1.getCode() : IStatus.OK; - MultiStatus multi = new MultiStatus(id, code, s, null); - - multi.add(childStatus1); - multi.addAll(childStatus1); - multi.add(childStatus2); - multi.addAll(childStatus2); - - return new CoreException(multi); - } - - /** - * Formats a Date based on the default Locale - * If teh Date is <code>null</code> returns an empty String - * - * @param date the Date to format - * @return the formatted Date as a String - * @since 2.0 - */ - public static String format(Date date) { - if (date == null) - return ""; //$NON-NLS-1$ - return dateFormat.format(date); - } - - /** - * Perform shutdown processing for temporary file handling. - * This method is called when platform is shutting down. - * It is not intended to be called at any other time under - * normal circumstances. A side-effect of calling this method - * is that the contents of the temporary directory managed - * by this class are deleted. - * - * @since 2.0 - */ - public static void shutdown() { - if (dirRoot == null) - return; - - File temp = new File(dirRoot); // temp directory root for this run - cleanupTemp(temp); - temp.delete(); - } - - private static void cleanupTemp(File root) { - File[] files = root.listFiles(); - for (int i = 0; files != null && i < files.length; i++) { - if (files[i].isDirectory()) - cleanupTemp(files[i]); - files[i].delete(); - } - } - - private static void verifyPath(File path, boolean isFile) { - // if we are expecting a file back off 1 path element - if (isFile) { - if (path.getAbsolutePath().endsWith(File.separator)) { - // make sure this is a file - path = path.getParentFile(); - isFile = false; - } - } - - // already exists ... just return - if (path.exists()) - return; - - // does not exist ... ensure parent exists - File parent = path.getParentFile(); - verifyPath(parent, false); - - // ensure directories are made. Mark files or directories for deletion - if (!isFile) - path.mkdir(); - path.deleteOnExit(); - } -} |