示例#1
0
  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();
    }
  }