
org.bidib.wizard.mvc.firmware.model.FirmwareModel Maven / Gradle / Ivy
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