/*******************************************************************************
* Copyright (c) 2011-2016 Medevit OG, Medelexis AG
* 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:
* Marco Descher, initial API and implementaion
* Lucia Amman, bug fixes and improvements
* Sponsors: M. + P. Richter
*******************************************************************************/
package at.medevit.elexis.gdt.defaultfilecp;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import at.medevit.elexis.gdt.constants.Feld8402Constants;
import at.medevit.elexis.gdt.constants.GDTConstants;
import at.medevit.elexis.gdt.constants.GDTPreferenceConstants;
import at.medevit.elexis.gdt.constants.SystemConstants;
import at.medevit.elexis.gdt.interfaces.IGDTCommunicationPartner;
import at.medevit.elexis.gdt.interfaces.IGDTCommunicationPartnerProvider;
public class DefaultFileCommPartner implements IGDTCommunicationPartnerProvider {
private FileCommPartner defaultFileCommPartner = new FileCommPartner();
@Override
public int getConnectionType(){
return SystemConstants.FILE_COMMUNICATION;
}
@Override
public String getConnectionString(){
return null;
}
@Override
public String getLabel(){
return defaultFileCommPartner.getSettings()
.get(defaultFileCommPartner.getFileTransferName(), "") + " ("
+ defaultFileCommPartner.getSettings()
.get(defaultFileCommPartner.getFileTransferDirectory(), "")
+ ")";
}
@Override
public String getIDReceiver(){
return defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferIdReceiver(), "MEDICALDEVICE");
}
@Override
public String getShortIDReceiver(){
return defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferShortIdReceiver(), "MDEV");
}
@Override
public String[] getSupported8402values(){
return Feld8402Constants.enumNameToStringArray(Feld8402Constants.ALL.values());
}
@Override
public String[] getSupported8402valuesDescription(){
return Feld8402Constants.enumNameToStringArrayDescription(Feld8402Constants.ALL.values());
}
@Override
public String[] getSupported8402valuesDetailDescription(){
return null;
}
@Override
public String getRequiredFileType(){
return defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferUsedType(),
GDTConstants.GDT_FILETRANSFER_TYPE_HOCHZAEHLEND);
}
@Override
public String getIncomingDirectory(){
return defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferInDirectory(),
"");
}
@Override
public String getOutgoingDirectory(){
return defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferOutDirectory(),
"");
}
@Override
public int getIncomingDefaultCharset(){
String charset =
defaultFileCommPartner.getSettings().get(GDTPreferenceConstants.CFG_GDT_CHARSET,
GDTConstants.ZEICHENSATZ_ISO8859_1_ANSI_CP_1252_CHARSET_STRING);
return GDTConstants.getCharsetIntByString(charset);
}
@Override
public int getOutgoingDefaultCharset(){
String charset =
defaultFileCommPartner.getSettings().get(GDTPreferenceConstants.CFG_GDT_CHARSET,
GDTConstants.ZEICHENSATZ_ISO8859_1_ANSI_CP_1252_CHARSET_STRING);
return GDTConstants.getCharsetIntByString(charset);
}
@Override
public String getExternalHandlerProgram(){
String executable =
defaultFileCommPartner.getSettings().get(
defaultFileCommPartner.getFileTransferExecuteable(),
null);
if (executable != null) {
File execFile = new File(executable);
if (execFile.canExecute())
return executable;
}
return null;
}
@Override
public String getFixedCommmunicationFileName(){
return null;
}
@Override
public String getId(){
return defaultFileCommPartner.getId();
}
@Override
public List<IGDTCommunicationPartner> getChildCommunicationPartners() {
List<IGDTCommunicationPartner> communicationPartners = new ArrayList<IGDTCommunicationPartner>();
final DefaultFileCommPartner parent = this;
for (String id : FileCommPartner.getAllFileCommPartnersArray())
{
if (!defaultFileCommPartner.getId().equals(id))
{
final FileCommPartner fileCommPartner = new FileCommPartner(id);
communicationPartners.add(new IGDTCommunicationPartnerProvider() {
@Override
public String[] getSupported8402valuesDetailDescription() {
return parent.getSupported8402valuesDetailDescription();
}
@Override
public String[] getSupported8402valuesDescription() {
return parent.getSupported8402valuesDescription();
}
@Override
public String[] getSupported8402values() {
return parent.getSupported8402values();
}
@Override
public String getShortIDReceiver() {
return defaultFileCommPartner.getSettings()
.get(fileCommPartner.getFileTransferShortIdReceiver(), "MDEV");
}
@Override
public String getRequiredFileType() {
return defaultFileCommPartner.getSettings().get(
fileCommPartner.getFileTransferUsedType(),
GDTConstants.GDT_FILETRANSFER_TYPE_HOCHZAEHLEND);
}
@Override
public String getOutgoingDirectory() {
return defaultFileCommPartner.getSettings().get(
fileCommPartner.getFileTransferOutDirectory(),
"");
}
@Override
public int getOutgoingDefaultCharset() {
return parent.getOutgoingDefaultCharset();
}
@Override
public String getLabel() {
return defaultFileCommPartner.getSettings()
.get(fileCommPartner.getFileTransferName(), "")
+ " ("
+ defaultFileCommPartner.getSettings()
.get(fileCommPartner.getFileTransferDirectory(), "") + ")";
}
@Override
public String getIncomingDirectory() {
return defaultFileCommPartner.getSettings().get(
fileCommPartner.getFileTransferInDirectory(),
"");
}
@Override
public int getIncomingDefaultCharset() {
return parent.getIncomingDefaultCharset();
}
@Override
public String getIDReceiver() {
return defaultFileCommPartner.getSettings()
.get(fileCommPartner.getFileTransferIdReceiver(), "MEDICALDEVICE");
}
@Override
public String getFixedCommmunicationFileName() {
return parent.getFixedCommmunicationFileName();
}
@Override
public String getExternalHandlerProgram() {
String executable =
defaultFileCommPartner.getSettings()
.get(fileCommPartner.getFileTransferExecuteable(),
null);
if (executable != null) {
File execFile = new File(executable);
if (execFile.canExecute())
return executable;
}
return null;
}
@Override
public int getConnectionType() {
return parent.getConnectionType();
}
@Override
public String getConnectionString() {
return parent.getConnectionString();
}
@Override
public List<IGDTCommunicationPartner> getChildCommunicationPartners(){
return Collections.emptyList();
}
@Override
public String getId(){
return fileCommPartner.getId();
}
});
}
}
return communicationPartners;
}
}