/******************************************************************************* * Copyright (c) 2013 MEDEVIT. * 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: * T. Huster - initial API and implementation ******************************************************************************/ package at.medevit.elexis.weblinks.model; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import ch.elexis.core.data.activator.CoreHub; public class WebLinkElementUtil { private static final String CFG_WEBLINK = "elexis.weblink"; private static final String CFG_WEBLINK_TEXT = CFG_WEBLINK + ".text"; private static final String CFG_WEBLINK_LINK = CFG_WEBLINK + ".link"; private static final String CFG_WEBLINK_IDS = CFG_WEBLINK + ".ids"; private static final String ID_DELIMITER = "||"; private static final String ID_DELIMITER_ESCAPED = "\\|\\|"; private static HashMap<String, String> placeholders = new HashMap<String, String>(); public static String replacePlaceholders(String url){ while (hasPlaceholder(url)) { url = replacePlaceholder(url); } return url; } private static String replacePlaceholder(String url){ StringBuilder sb = new StringBuilder(); int startIdx = url.indexOf('['); int endIdx = url.indexOf(']'); sb.append(url.substring(0, startIdx)); String placeholder = url.substring(startIdx + 1, endIdx); if (placeholder != null) { sb.append(getPlaceholder(placeholder)); } sb.append(url.substring(endIdx + 1)); return sb.toString(); } public static String getPlaceholder(String placeholder){ return placeholders.get(placeholder); } public static void setPlaceholder(String placeholder, String value){ placeholders.put(placeholder, value); } private static boolean hasPlaceholder(String url){ int startIdx = url.indexOf('['); int endIdx = url.indexOf(']'); return startIdx != -1 && endIdx != -1; } public static List<WebLinkElement> loadElements(){ List<String> ids = loadIds(); ArrayList<WebLinkElement> ret = new ArrayList<WebLinkElement>(); for (String id : ids) { ret.add(new WebLinkElement(id)); } return ret; } public static void saveElements(List<WebLinkElement> elements){ List<String> ids = new ArrayList<String>(); for (WebLinkElement element : elements) { element.save(); ids.add(element.id); } saveIds(ids); } private static List<String> loadIds(){ String allIds = CoreHub.userCfg.get(CFG_WEBLINK_IDS, ""); String[] ids = allIds.split(ID_DELIMITER_ESCAPED); ArrayList<String> ret = new ArrayList<String>(); for (String id : ids) { if (!id.isEmpty()) { ret.add(id); } } return ret; } private static void saveIds(List<String> ids){ StringBuilder sb = new StringBuilder(); if (ids.isEmpty()) { CoreHub.userCfg.set(CFG_WEBLINK_IDS, ""); } else { for (String string : ids) { sb.append(string); sb.append(ID_DELIMITER); } sb.setLength(sb.length() - ID_DELIMITER.length()); CoreHub.userCfg.set(CFG_WEBLINK_IDS, sb.toString()); } } public static String getTextConfig(String id){ return CFG_WEBLINK_TEXT + "." + id; } public static String getLinkConfig(String id){ return CFG_WEBLINK_LINK + "." + id; } }