diff --git a/META-INF/2Pack.zip b/META-INF/2Pack.zip index 3ebc258..fbdbf1a 100644 Binary files a/META-INF/2Pack.zip and b/META-INF/2Pack.zip differ diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index afc0134..ec5b6a3 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: beluga.serverprint Bundle-SymbolicName: beluga.serverprint -Bundle-Version: 5.0.0.qualifier +Bundle-Version: 5.1.0.qualifier Service-Component: OSGI-INF/*.xml Bundle-RequiredExecutionEnvironment: JavaSE-11 Require-Bundle: org.adempiere.base;bundle-version="5.1.0", diff --git a/src/de/schoenbeck/serverprint/model/MPrinterProvider.java b/src/de/schoenbeck/serverprint/model/MPrinterProvider.java index 85fad3f..702dc28 100644 --- a/src/de/schoenbeck/serverprint/model/MPrinterProvider.java +++ b/src/de/schoenbeck/serverprint/model/MPrinterProvider.java @@ -32,8 +32,8 @@ public MPrinterProvider(Properties ctx, ResultSet rs, String trxName) { } public List getKnownPrinters() { - final String sql = "SELECT * FROM " + MPrinter.Table_Name - + " WHERE " + MPrinterProvider.Table_Name + " = ?"; + final String sql = "SELECT DISTINCT * FROM " + MPrinter.Table_Name + + " WHERE " + MPrinter.COLUMNNAME_sbsp_printerprovider_ID + " = ?"; LinkedList rtn = new LinkedList<>(); PreparedStatement ps = null; diff --git a/src/de/schoenbeck/serverprint/printProvider/ServerPrintPrinterLookupProcess.java b/src/de/schoenbeck/serverprint/printProvider/ServerPrintPrinterLookupProcess.java index 50e8302..1327626 100644 --- a/src/de/schoenbeck/serverprint/printProvider/ServerPrintPrinterLookupProcess.java +++ b/src/de/schoenbeck/serverprint/printProvider/ServerPrintPrinterLookupProcess.java @@ -25,13 +25,14 @@ protected String doIt() throws Exception { .orElseThrow( () -> new NoSuchElementException("The provider does not exist.") ); var printers = lookupProcess.getAvailablePrinters(record_id, get_TrxName()); - var knownPrinters = new HashSet(); - for (int i : provider.getKnownPrinterIDs()) - knownPrinters.add(i); + HashSet knownPrinters = new HashSet<>(provider.getKnownPrinters()); + outerloop: for (MPrinter p : printers) { - if (!knownPrinters.contains(p.get_ID())) - p.save(); + for (var k : knownPrinters) + if (p.getValue().equals(k.getValue())) + break outerloop; + p.save(); } //TODO: optionally show printers to user and let them select, which to keep