/* * Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The * University of Hong Kong (HKU). All Rights Reserved. * * This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1] * * [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt */ package hk.hku.cecid.edi.as2.pkg; import java.util.Iterator; import java.util.List; import java.util.Vector; /** * DispositionNotificationOption represents an AS2 disposition notification * option. * * @author Hugo Y. K. Lam * */ public class DispositionNotificationOption { public static final String IMPORTANCE_REQURIED = "required"; public static final String IMPORTANCE_OPTIONAL = "optional"; public static final String SIGNED_RECEIPT_PROTOCOL_PKCS7 = "pkcs7-signature"; public static final String SIGNED_RECEIPT_MICALG_SHA1 = "sha1"; public static final String SIGNED_RECEIPT_MICALG_MD5 = "md5"; private String name; private String importance; private List values = new Vector(); public DispositionNotificationOption() { } public DispositionNotificationOption(String option) { String optName = null; String optImpt = null; String[] optVals = null; if (option != null) { int sep = option.indexOf('='); optName = option.substring(0, sep == -1? option.length() : sep).trim(); if (sep != -1) { String optValue = option.substring(sep+1).trim(); sep = optValue.indexOf(','); optImpt = optValue.substring(0, sep == -1? optValue.length() : sep).trim(); if (sep != -1) { optVals = optValue.substring(sep+1, optValue.length()).split(","); } } } initOption(optName, optImpt, optVals); } public DispositionNotificationOption(String name, String importance, String[] values) { initOption(name, importance, values); } private void initOption(String name, String importance, String[] values) { this.name = name == null? "unknown":name; this.importance = importance == null? IMPORTANCE_OPTIONAL:importance; for (int i=0; values!=null && i<values.length; i++) { this.values.add(values[i].trim()); } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getImportance() { return importance; } public void setImportance(String importance) { this.importance = importance; } public boolean isRequired() { return IMPORTANCE_REQURIED.equalsIgnoreCase(getImportance()); } public String getValue() { return getValue(0); } public String getValue(int pos) { if (pos <0 || pos >= values.size()) { return null; } else { return (String)values.get(pos); } } public Iterator getValues() { return values.iterator(); } public void addValue(String value) { if (value != null) { values.add(value); } } public int countValues() { return values.size(); } public void removeValue(int pos) { if (pos >=0 && pos < values.size()) { values.remove(pos); } } public void removeValues() { values.clear(); } public boolean containsValue(String value) { if (value == null) { return false; } else { return values.contains(value.trim()); } } public String toString() { StringBuffer option = new StringBuffer(); option.append(name).append("=").append(importance); Iterator vals = getValues(); while (vals.hasNext()) { option.append(", ").append(vals.next()); } return option.toString(); } }