Fix cancel action status (#429)

* Fixed handling of action cancellation status updates.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix broken DDI test.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Code readibility.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Reduce access to default.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Added test for finished on action that is in cancelling.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Update MariaDb driver

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Wrong branch

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Remove duplicate status definition.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Use updated picture in docs.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Leverage existing statics.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix picture upload.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Revert change

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2017-02-07 09:57:57 +01:00
committed by GitHub
parent 21181bc6f8
commit 1ad9b915c4
19 changed files with 513 additions and 273 deletions

View File

@@ -33,6 +33,7 @@ import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.slf4j.Logger;
@@ -72,7 +73,6 @@ public class ActionHistoryTable extends TreeTable {
private static final Logger LOG = LoggerFactory.getLogger(ActionHistoryTable.class);
private static final String BUTTON_CANCEL = "button.cancel";
private static final String BUTTON_OK = "button.ok";
private static final String STATUS_ICON_GREEN = "statusIconGreen";
private final I18N i18n;
private final transient DeploymentManagement deploymentManagement;
@@ -504,50 +504,21 @@ public class ActionHistoryTable extends TreeTable {
*/
private Label getStatusIcon(final Action.Status status) {
final Label label = new LabelBuilder().name("").buildLabel();
final String statusIconPending = "statusIconPending";
label.setContentMode(ContentMode.HTML);
if (Action.Status.FINISHED == status) {
label.setDescription(i18n.get("label.finished"));
label.setStyleName(STATUS_ICON_GREEN);
label.setValue(FontAwesome.CHECK_CIRCLE.getHtml());
} else if (Action.Status.ERROR == status) {
label.setDescription(i18n.get("label.error"));
label.setStyleName("statusIconRed");
label.setValue(FontAwesome.EXCLAMATION_CIRCLE.getHtml());
} else if (Action.Status.WARNING == status) {
label.setStyleName("statusIconOrange");
label.setDescription(i18n.get("label.warning"));
label.setValue(FontAwesome.EXCLAMATION_CIRCLE.getHtml());
} else if (Action.Status.RUNNING == status) {
// dynamic spinner
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.running"));
label.setValue(FontAwesome.ADJUST.getHtml());
} else if (Action.Status.CANCELING == status) {
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.cancelling"));
label.setValue(FontAwesome.TIMES_CIRCLE.getHtml());
} else if (Action.Status.CANCELED == status) {
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.cancelled"));
label.setStyleName(STATUS_ICON_GREEN);
label.setValue(FontAwesome.TIMES_CIRCLE.getHtml());
} else if (Action.Status.RETRIEVED == status) {
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.retrieved"));
label.setValue(FontAwesome.CIRCLE_O.getHtml());
} else if (Action.Status.DOWNLOAD == status) {
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.download"));
label.setValue(FontAwesome.CLOUD_DOWNLOAD.getHtml());
} else if (Action.Status.SCHEDULED == status) {
label.setStyleName(statusIconPending);
label.setDescription(i18n.get("label.scheduled"));
label.setValue(FontAwesome.HOURGLASS_1.getHtml());
} else {
final ActionStatusIconMapper mapping = ActionStatusIconMapper.MAPPINGS.get(status);
if (mapping == null) {
LOG.error("Unknown status icon mapping");
label.setDescription("");
label.setValue("");
return label;
}
label.setDescription(i18n.get(mapping.getDescriptionI18N()));
label.setStyleName(mapping.getStyleName());
label.setValue(mapping.getIcon().getHtml());
return label;
}
@@ -568,7 +539,7 @@ public class ActionHistoryTable extends TreeTable {
if (actionWithActiveStatus.isHitAutoForceTime(currentTimeMillis)) {
autoForceLabel.setDescription("autoforced");
autoForceLabel.setStyleName(STATUS_ICON_GREEN);
autoForceLabel.setStyleName(SPUIStyleDefinitions.STATUS_ICON_GREEN);
autoForceLabel.setDescription("auto forced since " + SPDateTimeUtil
.getDurationFormattedString(actionWithActiveStatus.getForcedTime(), currentTimeMillis, i18n));
} else {

View File

@@ -0,0 +1,75 @@
/**
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.eclipse.hawkbit.ui.management.actionhistory;
import java.util.Map;
import org.eclipse.hawkbit.repository.model.Action;
import org.eclipse.hawkbit.repository.model.ActionStatus;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import com.google.common.collect.Maps;
import com.vaadin.server.FontAwesome;
/**
* Mapping utility for {@link ActionStatus} to icon in action history table.
*
*/
public final class ActionStatusIconMapper {
static final Map<Action.Status, ActionStatusIconMapper> MAPPINGS = Maps.newHashMapWithExpectedSize(10);
static {
MAPPINGS.put(Action.Status.FINISHED, new ActionStatusIconMapper("label.finished",
SPUIStyleDefinitions.STATUS_ICON_GREEN, FontAwesome.CHECK_CIRCLE));
MAPPINGS.put(Action.Status.CANCELED, new ActionStatusIconMapper("label.cancelled",
SPUIStyleDefinitions.STATUS_ICON_GREEN, FontAwesome.TIMES_CIRCLE));
MAPPINGS.put(Action.Status.ERROR, new ActionStatusIconMapper("label.error",
SPUIStyleDefinitions.STATUS_ICON_RED, FontAwesome.EXCLAMATION_CIRCLE));
MAPPINGS.put(Action.Status.WARNING, new ActionStatusIconMapper("label.warning",
SPUIStyleDefinitions.STATUS_ICON_ORANGE, FontAwesome.EXCLAMATION_CIRCLE));
MAPPINGS.put(Action.Status.CANCEL_REJECTED, new ActionStatusIconMapper("label.warning",
SPUIStyleDefinitions.STATUS_ICON_ORANGE, FontAwesome.EXCLAMATION_CIRCLE));
MAPPINGS.put(Action.Status.RUNNING, new ActionStatusIconMapper("label.running",
SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.ADJUST));
MAPPINGS.put(Action.Status.CANCELING, new ActionStatusIconMapper("label.cancelling",
SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.TIMES_CIRCLE));
MAPPINGS.put(Action.Status.RETRIEVED, new ActionStatusIconMapper("label.retrieved",
SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.CIRCLE_O));
MAPPINGS.put(Action.Status.DOWNLOAD, new ActionStatusIconMapper("label.download",
SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.CLOUD_DOWNLOAD));
MAPPINGS.put(Action.Status.SCHEDULED, new ActionStatusIconMapper("label.scheduled",
SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.HOURGLASS_1));
}
private final String descriptionI18N;
private final String styleName;
private final FontAwesome icon;
private ActionStatusIconMapper(final String descriptionI18N, final String styleName, final FontAwesome icon) {
this.descriptionI18N = descriptionI18N;
this.styleName = styleName;
this.icon = icon;
}
String getDescriptionI18N() {
return descriptionI18N;
}
String getStyleName() {
return styleName;
}
FontAwesome getIcon() {
return icon;
}
}

View File

@@ -183,6 +183,11 @@ public final class SPUIStyleDefinitions {
*/
public static final String STATUS_ICON_RED = "statusIconRed";
/**
* Status icon style - orange color.
*/
public static final String STATUS_ICON_ORANGE = "statusIconOrange";
/**
* Status icon style - green color.
*/