/**
* Copyright (c) 2016 committers of YAKINDU 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:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.examples.wizard.drop;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedHashMap;
import java.util.Map;
import com.google.common.collect.Maps;
/**
* Copied from {@link org.eclipse.epp.mpc.ui.MarketplaceUrlHandler}.
*
* @author Thomas Kutz - Adjusted to work with example download URLs.
*/
public class ExampleURLHandler {
private static final String EXAMPLE_INSTALL_URL = "https://github.com/Yakindu/examples/wiki/Downloading-an-example";
private static final String SPLIT_REGEX = "&";
private static final String EQUALS_REGEX = "=";
private static final Object ID_KEY = "id";
public static boolean isValidExample(String url) {
return url != null && url.contains(EXAMPLE_INSTALL_URL);
}
public static String extractExampleId(String url) {
Map<String, String> parsedQuery = parseQuery(url);
return parsedQuery.get(ID_KEY);
}
/**
* Copied from {@link org.eclipse.epp.mpc.ui.MarketplaceUrlHandler.parseQuery(String)}
*/
private static Map<String, String> parseQuery(String url) {
String query;
try {
query = new URL(url).getQuery();
} catch (MalformedURLException e) {
return Maps.newHashMap();
}
if (query == null) {
return Maps.newHashMap();
}
Map<String, String> values = new LinkedHashMap<String, String>();
String[] params = query.split(SPLIT_REGEX);
for (String param : params) {
String[] keyValue = param.split(EQUALS_REGEX);
if (keyValue.length == 2) {
String key = keyValue[0];
String value = keyValue[1];
values.put(key, value);
}
}
return values;
}
}