feature[TW19447]: Improvements in support of action

Change-Id: I17365c30d7f2e26fd3fc2384bccb824e7ec68b44
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java
index 02210ae..be197db8 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/config/AtsConfigEndpointApi.java
@@ -66,6 +66,11 @@
    public AtsUser getUserByLogin(@PathParam("loginId") String loginId);
 
    @GET
+   @Path("userid/{userId}")
+   @Produces(MediaType.APPLICATION_JSON)
+   public AtsUser getUserByUserId(@PathParam("userId") String userId);
+
+   @GET
    @Path("image")
    @Produces(MediaType.APPLICATION_JSON)
    public List<ArtifactImage> getArtifactImages();
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/cr/CreateSiblingOffTaskEstOperation.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/cr/CreateSiblingOffTaskEstOperation.java
index 3512429..ffc224f 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/cr/CreateSiblingOffTaskEstOperation.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workflow/cr/CreateSiblingOffTaskEstOperation.java
@@ -48,6 +48,7 @@
    private final IAtsTeamWorkflow teamWf;
    private final AtsApi atsApi;
    private final Collection<TaskEstDefinition> taskEstDefs;
+   private boolean debug = false;
 
    public CreateSiblingOffTaskEstOperation(IAtsTeamWorkflow teamWf, Collection<TaskEstDefinition> taskEstDefs) {
       this.teamWf = teamWf;
@@ -68,7 +69,9 @@
 
             if (!TaskEstUtil.hasTask(teamWf, ted, atsApi)) {
                teds.remove(ted);
-               rd.logf("Task Est Def [%s] has no estimating task\n", ted.toStringWithId());
+               if (isDebug()) {
+                  rd.logf("Task Est Def [%s] has no estimating task\n", ted.toStringWithId());
+               }
             }
 
             // if TED and task and estimate <= 0, do nothing
@@ -91,11 +94,15 @@
                   Double pts = Double.valueOf(ptsStr);
                   if (pts > 0) {
                      if (TaskEstUtil.hasWorkflow(teamWf, ted, atsApi)) {
-                        rd.logf("Workflow exists for task %s; skipping\n", task.toStringWithId());
+                        if (isDebug()) {
+                           rd.logf("Workflow exists for task %s; skipping\n", task.toStringWithId());
+                        }
                         teds.remove(ted);
                      }
                   } else {
-                     rd.logf("Estimate 0 for task %s; skipping\n", task.toStringWithId());
+                     if (isDebug()) {
+                        rd.logf("Estimate 0 for task %s; skipping\n", task.toStringWithId());
+                     }
                      teds.remove(ted);
                   }
                }
@@ -174,4 +181,12 @@
       return newTeamWf;
    }
 
+   public boolean isDebug() {
+      return debug;
+   }
+
+   public void setDebug(boolean debug) {
+      this.debug = debug;
+   }
+
 }
diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java
index 911d920..ebd3d83 100644
--- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java
+++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsConfigEndpointImpl.java
@@ -19,8 +19,10 @@
 import java.util.List;
 import java.util.Map;
 import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import org.eclipse.nebula.widgets.xviewer.core.model.SortDataType;
@@ -45,7 +47,9 @@
 import org.eclipse.osee.framework.core.data.ArtifactTypeToken;
 import org.eclipse.osee.framework.core.data.AttributeTypeToken;
 import org.eclipse.osee.framework.core.data.TransactionId;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
 import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.enums.CoreBranches;
 import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
 import org.eclipse.osee.framework.core.executor.ExecutorAdmin;
 import org.eclipse.osee.framework.jdk.core.result.XResultData;
@@ -53,6 +57,7 @@
 import org.eclipse.osee.framework.jdk.core.type.ViewModel;
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 import org.eclipse.osee.orcs.OrcsApi;
+import org.eclipse.osee.orcs.data.ArtifactReadable;
 
 /**
  * @author Donald G. Dunne
@@ -132,6 +137,36 @@
    }
 
    @Override
+   @GET
+   @Path("userid/{userId}")
+   @Produces(MediaType.APPLICATION_JSON)
+   public AtsUser getUserByUserId(@PathParam("userId") String userId) {
+      ArtifactReadable userArt =
+         (ArtifactReadable) atsApi.getQueryService().getArtifactFromTypeAndAttribute(CoreArtifactTypes.User,
+            CoreAttributeTypes.UserId, userId, CoreBranches.COMMON);
+      AtsUser user = AtsUserServiceServerImpl.valueOf(userArt);
+
+      // Load Saved Searches
+      user.getSavedSearches().clear();
+      // Always reload art to get latest sarches and user groups
+      user.getSavedSearches().addAll(
+         atsApi.getAttributeResolver().getAttributesToStringList(userArt, CoreAttributeTypes.AtsActionSearch));
+
+      // Load User Groups
+      user.getUserGroups().clear();
+      for (ArtifactToken userGroup : atsApi.getRelationResolver().getRelated(userArt,
+         CoreRelationTypes.Users_Artifact)) {
+         user.getUserGroups().add(userGroup);
+      }
+
+      // Set Store Object
+      user.setStoreObject(ArtifactToken.valueOf(user.getId(), atsApi.getAtsBranch()));
+
+      return user;
+
+   }
+
+   @Override
    public ViewModel getNewSource() {
       return new ViewModel("templates/newConfigBranch.html");
    }
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/result/XResultData.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/result/XResultData.java
index c846eb7..147f63a 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/result/XResultData.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/result/XResultData.java
@@ -398,4 +398,8 @@
       }
    }
 
+   public boolean isWarnings() {
+      return getNumWarnings() > 0;
+   }
+
 }