Java tutorial
/******************************************************************************* * 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.handler; import java.io.File; import java.io.IOException; import java.util.List; import org.apache.commons.io.FileUtils; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.ui.statushandlers.StatusManager; import at.medevit.elexis.gdt.Activator; import at.medevit.elexis.gdt.constants.GDTConstants; import at.medevit.elexis.gdt.interfaces.IGDTCommunicationPartner; import at.medevit.elexis.gdt.tools.GDTCommPartnerCollector; import at.medevit.elexis.gdt.tools.GDTSatzNachrichtHelper; import ch.elexis.core.ui.util.Log; public class GDTFileInputHandler { private static Log logger = Log.get(GDTFileInputHandler.class.getName()); public static void handle(File file) { String[] lines = readFileGetUTF8(file); int satzkennung = 0; if (lines != null) { String satzkennungString = GDTSatzNachrichtHelper .getValueIfExists(GDTConstants.FELDKENNUNG_SATZIDENTIFIKATION, lines); satzkennung = Integer.parseInt(satzkennungString); } IGDTCommunicationPartner cp = GDTCommPartnerCollector .identifyCommunicationPartnerByIncomingDirectory(file.getParent()); boolean delivered = false; switch (satzkennung) { case GDTConstants.SATZART_STAMMDATEN_ANFORDERN: delivered = GDTInputHandler.handleSatznachricht6300(lines, file.getName(), cp); if (delivered) delete(file); break; case GDTConstants.SATZART_DATEN_EINER_UNTERSUCHUNG_UEBERMITTELN: delivered = GDTInputHandler.handleSatznachricht6310(lines, file.getName(), cp); if (delivered) delete(file); break; case GDTConstants.SATZART_DATEN_EINER_UNTERSUCHUNG_ZEIGEN: GDTInputHandler.handleSatznachricht6311(lines, file.getName(), cp); break; case GDTConstants.SATZART_STAMMDATEN_UEBERMITTELN: GDTInputHandler.handleSatznachricht6301(lines, file.getName(), cp); break; case GDTConstants.SATZART_UNTERSUCHUNG_ANFORDERN: GDTInputHandler.handleSatznachricht6302(lines, file.getName(), cp); default: break; } } private static void delete(File file) { try { boolean deleted = file.delete(); if (deleted) { logger.log("Deleted " + file.getAbsolutePath(), Log.DEBUGMSG); } else { logger.log("Error deleting " + file.getAbsolutePath(), Log.WARNINGS); } } catch (SecurityException e) { logger.log(e, "Error deleting " + file.getAbsolutePath(), Log.WARNINGS); } } public static String[] readFileGetUTF8(File file) { int encoding = GDTConstants.ZEICHENSATZ_IBM_CP_437; try { List<String> dataList = FileUtils.readLines(file, "cp437"); String[] data = dataList.toArray(new String[] {}); String usedEncoding = GDTSatzNachrichtHelper .getValueIfExists(GDTConstants.FELDKENNUNG_VERWENDETER_ZEICHENSATZ, data); if (usedEncoding == null) return data; // Not set return default encoding int usedEncodingInt = Integer.parseInt(usedEncoding); if (encoding == usedEncodingInt) return data; // Set, but default if (usedEncodingInt == GDTConstants.ZEICHENSATZ_7BIT) { return FileUtils.readLines(file, GDTConstants.ZEICHENSATZ_7BIT_CHARSET_STRING) .toArray(new String[] {}); } else if (usedEncodingInt == GDTConstants.ZEICHENSATZ_ISO8859_1_ANSI_CP_1252) { return FileUtils.readLines(file, "Cp1252").toArray(new String[] {}); } } catch (IOException e) { String message = "GDT: Ein-/Ausgabe Fehler beim Lesen von " + file.getAbsolutePath(); Status status = new Status(IStatus.WARNING, Activator.PLUGIN_ID, message, e); StatusManager.getManager().handle(status, StatusManager.SHOW); logger.log(e, message, Log.WARNINGS); } return null; } }