/** * Copyright (C) 2012 BonitaSoft S.A. * BonitaSoft, 32 rue Gustave Eiffel - 38000 Grenoble * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2.0 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.bonitasoft.web.toolkit.client; import java.util.HashMap; import java.util.Map; import com.google.gwt.http.client.URL; import com.google.gwt.user.client.Window; public class URLUtils { public static final String HASH_PARAMETERS_SEPARATOR = "&"; protected static URLUtils INSTANCE = null; /** * @return the view controller instance */ public static URLUtils getInstance() { if (INSTANCE == null) { INSTANCE = new URLUtils(); } return INSTANCE; } protected URLUtils() { super(); } public String getHashParameter(final String hashParameterName) { final Map<String, String> hashParameters = getHashParameters(); return hashParameters.get(hashParameterName); } public Map<String, String> getHashParameters() { String hash = Window.Location.getHash(); if (hash != null && hash.startsWith("#")) { hash = hash.substring(1); } return getHashParameters(hash); } private Map<String, String> getHashParameters(final String hash) { final Map<String, String> parametersMap = new HashMap<String, String>(); final String[] parameters = hash.split(HASH_PARAMETERS_SEPARATOR); for (final String parameter : parameters) { final String[] parameterEntry = parameter.split("="); final String name = parameterEntry[0]; String value = null; if (parameterEntry.length > 1) { value = URL.decodeQueryString(parameterEntry[1]); } parametersMap.put(name, value); } return parametersMap; } }