package ch.medshare.mediport.util; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.net.URL; import java.util.List; import java.util.Vector; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.osgi.framework.Bundle; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.constants.ExtensionPointConstantsData; import ch.elexis.core.ui.constants.ExtensionPointConstantsUi; import ch.elexis.core.ui.preferences.SettingsPreferenceStore; import ch.elexis.core.data.util.Extensions; import ch.elexis.core.data.interfaces.IRnOutputter; import ch.elexis.core.ui.util.Log; import ch.medshare.mediport.config.Client; import ch.medshare.mediport.config.ClientParam; import ch.medshare.mediport.config.MPCProperties; import ch.medshare.util.SystemProperties; import ch.medshare.util.UtilFile; import ch.rgw.tools.ExHandler; public class MediPortHelper { private static final String module = MediPortHelper.class.getName(); private static final String MPC_NUMBER_POSTFIX = "/mpc_number";//$NON-NLS-1$ public final static FilenameFilter XML_FILTER = new FilenameFilter() { public boolean accept(File dir, String name){ return name.toUpperCase().endsWith(".XML"); //$NON-NLS-1$ } }; private static MPCProperties getProperties(){ MPCProperties props = null; try { props = MPCProperties.getCurrent(); } catch (IOException e) { Log.get(module).log(e.getMessage(), Log.WARNINGS); } return props; } public static String getMandantPrefix(String label){ return label + MPC_NUMBER_POSTFIX; } public static Client getCurrentClient(){ MPCProperties props = getProperties(); if (props == null) { return null; } SettingsPreferenceStore prefs = new SettingsPreferenceStore(CoreHub.globalCfg); String prefix = getMandantPrefix(CoreHub.actMandant.getLabel()); String numStr = prefs.getString(prefix); if (numStr != null && numStr.length() > 0) { return getProperties().getClient(Integer.parseInt(numStr)); } return null; } public static ClientParam getCurrentParam(String paramName){ if (paramName == null || paramName.length() == 0) { return null; } Client client = getCurrentClient(); if (client == null) { return null; } Integer paramNum = client.getParamKey(paramName); return client.getParam(paramNum); } public static List<IRnOutputter> getRnOutputter(){ List<IRnOutputter> retList = new Vector<IRnOutputter>(); for (Object outputter : Extensions.getClasses(ExtensionPointConstantsData.RECHNUNGS_MANAGER, "outputter")) { //$NON-NLS-1$ //$NON-NLS-2$ if (outputter instanceof IRnOutputter) { retList.add((IRnOutputter) outputter); } } return retList; } public static int getReturnFiles(){ Client client = getCurrentClient(); if (client != null) { int errorCount = 0; final File errorDir = new File(client.getError_dir()); if (errorDir.exists()) { errorCount = errorDir.list(XML_FILTER).length; } int receiveCount = 0; final File receiveDir = new File(client.getReceive_dir()); if (receiveDir.exists()) { receiveCount = receiveDir.list(XML_FILTER).length; } return errorCount + receiveCount; } return 0; } public static String getPluginDirectory(String pluginName){ String filePath = null; Bundle bundle = Platform.getBundle(pluginName); //$NON-NLS-1$ if (bundle != null) { Path path = new Path("/"); URL url = FileLocator.find(bundle, path, null); try { filePath = FileLocator.toFileURL(url).getPath(); filePath = filePath.substring(1); } catch (IOException e) { ExHandler.handle(e); } } if (filePath != null) { //$NON-NLS-1$ return UtilFile.getCorrectPath(filePath); } return SystemProperties.USER_DIR + UtilFile.DIRECTORY_SEPARATOR; } }