org.yakindu.sct.examples.wizard.drop.ExampleURLHandler.java Source code

Java tutorial

Introduction

Here is the source code for org.yakindu.sct.examples.wizard.drop.ExampleURLHandler.java

Source

/**
 * 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;
    }
}