/******************************************************************************* * Copyright (c) 2016 Weasis Team 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: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.dicom.codec.wado; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.weasis.core.api.media.data.TagW; import org.weasis.core.api.service.BundleTools; import org.weasis.core.api.util.StringUtil; public class WadoParameters { private static final Logger LOGGER = LoggerFactory.getLogger(WadoParameters.class); public static final String TAG_DOCUMENT_ROOT = "wado_query"; //$NON-NLS-1$ public static final String TAG_WADO_URL = "wadoURL"; //$NON-NLS-1$ public static final String TAG_WADO_ONLY_SOP_UID = "requireOnlySOPInstanceUID"; //$NON-NLS-1$ public static final String TAG_WADO_ADDITIONNAL_PARAMETERS = "additionnalParameters"; //$NON-NLS-1$ public static final String TAG_WADO_OVERRIDE_TAGS = "overrideDicomTagsList"; //$NON-NLS-1$ public static final String TAG_WADO_WEB_LOGIN = "webLogin"; //$NON-NLS-1$ public static final String TAG_HTTP_TAG = "httpTag"; //$NON-NLS-1$ private final String wadoURL; private final boolean requireOnlySOPInstanceUID; private final String additionnalParameters; private final int[] overrideDicomTagIDList; private final String overrideDicomTagsList; private final String webLogin; private final List<WadoParameters.HttpTag> httpTaglist; public WadoParameters(String wadoURL, boolean requireOnlySOPInstanceUID, String additionnalParameters, String overrideDicomTagsList, String webLogin) { if (wadoURL == null) { throw new IllegalArgumentException("wadoURL cannot be null"); //$NON-NLS-1$ } this.wadoURL = wadoURL; this.httpTaglist = new ArrayList<>(3); // Add possible session tags if (BundleTools.SESSION_TAGS_FILE.size() > 0) { for (Iterator<Entry<String, String>> iter = BundleTools.SESSION_TAGS_FILE.entrySet().iterator(); iter .hasNext();) { Entry<String, String> element = iter.next(); addHttpTag(element.getKey(), element.getValue()); } } this.webLogin = webLogin == null ? null : webLogin.trim(); this.requireOnlySOPInstanceUID = requireOnlySOPInstanceUID; this.additionnalParameters = additionnalParameters == null ? "" : additionnalParameters; //$NON-NLS-1$ this.overrideDicomTagsList = overrideDicomTagsList; if (StringUtil.hasText(overrideDicomTagsList)) { String[] val = overrideDicomTagsList.split(","); //$NON-NLS-1$ overrideDicomTagIDList = new int[val.length]; for (int i = 0; i < val.length; i++) { try { overrideDicomTagIDList[i] = Integer.decode(val[i].trim()); } catch (NumberFormatException e) { LOGGER.error("Cannot read dicom tag list", e); //$NON-NLS-1$ } } } else { overrideDicomTagIDList = null; } } public List<WadoParameters.HttpTag> getHttpTaglist() { return httpTaglist; } public void addHttpTag(String key, String value) { if (key != null && value != null) { httpTaglist.add(new HttpTag(key, value)); } } public String getWebLogin() { return webLogin; } public String getWadoURL() { return wadoURL; } public boolean isRequireOnlySOPInstanceUID() { return requireOnlySOPInstanceUID; } public String getAdditionnalParameters() { return additionnalParameters; } public int[] getOverrideDicomTagIDList() { return overrideDicomTagIDList; } public String getOverrideDicomTagsList() { return overrideDicomTagsList; } public boolean isOverrideTag(TagW tagElement) { if (overrideDicomTagIDList != null) { int tagID = tagElement.getId(); for (int overTag : overrideDicomTagIDList) { if (tagID == overTag) { return true; } } } return false; } public static class HttpTag { private final String key; private final String value; public HttpTag(String key, String value) { this.key = key; this.value = value; } public String getKey() { return key; } public String getValue() { return value; } } }