blob: 45aafd18d1eea64a6d63dfb85564da36e5bc431b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 Mia-Software.
* 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:
* Nicolas Bros (Mia-Software) - initial API and implementation
*******************************************************************************/
package org.eclipse.gmt.modisco.infra.browser.uicore.internal.util;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.Path;
/**
* General utility functions
* @deprecated Will be replaced by EMF Facet,
* cf https://bugs.eclipse.org/bugs/show_bug.cgi?id=470715
*/
@Deprecated
public final class Util {
private Util() {
// make this class non-instantiable
}
/**
* Build a valid Windows filename from the given name (replaces invalid
* characters by underscores)
*
* @param name
* a non-empty name that can contain illegal file name characters
* @return a valid Windows filename
*/
public static String deriveSanitizedFileName(final String name) {
if (name.length() == 0) {
throw new IllegalArgumentException("name is empty"); //$NON-NLS-1$
}
final char[] invalidCharacters = new char[] { '\\', '/', ':', '*', '?', '\"', '<', '>', '|' };
final StringBuilder result = new StringBuilder();
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
for (final char invalidChar : invalidCharacters) {
if (c == invalidChar) {
c = '_';
}
}
result.append(c);
}
return result.toString();
}
/**
* If the given file already exists, then derive a new filename with an
* incremental suffix, and return the next unexisting file with the same
* base name and location
*/
public static IFile nextUniqueFile(final IFile file) {
// if the file already exists, then find a new name
int n = 1;
final String extension = file.getFileExtension();
final String name = file.getFullPath().removeFileExtension().lastSegment();
IFile newFile = file;
while (newFile.exists()) {
newFile = newFile.getParent().getFile(new Path(name + "_" + n++ + "." + extension)); //$NON-NLS-1$ //$NON-NLS-2$
}
return newFile;
}
public static boolean safeEquals(final Object o1, final Object o2) {
if (o1 == null) {
return o2 == null;
}
return o1.equals(o2);
}
}