Refactor of CFM code part 5 - SonarQube recommended code changes

previously:

Refactor of CFM code part 4 - Microsemi driver - updating modules.deps with the move of the driver code
Refactor of CFM code part 3 - Microsemi driver: moved everything out of drivers/microsemi to /drivers/microsemi/ea1000 to make room for future drivers
Refactor of CFM code parti 2 - API: moved everything from incubator/*/src/main/java/org/onosproject/incubator/net/l2monitoring to apps/cfm/*/src/main/java/org/onosproject/incubator/net/l2monitoring - this means that services belonging to l2 monitoring will now only be loaded when cfm app is started
Refactor of CFM code part 1 - NBI: moves the CLI and REST part of the app down a level to an nbi folder for a more consistent approach with other modules

Change-Id: I39b302fd8620f59d34ab41208cbc28765951aad4
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
index 6f41005..7965113 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
@@ -20,84 +20,76 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceAssociation;
 import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaId2Octet;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdCharStr;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdIccY1731;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdPrimaryVid;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdRfc2685VpnId;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdIdCharStr;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdIdDomainName;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdIdMacUint;
-import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdIdNone;
+import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdMaNameUtil;
 import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmMdService;
 
-import java.util.Optional;
-
 /**
  * Lists a particular Maintenance Domain.
  */
 @Command(scope = "onos", name = "cfm-md-list",
         description = "Lists a single CFM Maintenance Domain or all if none specified.")
 public class CfmMdListMdCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "name",
-            description = "Maintenance Domain name and type (in brackets)",
-            required = false, multiValued = false)
-    String name = null;
+    @Argument(name = "name",
+            description = "Maintenance Domain name and type (in brackets)")
+    private String name = null;
 
     @Override
     protected void execute() {
-        CfmMdService service = get(CfmMdService.class);
+        CfmMdService service;
+        service = get(CfmMdService.class);
 
         if (name != null) {
             MdId mdId = parseMdName(name);
             print("Maintenance Domain:");
-            Optional<MaintenanceDomain> md = service.getMaintenanceDomain(mdId);
-            print(printMd(md));
-            md.get().maintenanceAssociationList().forEach(ma -> printMa(Optional.of(ma)));
-        } else {
-            service.getAllMaintenanceDomain().forEach(md -> {
-                print(printMd(Optional.of(md)));
+            service.getMaintenanceDomain(mdId).ifPresent(md -> {
+                print(printMd(md));
+                md.maintenanceAssociationList().forEach(CfmMdListMdCommand::printMa);
             });
+        } else {
+            service.getAllMaintenanceDomain().forEach(md -> print(printMd(md)));
         }
     }
 
-    public static String printMd(Optional<MaintenanceDomain> md) {
-        if (!md.isPresent()) {
-            return new String("MD not found");
+    private static String printMd(MaintenanceDomain md) {
+        if (md == null) {
+            return "MD not found";
         } else {
-            StringBuffer sb = new StringBuffer("\tMD: ");
-            sb.append(md.get().mdId().mdName());
-            sb.append("(" + md.get().mdId().nameType());
-            sb.append(") Lvl:" + md.get().mdLevel().ordinal());
-            sb.append(", Num: " + md.get().mdNumericId());
+            StringBuilder sb = new StringBuilder("\tMD: ");
+            sb.append(md.mdId().mdName());
+            sb.append("(");
+            sb.append(md.mdId().nameType());
+            sb.append(") Lvl:");
+            sb.append(md.mdLevel().ordinal());
+            sb.append(", Num: ");
+            sb.append(md.mdNumericId());
 
-            md.get().maintenanceAssociationList().
-                    forEach(ma -> sb.append(printMa(Optional.of(ma))));
+            md.maintenanceAssociationList().
+                    forEach(ma -> sb.append(printMa(ma)));
             return sb.toString();
         }
     }
 
-    public static String printMa(Optional<MaintenanceAssociation> ma) {
-        if (!ma.isPresent()) {
+    private static String printMa(MaintenanceAssociation ma) {
+        if (ma == null) {
             return "\n\tNo MA found";
         }
 
         StringBuilder sb = new StringBuilder("\n\t\tMA: ");
-        sb.append(ma.get().maId().maName());
+        sb.append(ma.maId().maName());
         sb.append("(");
-        sb.append(ma.get().maId().nameType());
+        sb.append(ma.maId().nameType());
         sb.append(") CCM: ");
-        sb.append(ma.get().ccmInterval());
+        sb.append(ma.ccmInterval());
         sb.append(" Num: ");
-        sb.append(ma.get().maNumericId());
+        sb.append(ma.maNumericId());
 
-        ma.get().remoteMepIdList().forEach(rmep -> {
+        ma.remoteMepIdList().forEach(rmep -> {
                     sb.append("\n\t\t\tRmep: ");
                     sb.append(rmep);
                 });
-        ma.get().componentList().forEach(comp -> {
+        ma.componentList().forEach(comp -> {
             sb.append("\n\t\t\tComponent: ");
             sb.append(comp.componentId());
             sb.append(" Perm: ");
@@ -116,59 +108,24 @@
         return sb.toString();
     }
 
-    public static MdId parseMdName(String mdStr) {
+    static MdId parseMdName(String mdStr) {
         String[] nameParts = mdStr.split("[()]");
         if (nameParts.length != 2) {
             throw new IllegalArgumentException("Invalid name format. " +
                     "Must be in the format of <identifier(name-type)>");
         }
 
-        MdId mdId = null;
-        MdId.MdNameType nameTypeEnum = MdId.MdNameType.valueOf(nameParts[1]);
-        switch (nameTypeEnum) {
-            case DOMAINNAME:
-                mdId = MdIdDomainName.asMdId(nameParts[0]);
-                break;
-            case MACANDUINT:
-                mdId = MdIdMacUint.asMdId(nameParts[0]);
-                break;
-            case NONE:
-                mdId = MdIdNone.asMdId();
-                break;
-            case CHARACTERSTRING:
-            default:
-                mdId = MdIdCharStr.asMdId(nameParts[0]);
-        }
-        return mdId;
+        return MdMaNameUtil.parseMdName(nameParts[1], nameParts[0]);
     }
 
-    public static MaIdShort parseMaName(String maStr) {
+    static MaIdShort parseMaName(String maStr) {
         String[] nameParts = maStr.split("[()]");
         if (nameParts.length != 2) {
             throw new IllegalArgumentException("Invalid name format. " +
                     "Must be in the format of <identifier(name-type)>");
         }
 
-        MaIdShort maId = null;
-        MaIdShort.MaIdType nameTypeEnum = MaIdShort.MaIdType.valueOf(nameParts[1]);
-        switch (nameTypeEnum) {
-            case ICCY1731:
-                maId = MaIdIccY1731.asMaId(nameParts[0]);
-                break;
-            case PRIMARYVID:
-                maId = MaIdPrimaryVid.asMaId(nameParts[0]);
-                break;
-            case RFC2685VPNID:
-                maId = MaIdRfc2685VpnId.asMaIdHex(nameParts[0]);
-                break;
-            case TWOOCTET:
-                maId = MaId2Octet.asMaId(nameParts[0]);
-                break;
-            case CHARACTERSTRING:
-            default:
-                maId = MaIdCharStr.asMaId(nameParts[0]);
-        }
-        return maId;
+        return MdMaNameUtil.parseMaName(nameParts[1], nameParts[0]);
     }
 
 }