package ch.medshare.mediport.config; import java.io.File; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Vector; import ch.elexis.core.data.util.SortedList; import ch.medshare.mediport.util.MediPortHelper; import ch.medshare.util.SystemProperties; import ch.medshare.util.UtilMisc; public class Client extends AbstractConfigKeyModel { private String ean = ""; //$NON-NLS-1$ private String send_dir = "data/send"; //$NON-NLS-1$ private String receive_dir = "data/receive"; //$NON-NLS-1$ private String receivetest_dir = "data/receive/test"; //$NON-NLS-1$ private String error_dir = "data/error"; //$NON-NLS-1$ private String docstat_dir = "data/docstatus"; //$NON-NLS-1$ private String partner_file = "data/partner/partnerinfo.txt"; //$NON-NLS-1$ private String stylesheet = ""; //$NON-NLS-1$ public Map<Integer, ClientParam> paramMap = new HashMap<Integer, ClientParam>(); public Client(String installDir){ super(); if (installDir != null && installDir.length() > 0) { setSend_dir(installDir + "/" + send_dir); //$NON-NLS-1$ setReceive_dir(installDir + "/" + receive_dir); //$NON-NLS-1$ setReceivetest_dir(installDir + "/" + receivetest_dir); //$NON-NLS-1$ setError_dir(installDir + "/" + error_dir); //$NON-NLS-1$ setDocstat_dir(installDir + "/" + docstat_dir); //$NON-NLS-1$ setPartner_file(installDir + "/" + partner_file); //$NON-NLS-1$ } setStylesheet(UtilMisc.replaceWithForwardSlash(MediPortHelper .getPluginDirectory("ch.medshare.mediport") + File.separator + "rsc" + File.separator + "mediport_response.xsl")); } // C:/src/elexis/workspace/medshare-mediport/MDInvoiceRequest_400.xsd, müsste aber sein: // C:/Programme/Elexis131/plugins/ch.medshare.mediport_1.0.1/MDInvoiceRequest_400.xsd public void add(String[] parts, String value){ if (DIR.equals(parts[2])) { // Parameter Integer num = Integer.parseInt(parts[3]); ClientParam param = paramMap.get(num); if (param == null) { param = new ClientParam(num.toString()); paramMap.put(num, param); } param.add(parts, value); } else { add(parts[2], value); } } public void add(final String key, String value){ if (EAN.equals(key)) { setEan(value); } else if (SEND_DIR.equals(key)) { setSend_dir(value); } else if (RECEIVE_DIR.equals(key)) { setReceive_dir(value); } else if (RECEIVETEST_DIR.equals(key)) { setReceivetest_dir(value); } else if (ERROR_DIR.equals(key)) { setError_dir(value); } else if (DOCSTAT_DIR.equals(key)) { setDocstat_dir(value); } else if (PARTNER_FILE.equals(key)) { setPartner_file(value); } } public int addNewParam(ClientParam param){ int nextNumber = getNextParamKey(); paramMap.put(nextNumber, param); return nextNumber; } private int getNextParamKey(){ int maxNumber = 0; for (Integer key : paramMap.keySet()) { if (key.intValue() > maxNumber) { maxNumber = key; } } return maxNumber + 1; } public ClientParam getParam(Integer pNum){ if (pNum == null) { return null; } return paramMap.get(pNum); } public Integer getParamKey(String paramBez){ if (paramBez == null) { return null; } for (Integer paramNum : paramMap.keySet()) { ClientParam param = paramMap.get(paramNum); if (paramBez.equals(param.getName())) { return paramNum; } } return null; } public List<String> getParamNames(){ SortedList<String> nameList = new SortedList<String>(new StringComparator()); for (ClientParam param : paramMap.values()) { nameList.add(param.getName()); } nameList.sort(); return nameList; } public List<Integer> getParamKeys(){ List<Integer> keyList = new Vector<Integer>(); for (Integer key : paramMap.keySet()) { keyList.add(key); } return keyList; } public String toString(Integer num){ StringBuffer buffer = new StringBuffer(); String clientPrefix = CLIENT + "." + num + "."; //$NON-NLS-1$ //$NON-NLS-2$ buffer.append(clientPrefix + EAN + "=" + getEan()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + SEND_DIR + "=" + getSend_dir()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + RECEIVE_DIR + "=" + getReceive_dir()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + RECEIVETEST_DIR + "=" //$NON-NLS-1$ + this.receivetest_dir); buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + ERROR_DIR + "=" + getError_dir()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + DOCSTAT_DIR + "=" + getDocstat_dir()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); buffer.append(clientPrefix + PARTNER_FILE + "=" + getPartner_file()); //$NON-NLS-1$ buffer.append(SystemProperties.LINE_SEPARATOR); for (Integer pNum : paramMap.keySet()) { ClientParam param = getParam(pNum); buffer.append(param.toString(clientPrefix, pNum)); } return buffer.toString(); } public String getEan(){ return ean; } public void setEan(String ean){ String oldValue = this.ean; this.ean = ean; propertyChanged(ean, oldValue); } public String getSend_dir(){ return send_dir; } public void setSend_dir(String send_dir){ String oldValue = this.send_dir; this.send_dir = send_dir; propertyChanged(send_dir, oldValue); } public String getReceive_dir(){ return receive_dir; } public void setReceive_dir(String receive_dir){ String oldValue = this.receive_dir; this.receive_dir = receive_dir; propertyChanged(receive_dir, oldValue); } public String getReceivetest_dir(){ return receivetest_dir; } public void setReceivetest_dir(String receivetest_dir){ String oldValue = this.receivetest_dir; this.receivetest_dir = receivetest_dir; propertyChanged(receivetest_dir, oldValue); } public String getError_dir(){ return error_dir; } public void setError_dir(String error_dir){ String oldValue = this.error_dir; this.error_dir = error_dir; propertyChanged(error_dir, oldValue); } public String getDocstat_dir(){ return docstat_dir; } public void setDocstat_dir(String docstat_dir){ String oldValue = this.docstat_dir; this.docstat_dir = docstat_dir; propertyChanged(docstat_dir, oldValue); } public String getPartner_file(){ return partner_file; } public void setPartner_file(String partner_file){ String oldValue = this.partner_file; this.partner_file = partner_file; propertyChanged(partner_file, oldValue); } public String getStylesheet(){ return stylesheet; } public void setStylesheet(String stylesheet){ String oldValue = this.stylesheet; this.stylesheet = stylesheet; propertyChanged(stylesheet, oldValue); } private class StringComparator implements Comparator<String> { public int compare(String s1, String s2){ return s1.compareTo(s2); } } }