Mike Kolesnik has uploaded a new change for review.

Change subject: engine: Extract VmTemplateInterfaceCommandBase
......................................................................

engine: Extract VmTemplateInterfaceCommandBase

This class holds base methods which are used in both sub-classes that
add/update the NIC of a template.
The purpose of the class is to keep it DRY, reducing complexity of sub
classes.

Change-Id: I79058138e158b85373f54324c94088072b3dd4a7
Signed-off-by: Mike Kolesnik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/VmTemplateInterfaceCommandBase.java
3 files changed, 70 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/64/10464/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
index 6c2d0aa..5411d3a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
@@ -5,8 +5,6 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.VmCommand;
-import org.ovirt.engine.core.bll.VmHandler;
-import org.ovirt.engine.core.bll.VmTemplateCommand;
 import org.ovirt.engine.core.bll.VmTemplateHandler;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
@@ -23,25 +21,18 @@
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
-import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
-import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.linq.Predicate;
 
 @SuppressWarnings("serial")
-@CustomLogFields({ @CustomLogField("InterfaceName") })
-public class AddVmTemplateInterfaceCommand<T extends 
AddVmTemplateInterfaceParameters> extends VmTemplateCommand<T> {
+public class AddVmTemplateInterfaceCommand<T extends 
AddVmTemplateInterfaceParameters>
+        extends VmTemplateInterfaceCommandBase<T> {
     public AddVmTemplateInterfaceCommand(T parameters) {
         super(parameters);
     }
 
-    public String getInterfaceName() {
-        return getParameters().getInterface().getName();
-    }
-
     @Override
     protected void executeCommand() {
-        AddCustomValue("InterfaceType", 
(VmInterfaceType.forValue(getParameters().getInterface().getType()).getDescription()).toString());
         
getParameters().getInterface().setVmTemplateId(getParameters().getVmTemplateId());
         getParameters().getInterface().setId(Guid.NewGuid());
         getParameters().getInterface().setSpeed(
@@ -60,9 +51,7 @@
     protected boolean canDoAction() {
         List<VmNetworkInterface> interfaces =
                 
getVmNetworkInterfaceDao().getAllForTemplate(getParameters().getVmTemplateId());
-        if (!VmHandler.IsNotDuplicateInterfaceName(interfaces,
-                getParameters().getInterface().getName(),
-                getReturnValue().getCanDoActionMessages())) {
+        if (!interfaceNameUnique(interfaces)) {
             return false;
         }
 
@@ -71,8 +60,7 @@
             return false;
         }
 
-        if (getParameters().getInterface().getVmId() != null) {
-            
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_VM_CANNOT_BE_SET);
+        if (!validate(linkedToTemplate())) {
             return false;
         }
 
@@ -119,10 +107,9 @@
      * Set the parameters for bll messages, such as type and action,
      */
     @Override
-    protected void setActionMessageParameters()
-    {
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
         addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD);
-        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__INTERFACE);
     }
 
     @Override
@@ -151,9 +138,5 @@
         }
 
         return subjects;
-    }
-
-    private String getNetworkName() {
-        return getParameters().getInterface().getNetworkName();
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
index 3b10b5b..862b2e7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
@@ -3,8 +3,6 @@
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
-import org.ovirt.engine.core.bll.VmHandler;
-import org.ovirt.engine.core.bll.VmTemplateCommand;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.validator.VmNicValidator;
 import org.ovirt.engine.core.common.AuditLogType;
@@ -12,7 +10,6 @@
 import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.Network;
-import org.ovirt.engine.core.common.businessentities.VmInterfaceType;
 import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
 import org.ovirt.engine.core.dal.VdcBllMessages;
@@ -22,27 +19,22 @@
 import org.ovirt.engine.core.utils.linq.Predicate;
 
 @SuppressWarnings("serial")
-@CustomLogFields({ @CustomLogField("NetworkName"), 
@CustomLogField("InterfaceName") })
-public class UpdateVmTemplateInterfaceCommand<T extends 
AddVmTemplateInterfaceParameters> extends VmTemplateCommand<T> {
+@CustomLogFields({ @CustomLogField("NetworkName") })
+public class UpdateVmTemplateInterfaceCommand<T extends 
AddVmTemplateInterfaceParameters>
+        extends VmTemplateInterfaceCommandBase<T> {
     public UpdateVmTemplateInterfaceCommand(T parameters) {
         super(parameters);
     }
 
-    public String getInterfaceName() {
-        return getParameters().getInterface().getName();
-    }
-
     @Override
     protected void executeCommand() {
-        AddCustomValue("InterfaceType", 
(VmInterfaceType.forValue(getParameters().getInterface().getType()).getDescription()).toString());
         getVmNetworkInterfaceDao().update(getParameters().getInterface());
         setSucceeded(true);
     }
 
     @Override
     protected boolean canDoAction() {
-        if (getParameters().getInterface().getVmId() != null) {
-            
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_VM_CANNOT_BE_SET);
+        if (!validate(linkedToTemplate())) {
             return false;
         }
 
@@ -71,12 +63,8 @@
             return false;
         }
 
-        if (!StringUtils.equals(oldIface.getName(), 
getParameters().getInterface().getName())) {
-            if (!VmHandler.IsNotDuplicateInterfaceName(interfaces,
-                            getParameters().getInterface().getName(),
-                            getReturnValue().getCanDoActionMessages())) {
-                return false;
-            }
+        if (!StringUtils.equals(oldIface.getName(), getInterfaceName()) && 
!interfaceNameUnique(interfaces)) {
+            return false;
         }
 
         return true;
@@ -92,10 +80,9 @@
      * Set the parameters for bll messages, such as type and action,
      */
     @Override
-    protected void setActionMessageParameters()
-    {
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
         addCanDoActionMessage(VdcBllMessages.VAR__ACTION__UPDATE);
-        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__INTERFACE);
     }
 
     @Override
@@ -136,9 +123,5 @@
 
     private boolean isNetworkChanged(VmNetworkInterface iface) {
         return !getNetworkName().equals(iface.getNetworkName());
-    }
-
-    private String getNetworkName() {
-        return getParameters().getInterface().getNetworkName();
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/VmTemplateInterfaceCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/VmTemplateInterfaceCommandBase.java
new file mode 100644
index 0000000..7f42caf
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/VmTemplateInterfaceCommandBase.java
@@ -0,0 +1,56 @@
+package org.ovirt.engine.core.bll.network.template;
+
+import java.util.List;
+
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.bll.VmHandler;
+import org.ovirt.engine.core.bll.VmTemplateCommand;
+import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
+import org.ovirt.engine.core.common.businessentities.VmInterfaceType;
+import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.VdcBllMessages;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
+
+@SuppressWarnings("serial")
+@CustomLogFields({ @CustomLogField("InterfaceName"), 
@CustomLogField("InterfaceType") })
+public abstract class VmTemplateInterfaceCommandBase<T extends 
AddVmTemplateInterfaceParameters>
+        extends VmTemplateCommand<T> {
+
+    public VmTemplateInterfaceCommandBase(Guid commandId) {
+        super(commandId);
+    }
+
+    public VmTemplateInterfaceCommandBase(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__INTERFACE);
+    }
+
+    public String getInterfaceName() {
+        return getParameters().getInterface().getName();
+    }
+
+    public String getInterfaceType() {
+        return 
VmInterfaceType.forValue(getParameters().getInterface().getType()).getDescription();
+    }
+
+    public String getNetworkName() {
+        return getParameters().getInterface().getNetworkName();
+    }
+
+    protected boolean interfaceNameUnique(List<VmNetworkInterface> interfaces) 
{
+        return VmHandler.IsNotDuplicateInterfaceName(interfaces,
+                getInterfaceName(),
+                getReturnValue().getCanDoActionMessages());
+    }
+
+    protected ValidationResult linkedToTemplate() {
+        return getParameters().getInterface().getVmId() == null ? 
ValidationResult.VALID
+                : new 
ValidationResult(VdcBllMessages.NETWORK_INTERFACE_VM_CANNOT_BE_SET);
+    }
+}


--
To view, visit http://gerrit.ovirt.org/10464
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I79058138e158b85373f54324c94088072b3dd4a7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Mike Kolesnik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to