/**
* Copyright (c) 2013-2016 Angelo ZERR.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.eclipse.ide.internal.core;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
import org.osgi.framework.Bundle;
import tern.TernException;
import tern.eclipse.ide.core.utils.FileUtils;
import tern.repository.ITernRepository;
import tern.utils.TernModuleHelper;
import tern.utils.ZipUtils;
public class TernModuleInstall {
private static final String ID_ATTR = "id";
private static final String NAME_ATTR = "name";
private static final String SRC_ATTR = "src";
private final String name;
private final String id;
private final File src;
/**
* GeneratorType constructor comment.
*
* @param element
* a configuration element
* @throws IOException
*/
public TernModuleInstall(IConfigurationElement element) throws IOException {
this.name = element.getAttribute(NAME_ATTR);
this.id = element.getAttribute(ID_ATTR);
String pluginId = element.getNamespaceIdentifier();
this.src = getFile(element.getAttribute(SRC_ATTR), pluginId);
}
private File getFile(String src, String pluginId) throws IOException {
// Obtain a file: URL for the bundle entry containing the Tern module contributions.
Bundle bundle = Platform.getBundle(pluginId);
URL moduleUrl = FileLocator.toFileURL(bundle.getEntry(src));
if (moduleUrl == null || !"file".equals(moduleUrl.getProtocol())) {
throw new IOException(NLS.bind("Unable to obtain a file URL for {0} in plug-in {1}", src, pluginId));
}
return new File(moduleUrl.getPath()).getCanonicalFile();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public File getSrc() {
return src;
}
public void dispose() {
}
}