protected void processFirmwares() throws SetupException {
    List<String> filenames = this.getFilenames();
    ManagementBeanFactory factory = null;
    try {
      factory = this.getManagementBeanFactory();
      ModelBean modelBean = factory.createModelBean();

      // Import Profile Mappings
      for (String filename : filenames) {
        // Process the file, and import data into database.
        File file = new File(filename);
        if (!file.isAbsolute()) {
          file = new File(this.getSetup().getWorkDir(), filename);
        }

        this.getSetup()
            .getConsole()
            .println("         Loading file [ " + file.getAbsolutePath() + " ]");
        List<ManufacturerItem> items = this.loadManufacturerItems(file.getAbsolutePath());
        for (ManufacturerItem manufacturerItem : items) {
          List<ModelItem> modelItems = manufacturerItem.getModels();
          Manufacturer manufacturer =
              modelBean.getManufacturerByExternalID(manufacturerItem.getExternalID());
          for (ModelItem modelItem : modelItems) {
            // Copy information from family
            this.copyFromFamily(modelItem);

            Model model =
                modelBean.getModelByManufacturerModelID(manufacturer, modelItem.getExternalID());

            if (!modelItem.getFirmwares().isEmpty()) {
              this.getSetup()
                  .getConsole()
                  .println(
                      "         * Importing Firmwares for [ "
                          + manufacturer.getExternalId()
                          + " "
                          + model.getManufacturerModelId()
                          + " ]");
            }
            for (FirmwareItem firmwareItem : modelItem.getFirmwares()) {
              File firmwareFile = new File(firmwareItem.getFilename());
              if (!firmwareFile.isAbsolute()) {
                firmwareFile = new File(this.getSetup().getWorkDir(), firmwareItem.getFilename());
              }
              if (!firmwareFile.exists()) {
                this.getSetup()
                    .getConsole()
                    .println("Could not load firmware from: " + firmwareFile.getAbsolutePath());
                continue;
              }
              String fromVersion = firmwareItem.getFromVersion();
              String toVersion = firmwareItem.getToVersion();
              this.importFirmware(
                  manufacturer.getExternalId(),
                  model.getManufacturerModelId(),
                  fromVersion,
                  toVersion,
                  firmwareFile.getAbsolutePath());
            }
          }
        }
      }
    } catch (Exception ex) {
      throw new SetupException("Error in import models.", ex);
    } finally {
      if (factory != null) {
        factory.release();
      }
    }
  }