feature[TW19451]: Confirm transition validation

Change-Id: I93f16dc95a4e419d74793cd167f943e284c4c351
diff --git a/plugins/org.eclipse.osee.ats.ide.integration.tests/src/org/eclipse/osee/ats/ide/integration/tests/ats/workdef/AtsWorkDefinitionXWidgetTest.java b/plugins/org.eclipse.osee.ats.ide.integration.tests/src/org/eclipse/osee/ats/ide/integration/tests/ats/workdef/AtsWorkDefinitionXWidgetTest.java
index c64a434..1829449 100644
--- a/plugins/org.eclipse.osee.ats.ide.integration.tests/src/org/eclipse/osee/ats/ide/integration/tests/ats/workdef/AtsWorkDefinitionXWidgetTest.java
+++ b/plugins/org.eclipse.osee.ats.ide.integration.tests/src/org/eclipse/osee/ats/ide/integration/tests/ats/workdef/AtsWorkDefinitionXWidgetTest.java
@@ -14,17 +14,9 @@
 package org.eclipse.osee.ats.ide.integration.tests.ats.workdef;
 
 import org.eclipse.osee.ats.api.AtsApi;
-import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition;
-import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
 import org.eclipse.osee.ats.ide.integration.tests.AtsApiService;
+import org.eclipse.osee.ats.ide.workdef.ValidateWorkDefXWidgetOperation;
 import org.eclipse.osee.framework.jdk.core.result.XResultData;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.ui.skynet.widgets.XOption;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
-import org.eclipse.osee.framework.ui.skynet.widgets.util.DefaultXWidgetOptionResolver;
-import org.eclipse.osee.framework.ui.skynet.widgets.util.FrameworkXWidgetProvider;
-import org.eclipse.osee.framework.ui.skynet.widgets.util.SwtXWidgetRenderer;
-import org.eclipse.osee.framework.ui.skynet.widgets.util.XWidgetRendererItem;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -39,27 +31,10 @@
    public void workDefXWidgetTest() {
 
       AtsApi atsApi = AtsApiService.get();
-      XResultData rd = new XResultData();
-      for (IAtsWorkDefinition workDef : atsApi.getWorkDefinitionService().getAllWorkDefinitions()) {
-         for (IAtsWidgetDefinition widgetDef : atsApi.getWorkDefinitionService().getWidgets(workDef)) {
-            String xWidgetName = widgetDef.getXWidgetName();
-            if (Strings.isValid(xWidgetName)) {
-               XWidget widget = getWidget(xWidgetName);
-               if (widget == null || widget.getLabel().contains("Unhandled XWidget")) {
-                  rd.errorf("Widget not found for [%s] in WorkDef %s\n", xWidgetName, workDef.toStringWithId());
-               }
-            }
-         }
-      }
+      ValidateWorkDefXWidgetOperation op = new ValidateWorkDefXWidgetOperation(atsApi);
+      XResultData rd = op.run();
       Assert.assertTrue(rd.toString(), rd.isSuccess());
 
    }
 
-   public XWidget getWidget(String xWidgetName) {
-      SwtXWidgetRenderer dynamicXWidgetLayout = new SwtXWidgetRenderer(null, new DefaultXWidgetOptionResolver());
-      XWidgetRendererItem dummyItem = new XWidgetRendererItem(dynamicXWidgetLayout, XOption.NONE);
-      XWidget widget = FrameworkXWidgetProvider.getXWidget(dummyItem, xWidgetName, "IsInTest", null);
-      return widget;
-   }
-
 }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workdef/ValidateWorkDefXWidgetOperation.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workdef/ValidateWorkDefXWidgetOperation.java
new file mode 100644
index 0000000..3c64455
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workdef/ValidateWorkDefXWidgetOperation.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Boeing.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.ats.ide.workdef;
+
+import org.eclipse.osee.ats.api.AtsApi;
+import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition;
+import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
+import org.eclipse.osee.framework.jdk.core.result.XResultData;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.ui.skynet.widgets.XOption;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.util.DefaultXWidgetOptionResolver;
+import org.eclipse.osee.framework.ui.skynet.widgets.util.FrameworkXWidgetProvider;
+import org.eclipse.osee.framework.ui.skynet.widgets.util.SwtXWidgetRenderer;
+import org.eclipse.osee.framework.ui.skynet.widgets.util.XWidgetRendererItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ValidateWorkDefXWidgetOperation {
+
+   private final AtsApi atsApi;
+
+   public ValidateWorkDefXWidgetOperation(AtsApi atsApi) {
+      this.atsApi = atsApi;
+   }
+
+   public XResultData run() {
+      XResultData rd = new XResultData();
+      for (IAtsWorkDefinition workDef : atsApi.getWorkDefinitionService().getAllWorkDefinitions()) {
+         for (IAtsWidgetDefinition widgetDef : atsApi.getWorkDefinitionService().getWidgets(workDef)) {
+            String xWidgetName = widgetDef.getXWidgetName();
+            if (Strings.isValid(xWidgetName)) {
+               XWidget widget = getWidget(xWidgetName);
+               if (widget == null || widget.getLabel().contains("Unhandled XWidget")) {
+                  rd.errorf("Widget not found for [%s] in WorkDef %s\n", xWidgetName, workDef.toStringWithId());
+               }
+            }
+         }
+      }
+      return rd;
+   }
+
+   public XWidget getWidget(String xWidgetName) {
+      SwtXWidgetRenderer dynamicXWidgetLayout = new SwtXWidgetRenderer(null, new DefaultXWidgetOptionResolver());
+      XWidgetRendererItem dummyItem = new XWidgetRendererItem(dynamicXWidgetLayout, XOption.NONE);
+      XWidget widget = FrameworkXWidgetProvider.getXWidget(dummyItem, xWidgetName, "IsInTest", null);
+      return widget;
+   }
+
+}