001package org.dcm4che3.conf.api;
002
003import org.dcm4che3.conf.core.api.ConfigurableClass;
004import org.dcm4che3.conf.core.api.ConfigurableProperty;
005import org.dcm4che3.conf.core.api.ConfigurationException;
006import org.dcm4che3.net.TCGroupConfigAEExtension;
007import org.dcm4che3.net.TransferCapability;
008
009import java.util.*;
010
011/**
012 * @author Roman K
013 */
014@ConfigurableClass
015public class TCConfiguration {
016
017    @ConfigurableProperty
018    private Map<String, TCGroup> transferCapabilityGroups = new TreeMap<String, TCGroup>();
019
020    /**
021     * Persists default group config
022     * Deprecated. Do not use it in upgrade scripts.
023     * @param config
024     * @throws ConfigurationException
025     */
026    @Deprecated
027    public static void persistDefaultTCGroups(DicomConfiguration config) throws ConfigurationException {
028
029        TransferCapabilityConfigExtension tcExt = config.getDicomConfigurationExtension(TransferCapabilityConfigExtension.class);
030        TCConfiguration tcConfig = new TCConfiguration();
031
032        for (TCGroupConfigAEExtension.DefaultGroup group : TCGroupConfigAEExtension.DefaultGroup.values()) {
033            TCGroup tcGroup = new TCGroup();
034            tcGroup.setTransferCapabilities(TCGroupConfigAEExtension.getTCsForDefaultGroup(group));
035            tcConfig.getTransferCapabilityGroups().put(group.name(), tcGroup);
036        }
037
038        tcExt.persistTransferCapabilityConfig(tcConfig);
039    }
040
041    public Map<String, TCGroup> getTransferCapabilityGroups() {
042        return transferCapabilityGroups;
043    }
044
045    public void setTransferCapabilityGroups(Map<String, TCGroup> transferCapabilityGroups) {
046        this.transferCapabilityGroups = transferCapabilityGroups;
047    }
048
049    @ConfigurableClass
050    public static class TCGroup {
051
052        public TCGroup() {
053        }
054
055        public TCGroup(List<TransferCapability> transferCapabilities) {
056            this.transferCapabilities = transferCapabilities;
057        }
058
059        @ConfigurableProperty
060        List<TransferCapability> transferCapabilities = new ArrayList<TransferCapability>();
061
062        public List<TransferCapability> getTransferCapabilities() {
063            return transferCapabilities;
064        }
065
066        public void setTransferCapabilities(List<TransferCapability> transferCapabilities) {
067            this.transferCapabilities = transferCapabilities;
068        }
069    }
070}