Copyright (c) 2011, 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2011, 2013 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.internal.core.index; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath;
The location of the index files are represented as IndexLocation This is an abstract class to allow different implementation for a jar entry and a file on the disk. Some of these functions could mean different for a jar entry or a file
/** * The location of the index files are represented as {@link IndexLocation} * * This is an abstract class to allow different implementation for a jar entry and a file * on the disk. Some of these functions could mean different for a jar entry or a file * */
public abstract class IndexLocation { public static IndexLocation createIndexLocation(URL url) { URL localUrl; try { localUrl = FileLocator.resolve(url); } catch (IOException e) { return null; } if (localUrl.getProtocol().equals("file")) { //$NON-NLS-1$ File localFile = null; try { URI localFileURI = new URI(localUrl.toExternalForm()); localFile = new File(localFileURI); } catch(Exception ex) { localFile = new File(localUrl.getPath()); } return new FileIndexLocation(url, localFile); } return new JarIndexLocation(url, localUrl); } private final URL url; // url of the given index location
Set to true if this index location is of an index file specified by a participant through SearchParticipant.scheduleDocumentIndexing
/** * Set to true if this index location is of an index file specified * by a participant through * {@link org.eclipse.jdt.core.search.SearchParticipant#scheduleDocumentIndexing} */
protected boolean participantIndex; protected IndexLocation(File file) { URL tempUrl = null; try { tempUrl = file.toURI().toURL(); } catch (MalformedURLException e) { // should not happen } this.url = tempUrl; } public IndexLocation(URL url) { this.url = url; }
Closes any open streams.
/** * Closes any open streams. */
public void close() { // default nothing to do }
Creates a new file for the given index location
Throws:
Returns:true if the file is created
/** * Creates a new file for the given index location * @return true if the file is created * @throws IOException */
public abstract boolean createNewFile() throws IOException; public abstract boolean delete(); public abstract boolean exists(); public abstract String fileName();
Returns:the canonical file path if the location is a file or null otherwise
/** * @return the canonical file path if the location is a file or null otherwise */
public abstract String getCanonicalFilePath(); public abstract File getIndexFile(); abstract InputStream getInputStream() throws IOException; public URL getUrl() { return this.url; } @Override public int hashCode() { return this.url.hashCode(); } public boolean isParticipantIndex() { return this.participantIndex; }
Returns:the last modified time if the location is a file or -1 otherwise
/** * @return the last modified time if the location is a file or -1 otherwise */
public abstract long lastModified();
Returns:the length of the file if the location is a file or -1 otherwise
/** * @return the length of the file if the location is a file or -1 otherwise */
public abstract long length(); public abstract boolean startsWith(IPath path); @Override public String toString() { return this.url.toString(); } }