class UrlUtils {

  public static Map<String, Map<String, String>> revertRegister(Map<String, Map<String, String>> register) {
    Map<String, Map<String, String>> newRegister = new HashMap<String, Map<String, String>>();
    for (Map.Entry<String, Map<String, String>> entry : register.entrySet()) {
      String serviceName = entry.getKey();
      Map<String, String> serviceUrls = entry.getValue();
      if (serviceName.contains(":") || serviceName.contains("/")) {
        for (Map.Entry<String, String> entry2 : serviceUrls.entrySet()) {
          String serviceUrl = entry2.getKey();
          String serviceQuery = entry2.getValue();
          Map<String, String> params = StringUtils.parseQueryString(serviceQuery);
          String name = serviceName;
          int i = name.indexOf('/');
          if (i >= 0) {
            params.put("group", name.substring(0, i));
            name = name.substring(i + 1);
          }
          i = name.lastIndexOf(':');
          if (i >= 0) {
            params.put("version", name.substring(i + 1));
            name = name.substring(0, i);
          }
          Map<String, String> newUrls = newRegister.get(name);
          if (newUrls == null) {
            newUrls = new HashMap<String, String>();
            newRegister.put(name, newUrls);
          }
          newUrls.put(serviceUrl, StringUtils.toQueryString(params));
        }
      } else {
        newRegister.put(serviceName, serviceUrls);
      }
    }
    return newRegister;
  }

}