Gilad Chaplik has posted comments on this change.
Change subject: webadmin: adding Affinity Groups views
......................................................................
Patch Set 8: Verified+1
(48 comments)
THANKS Lior! I really appreciate your comprehensive review :-)
this patch is now depending on a patch that allows to extend KeyValueModel.
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/VmSelectionModel.java
Line 5: import org.ovirt.engine.ui.uicommonweb.models.ListModel;
Line 6: import org.ovirt.engine.ui.uicommonweb.models.Model;
Line 7:
Line 8: public class VmSelectionModel extends Model {
Line 9: ListModel<Pair<String, VM>> vms;
Sure.. but I'd like to do the entire re-factoring of the keyValueModel in a
later patch, as part of this patchset, including this one (although not that
related).
Line 10:
Line 11: public VmSelectionModel() {
Line 12: setVms(new ListModel<Pair<String, VM>>());
Line 13: }
Line 15: public ListModel<Pair<String, VM>> getVms() {
Line 16: return vms;
Line 17: }
Line 18:
Line 19: public void setVms(ListModel<Pair<String, VM>> vms) {
Done
Line 20: this.vms = vms;
Line 21: }
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/VmsSelectionModel.java
Line 13: import org.ovirt.engine.ui.uicompat.Event;
Line 14: import org.ovirt.engine.ui.uicompat.EventArgs;
Line 15: import org.ovirt.engine.ui.uicompat.IEventListener;
Line 16:
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
agree, as mentioned already, if that is okay by you I will do it in the next
patch, and maybe squash it later on.
Line 18:
Line 19: public final static Pair<String, VM> SELECT_KEY = new Pair<String,
VM>("select a VM", null); //$NON-NLS-1$
Line 20: public final static Pair<String, VM> NO_KEYS = new Pair<String,
VM>("no available vms", null); //$NON-NLS-1$
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Line 21:
Line 15: import org.ovirt.engine.ui.uicompat.IEventListener;
Line 16:
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
Line 18:
Line 19: public final static Pair<String, VM> SELECT_KEY = new Pair<String,
VM>("select a VM", null); //$NON-NLS-1$
good thing you're here.
Done.
Line 20: public final static Pair<String, VM> NO_KEYS = new Pair<String,
VM>("no available vms", null); //$NON-NLS-1$
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Line 21:
Line 22: Map<Guid, VM> allVmMap;
Line 23: private final Map<Guid, VM> usedVmMap = new HashMap<Guid, VM>();
Line 16:
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
Line 18:
Line 19: public final static Pair<String, VM> SELECT_KEY = new Pair<String,
VM>("select a VM", null); //$NON-NLS-1$
Line 20: public final static Pair<String, VM> NO_KEYS = new Pair<String,
VM>("no available vms", null); //$NON-NLS-1$
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Done
Line 21:
Line 22: Map<Guid, VM> allVmMap;
Line 23: private final Map<Guid, VM> usedVmMap = new HashMap<Guid, VM>();
Line 24: boolean disableEvent = false;
Line 98:
Line 99: public List<Pair<String, VM>> getAvailableKeys() {
Line 100: Map<Guid, Pair<String, VM>> map = new HashMap<Guid,
Pair<String, VM>>();
Line 101:
Line 102: if (allVmMap != null) {
I guess that I'll use the keyValueModel impl which is good :) you re-factored
it so it has to :P (next patch)
Done.
Line 103: for (VM vm : allVmMap.values()) {
Line 104: if (!usedVmMap.containsKey(vm.getId())) {
Line 105: map.put(vm.getId(), new Pair<String,
VM>(vm.getName(), vm));
Line 106: }
Line 116:
Line 117: return list;
Line 118: }
Line 119:
Line 120: public void updateKeys() {
same.
Line 121: if (getItems() != null && usedVmMap != null) {
Line 122: disableEvent = true;
Line 123: usedVmMap.clear();
Line 124: for (VmSelectionModel vmSelectionModel : getItems()) {
Line 146: }
Line 147: return list;
Line 148: }
Line 149:
Line 150: public boolean validate() {
oops.
Done
Line 151: boolean isValid = true;
Line 152:
Line 153: return isValid;
Line 154: }
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/AffinityGroupListModel.java
Line 25: import org.ovirt.engine.ui.uicompat.ConstantsManager;
Line 26: import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult;
Line 27: import
org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback;
Line 28:
Line 29: public abstract class AffinityGroupListModel<T extends
BusinessEntity<Guid>> extends SearchableListModel<AffinityGroup> {
:-)
Line 30: private UICommand newCommand;
Line 31: private UICommand editCommand;
Line 32: private UICommand removeCommand;
Line 33:
Line 33:
Line 34: private T parentEntity;
Line 35:
Line 36: public AffinityGroupListModel() {
Line 37:
setTitle(ConstantsManager.getInstance().getConstants().affinityGroupsTitle());
for the sake of consistency (exists anywhere), I'd rather leave it.
Line 38: setHashName("affinity_groups"); // $//$NON-NLS-1$
Line 39: setAvailableInModes(ApplicationMode.VirtOnly);
Line 40:
Line 41: setNewCommand(new UICommand("New", this)); //$NON-NLS-1$
Line 35:
Line 36: public AffinityGroupListModel() {
Line 37:
setTitle(ConstantsManager.getInstance().getConstants().affinityGroupsTitle());
Line 38: setHashName("affinity_groups"); // $//$NON-NLS-1$
Line 39: setAvailableInModes(ApplicationMode.VirtOnly);
you're right, can be removed
> Also, if it is needed, this should probably be either Virt or Both, shouldn't
> it?
virt_only include both (performing OR bit arithmetic), so no.
Done.
Line 40:
Line 41: setNewCommand(new UICommand("New", this)); //$NON-NLS-1$
Line 42: setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$
Line 43: setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$
Line 66: getRemoveCommand().setIsExecutionAllowed(hasSelectedItems);
Line 67: }
Line 68:
Line 69: @Override
Line 70: protected void syncSearch() {
Done
Line 71: if (getParentEntity() != null) {
Line 72: super.syncSearch();
Line 73: AsyncQuery asyncQuery = new AsyncQuery(this, new
INewAsyncCallback() {
Line 74:
Line 76: public void onSuccess(Object model, Object
returnValue) {
Line 77: AffinityGroupListModel<?> affinityGroupListModel =
(AffinityGroupListModel<?>) model;
Line 78: ArrayList<AffinityGroup> list =
Line 79: (ArrayList<AffinityGroup>)
((VdcQueryReturnValue) returnValue).getReturnValue();
Line 80: affinityGroupListModel.setItems(list);
it's not
Line 81: }
Line 82: });
Line 83: VdcQueryParametersBase parameters = new
IdQueryParameters(getParentEntity().getId());
Line 84: parameters.setRefresh(getIsQueryFirstTime());
Line 86: setIsQueryFirstTime(false);
Line 87: }
Line 88: }
Line 89:
Line 90: protected abstract VdcQueryType getQueryType();
I agree.
Done.
Line 91:
Line 92: protected abstract ClusterResolver getClusterResolver();
Line 93:
Line 94: public UICommand getNewCommand() {
Line 88: }
Line 89:
Line 90: protected abstract VdcQueryType getQueryType();
Line 91:
Line 92: protected abstract ClusterResolver getClusterResolver();
this one isn't that static, cluster is changing according to selection. will
get back to it...
Line 93:
Line 94: public UICommand getNewCommand() {
Line 95: return newCommand;
Line 96: }
Line 94: public UICommand getNewCommand() {
Line 95: return newCommand;
Line 96: }
Line 97:
Line 98: public void setNewCommand(UICommand newCommand) {
Done.
Line 99: this.newCommand = newCommand;
Line 100: }
Line 101:
Line 102: @Override
Line 129: return;
Line 130: }
Line 131:
Line 132: AffinityGroupModel model = getNewAffinityGroupModel();
Line 133: model.init();
I need a init method :/
there is later comment about dangerous stuff I do in ctor.
Line 134: setWindow(model);
Line 135: }
Line 136:
Line 137: protected AffinityGroupModel getNewAffinityGroupModel() {
Line 137: protected AffinityGroupModel getNewAffinityGroupModel() {
Line 138: return new NewAffinityGroupModel(this, getClusterResolver()) {
Line 139:
Line 140: @Override
Line 141: protected AffinityGroup getAffinityGroup() {
I need it to auto add selected vm (parent) to affinity group.
changed it a bit to look nicer
Line 142: return new AffinityGroup();
Line 143: }
Line 144: };
Line 145: }
Line 151: AffinityGroup affinityGroup = getSelectedItem();
Line 152: if (affinityGroup == null) {
Line 153: return;
Line 154: }
Line 155: sortVms(affinityGroup);
removed it entirely. lets wait for the bug.
Done.
Line 156: AffinityGroupModel model = new
EditAffinityGroupModel(affinityGroup, this, getClusterResolver());
Line 157: model.init();
Line 158: setWindow(model);
Line 159: }
Line 161: protected void sortVms(AffinityGroup affinityGroup) {
Line 162:
Line 163: }
Line 164:
Line 165: private void remove() {
I will try to get to it.
Line 166: if (getWindow() != null) {
Line 167: return;
Line 168: }
Line 169:
Line 187: command.setIsCancel(true);
Line 188: model.getCommands().add(command);
Line 189: }
Line 190:
Line 191: private void onRemove() {
same.
Line 192: ConfirmationModel model = (ConfirmationModel)
getConfirmWindow();
Line 193:
Line 194: if (model.getProgress() != null) {
Line 195: return;
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/ClusterResolver.java
Line 4:
Line 5: /**
Line 6: * used to fetch cluster info for affinity groups models VM and cluster
Line 7: */
Line 8: public interface ClusterResolver {
we need somekind of a solution, for getting cluster params while changing
parent entity.
will get back to it.
Line 9: Guid getClusterId();
Line 10:
Line 11: String getClusterName();
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/VmAffinityGroupListModel.java
Line 49: }
Line 50:
Line 51: @Override
Line 52: protected void sortVms(AffinityGroup affinityGroup) {
Line 53: Collections.sort(affinityGroup.getEntityIds(), new
Comparator<Guid>() {
Done. removed altogether, will get back to it later.
Line 54:
Line 55: @Override
Line 56: public int compare(Guid o1, Guid o2) {
Line 57: if (o1.equals(getParentEntity().getId())) {
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/model/AffinityGroupModel.java
Line 35: private final ClusterResolver clusterResolver;
Line 36:
Line 37: private EntityModel<String> name;
Line 38: private EntityModel<String> description;
Line 39: private ListModel<AffinityPolarity> polarity;
Done
Line 40: private ListModel<AffinityEnforcementType> enforcementType;
Line 41: private VmsSelectionModel vmsSelectionModel;
Line 42:
Line 43:
Line 36:
Line 37: private EntityModel<String> name;
Line 38: private EntityModel<String> description;
Line 39: private ListModel<AffinityPolarity> polarity;
Line 40: private ListModel<AffinityEnforcementType> enforcementType;
Done.
Line 41: private VmsSelectionModel vmsSelectionModel;
Line 42:
Line 43:
Line 44: public AffinityGroupModel(ListModel<?> sourceListModel,
ClusterResolver clusterResolver) {
Line 55: setVmsSelectionModel(new VmsSelectionModel());
Line 56: startProgress(null);
Line 57:
Line 58: //TODO: should be by cluster id and remove clusterName method
from resolver.
Line 59: AsyncDataProvider.getVmListByClusterName(new AsyncQuery(this,
new INewAsyncCallback() {
it seems that I need a public init method.
Line 60:
Line 61: @Override
Line 62: public void onSuccess(Object model, Object returnValue) {
Line 63: ArrayList<VM> vmList = (ArrayList<VM>) returnValue;
Line 70: }
Line 71:
Line 72: public abstract void init();
Line 73:
Line 74: protected abstract AffinityGroup getAffinityGroup();
Done
Line 75:
Line 76: protected abstract VdcActionType getSaveActionType();
Line 77:
Line 78: protected void addCommands() {
Line 72: public abstract void init();
Line 73:
Line 74: protected abstract AffinityGroup getAffinityGroup();
Line 75:
Line 76: protected abstract VdcActionType getSaveActionType();
Done
Line 77:
Line 78: protected void addCommands() {
Line 79: UICommand command = new UICommand("OnSave", this);
//$NON-NLS-1$
Line 80:
command.setTitle(ConstantsManager.getInstance().getConstants().ok());
Line 89: public EntityModel<String> getName() {
Line 90: return name;
Line 91: }
Line 92:
Line 93: public void setName(EntityModel<String> name) {
Done
Line 94: this.name = name;
Line 95: }
Line 96:
Line 97: public EntityModel<String> getDescription() {
Line 135: if (!validate()) {
Line 136: return;
Line 137: }
Line 138:
Line 139: if (getProgress() != null) {
Done
Line 140: return;
Line 141: }
Line 142: AffinityGroup group = getAffinityGroup();
Line 143: group.setName(getName().getEntity());
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
Line 1817: updateWatchdogModels(osType);
Line 1818: }
Line 1819:
Line 1820: private void updateWatchdogModels() {
Line 1821: updateWatchdogModels(getOSType().getSelectedItem());
Done
Line 1822: }
Line 1823:
Line 1824: private void updateWatchdogModels(Integer osType) {
Line 1825: VDSGroup cluster = getSelectedCluster();
....................................................
File
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
Line 368: }
Line 369:
Line 370: private ErrorPopupManager errorPopupManager;
Line 371:
Line 372: private VmAffinityGroupListModel affinityGroupListModel;
Done
Line 373:
Line 374: public VmAffinityGroupListModel getAffinityGroupListModel() {
Line 375: return affinityGroupListModel;
Line 376: }
....................................................
File
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
Line 883: String AffinityEnforcementType___SOFT();
Line 884:
Line 885: String AffinityPolarity___POSITIVE();
Line 886:
Line 887: String AffinityPolarity___NEGATIVE();
removed.
....................................................
File
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
Line 2096: @DefaultStringValue("Not available when Templates are not
configured.")
Line 2097: String notAvailableWithNoTemplates();
Line 2098:
Line 2099: @DefaultStringValue("Affinity Groups")
Line 2100: String affinityGroupsTitle();
leaving for consistency reasons.
Line 2101:
Line 2102: @DefaultStringValue("New Affinity Group")
Line 2103: String newAffinityGroupsTitle();
Line 2104:
....................................................
File
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
Line 439: PolicyUnitType___LoadBalancing=Load Balancing
Line 440: AffinityEnforcementType___HARD=Hard
Line 441: AffinityEnforcementType___SOFT=Soft
Line 442: AffinityPolarity___POSITIVE=Positive
Line 443: AffinityPolarity___NEGATIVE=Negative
removed.
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
Line 3455: @DefaultStringValue("Name")
Line 3456: String affinityGroupNameLabel();
Line 3457:
Line 3458: @DefaultStringValue("Polarity")
Line 3459: String affinityGroupPolarityLabel();
the value was changed to 'positive'
Line 3460:
Line 3461: @DefaultStringValue("Enforcing")
Line 3462: String affinityGroupEnforceTypeLabel();
Line 3463:
Line 3458: @DefaultStringValue("Polarity")
Line 3459: String affinityGroupPolarityLabel();
Line 3460:
Line 3461: @DefaultStringValue("Enforcing")
Line 3462: String affinityGroupEnforceTypeLabel();
in general I'd rather have strings for each label. maybe in Klingon it
pronounces differently :)
and a good example to it, is in the previous comment: the table header is
polarity and the form label is positive.
Line 3463:
Line 3464: @DefaultStringValue("Description")
Line 3465: String affinityDescriptionLabel();
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/AffinityGroupPopupView.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
Line 3: <ui:UiBinder
Done
Line 4: xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 5: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 6: xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
Line 7: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
Line 3: <ui:UiBinder
Line 4: xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 5: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Done
Line 6: xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
Line 7: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
Line 8:
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
Line 9:
xmlns:ag="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.widgets">
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/AddRemoveVmWidget.java
Line 16: WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
Line 17: }
Line 18:
Line 19: private VmsSelectionModel model;
Line 20: private final LinkedList<VmRowWidget> widgets = new
LinkedList<VmRowWidget>();
going to re-factor it anyway in next patch.
Line 21: private boolean enabled = true;
Line 22:
Line 23: AddRemoveVmWidget() {
Line 24: initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
Line 17: }
Line 18:
Line 19: private VmsSelectionModel model;
Line 20: private final LinkedList<VmRowWidget> widgets = new
LinkedList<VmRowWidget>();
Line 21: private boolean enabled = true;
same
Line 22:
Line 23: AddRemoveVmWidget() {
Line 24: initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
Line 25: }
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/AddRemoveVmWidget.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
Done
Line 4: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6:
Line 7: <ui:style
type="org.ovirt.engine.ui.common.widget.AddRemoveRowWidget.WidgetStyle">
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 4: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Done
Line 6:
Line 7: <ui:style
type="org.ovirt.engine.ui.common.widget.AddRemoveRowWidget.WidgetStyle">
Line 8: .margin {
Line 9: margin-left: 20px;
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/VmRowWidget.java
Line 22: import com.google.gwt.user.client.ui.Composite;
Line 23: import com.google.gwt.user.client.ui.HasEnabled;
Line 24: import com.google.gwt.user.client.ui.Widget;
Line 25:
Line 26: public class VmRowWidget extends Composite implements
HasValueChangeHandlers<VmSelectionModel>, HasEditorDriver<VmSelectionModel>,
HasEnabled {
same as previous replies, going to be re-factored.
Line 27:
Line 28: interface WidgetUiBinder extends UiBinder<Widget, VmRowWidget> {
Line 29: WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
Line 30: }
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/VmRowWidget.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
Done
Line 4: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6:
Line 7: <ui:with field='resources'
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 4: xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5: xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6:
Line 7: <ui:with field='resources'
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
Done
Line 8:
Line 9: <ui:style
type="org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.widgets.VmRowWidget.WidgetStyle">
Line 10: .fieldWidth {
Line 11: width: 180px;
....................................................
File
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
Line 85: }
Line 86: });
Line 87: }
Line 88:
Line 89: protected abstract void addMembersColumn(ApplicationConstants
constants);
Done
Line 90:
Line 91: protected String joinMembers(List<String> strings, String
separator, String skipString, ApplicationConstants constants) {
Line 92: if (strings == null || strings.isEmpty()) {
Line 93: return constants.noMembersAffinityGroup();
Line 87: }
Line 88:
Line 89: protected abstract void addMembersColumn(ApplicationConstants
constants);
Line 90:
Line 91: protected String joinMembers(List<String> strings, String
separator, String skipString, ApplicationConstants constants) {
backend code uses StringUtils, and it's not emulated in GWT.
Line 92: if (strings == null || strings.isEmpty()) {
Line 93: return constants.noMembersAffinityGroup();
Line 94: }
Line 95: StringBuffer result = new StringBuffer();
--
To view, visit http://gerrit.ovirt.org/22716
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ibe5d6f6efe2b13297b653e1622a26c7b2b44cba8
Gerrit-PatchSet: 8
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Gilad Chaplik <[email protected]>
Gerrit-Reviewer: Gilad Chaplik <[email protected]>
Gerrit-Reviewer: Lior Vernia <[email protected]>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches