All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bidib.wizard.mvc.firmware.model.FirmwareModel Maven / Gradle / Ivy

There is a newer version: 2.0.0-M1
Show newest version
package org.bidib.wizard.mvc.firmware.model;

import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import org.bidib.jbidibc.exchange.firmware.FirmwareNode;
import org.bidib.wizard.mvc.firmware.model.listener.FirmwareModelListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jgoodies.binding.beans.Model;

public class FirmwareModel extends Model {
    private static final Logger LOGGER = LoggerFactory.getLogger(FirmwareModel.class);

    private static final long serialVersionUID = 1L;

    public static final String PROPERTYNAME_IN_PROGRESS = "inProgress";

    public static final String PROPERTYNAME_IDLE = "idle";

    public static final String PROPERTYNAME_IDLE_AND_VALID = "idleAndValid";

    public static final String PROPERTYNAME_UPDATE_STATUS = "updateStatus";

    private final Collection listeners = new LinkedList();

    private boolean inProgress = false;

    private int progressValue = 0;

    private String nodeName;

    private String uniqueId;

    private String version;

    private boolean errorDetected = false;

    private String firmwareArchivePath;

    private List firmwareFiles;

    private UpdateStatus updateStatus = UpdateStatus.NONE;

    public void addFirmwareModelListener(FirmwareModelListener l) {
        listeners.add(l);
    }

    public void removeFirmwareModelListener(FirmwareModelListener l) {
        listeners.remove(l);
    }

    public boolean isInProgress() {
        return inProgress;
    }

    public void setInProgress(boolean inProgress) {
        boolean oldValue = this.inProgress;
        boolean oldIdleAndValid = isIdleAndValid();

        this.inProgress = inProgress;
        firePropertyChange(PROPERTYNAME_IN_PROGRESS, oldValue, inProgress);

        firePropertyChange(PROPERTYNAME_IDLE, !oldValue, !inProgress);

        firePropertyChange(PROPERTYNAME_IDLE_AND_VALID, oldIdleAndValid, isIdleAndValid());
    }

    public void setIdle(boolean idle) {
        boolean oldValue = !this.inProgress;
        boolean oldIdleAndValid = isIdleAndValid();

        this.inProgress = !idle;
        firePropertyChange(PROPERTYNAME_IDLE, oldValue, inProgress);

        firePropertyChange(PROPERTYNAME_IDLE_AND_VALID, oldIdleAndValid, isIdleAndValid());
    }

    public boolean isIdle() {
        return !inProgress;
    }

    public boolean isIdleAndValid() {
        boolean isIdleAndValid = !inProgress && !UpdateStatus.NODE_LOST.equals(updateStatus);
        LOGGER.info("isIdleAndValid: {}, inProgress: {}, updateStatus: {}", isIdleAndValid, inProgress, updateStatus);
        return isIdleAndValid;
    }

    public int getProgressValue() {
        return progressValue;
    }

    public void setProgressValue(int progressValue) {
        if (this.progressValue != progressValue) {
            this.progressValue = progressValue;
            fireProgressChanged(progressValue);
        }
    }

    public void addProcessingStatus(String processingStatus, final int style, Object... args) {

        fireProcessingStatusChanged(processingStatus, style, args);
    }

    /**
     * @return the nodeName
     */
    public String getNodeName() {
        return nodeName;
    }

    /**
     * @param nodeName
     *            the nodeName to set
     */
    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }

    public String getUniqueId() {
        return uniqueId;
    }

    public void setUniqueId(String uniqueId) {
        this.uniqueId = uniqueId;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * @return the errorDetected
     */
    public boolean isErrorDetected() {
        return errorDetected;
    }

    /**
     * Set the firmware file to use
     * 
     * @param firmwareFiles
     *            the files
     * @param firmwareArchivePath
     *            the path to the archive
     */
    public void setFirmwareFiles(String firmwareArchivePath, List firmwareFiles) {
        this.firmwareArchivePath = firmwareArchivePath;
        this.firmwareFiles = firmwareFiles;

        fireFirmwareFileChanged();
    }

    public List getFirmwareFiles() {
        List files = new LinkedList<>();
        files.addAll(firmwareFiles);
        return Collections.unmodifiableList(files);
    }

    public String getFirmwareArchivePath() {
        return firmwareArchivePath;
    }

    /**
     * @return the updateStatus
     */
    public UpdateStatus getUpdateStatus() {
        return updateStatus;
    }

    /**
     * @param updateStatus
     *            the updateStatus to set
     */
    public void setUpdateStatus(UpdateStatus updateStatus) {
        UpdateStatus oldValue = this.updateStatus;
        boolean oldIdleAndValid = isIdleAndValid();

        this.updateStatus = updateStatus;
        firePropertyChange(PROPERTYNAME_UPDATE_STATUS, oldValue, updateStatus);

        firePropertyChange(PROPERTYNAME_IDLE_AND_VALID, oldIdleAndValid, isIdleAndValid());
    }

    private void fireProcessingStatusChanged(String processingStatus, final int style, Object... args) {
        for (FirmwareModelListener l : listeners) {
            l.processingStatusChanged(processingStatus, style, args);
        }
    }

    private void fireProgressChanged(int progressValue) {
        for (FirmwareModelListener l : listeners) {
            l.progressValueChanged(progressValue);
        }
    }

    private void fireFirmwareFileChanged() {
        for (FirmwareModelListener l : listeners) {
            l.firmwareFileChanged();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy