Filter getAndClearFilterObject() { filterChange.setChanged(); synchronized (filterChange) { filterChange.notifyAll(); } Filter last = activeFilter; activeFilter = null; return last; }
private synchronized void notify(String state) { if (!verbose) { return; } if (activity != state) { activityObserver.setChanged(); } if (state == BUSY || state == FAILURE || state == CLEARING) { filterChange.setChanged(); filterChange.notifyObservers(false); } activity = state; activityObserver.notifyObservers(state); }
public void addActivityObserver(Observer observer) { activityObserver.addObserver(observer); }
public void addLoadedObserver(Observer observer) { loadedObserver.addObserver(observer); }
public void addFilterChangeObserver(Observer observer) { filterChange.addObserver(observer); }
private void load() { if (fpc == null) { LogEmitter.factory .get() .emit( this, Core.ALERT.DANGER, "Fingerprint Compiler is disabled. Do you have the correct JDK installed?"); return; } try { notify(FManager.BUSY); pending.removeIf( f -> { try { if (loaded.contains(f)) { loadedObserver.setChanged(); loadedObserver.notifyObservers(f); notify(FManager.BUSY); lastReportedProgress = getProgressInt(); return true; } else { loaded.remove(f); fpc.generateOnComplete(f, fpc::compile); loaded.add(f); lastReportedProgress = getProgressInt(); return true; } } catch (Exception ex) { Logger.getLogger(FManager.class.getName()).log(Level.SEVERE, null, ex); LogEmitter.factory .get() .emit( this, Core.ALERT.DANGER, f.getName() + " did not load because " + ex.getLocalizedMessage()); return false; } }); loadedObserver.setChanged(); loadedObserver.notifyObservers( "Parsing complete " + loaded.size() + " of " + (loaded.size() + pending.size())); if (loaded.isEmpty()) { filterChange.notifyObservers(false); notify(FManager.FAILURE); return; } try { fpc.generateFilter(); fpc.compileFilter(); fpc.updateFilter(); /** invokes previously set callback */ filterChange.setChanged(); filterChange.notifyObservers(true); } catch (Exception ex) { Logger.getLogger(FManager.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); filterChange.notifyObservers(false); notify(FManager.FAILURE); } notify(FManager.COMPLETE); } catch (Exception ex) { Logger.getLogger(FManager.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); } finally { done(); } }