feature[TW18065]: Add AtsCmBranch token

Change-Id: I05f288817d17e7111cda40927ac57e56963f32a9
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactToken.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactToken.java
index 4639f63..3c36fde 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactToken.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactToken.java
@@ -35,6 +35,10 @@
     */
    public static final ArtifactToken AtsCmAccessControl = ArtifactToken.valueOf(9885573, "ATS CM Access Control", COMMON, CoreArtifactTypes.GeneralData);
 
+   /**
+   * Associated artifact marking branch as an ATS CM Branch.  Mostly for Baseline branches that don't have Team Workflow associated.
+   */
+   public static final ArtifactToken AtsCmBranch = ArtifactToken.valueOf(10867103, "ATS CM Branch", COMMON, CoreArtifactTypes.GeneralData);
 
    public static ArtifactToken AtsTopFolder = ArtifactToken.valueOf(114713, "Action Tracking System", COMMON, CoreArtifactTypes.Folder);
    public static final ArtifactToken AtsConfig = ArtifactToken.valueOf(5367053, "ATS Config", COMMON, CoreArtifactTypes.GeneralData);
diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsDbConfigBase.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsDbConfigBase.java
index b300c08..e0a3738 100644
--- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsDbConfigBase.java
+++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/config/AtsDbConfigBase.java
@@ -15,6 +15,7 @@
 
 import java.io.File;
 import java.util.Arrays;
+import java.util.List;
 import org.eclipse.define.api.importing.IArtifactExtractor;
 import org.eclipse.define.api.importing.RoughArtifact;
 import org.eclipse.define.api.importing.RoughArtifactCollector;
@@ -55,6 +56,7 @@
 import org.eclipse.osee.framework.core.util.JsonUtil;
 import org.eclipse.osee.framework.core.util.OseeInf;
 import org.eclipse.osee.framework.jdk.core.result.XResultData;
+import org.eclipse.osee.framework.jdk.core.util.Conditions;
 import org.eclipse.osee.orcs.OrcsApi;
 import org.eclipse.osee.orcs.OrcsBranch;
 import org.eclipse.osee.orcs.data.ArtifactReadable;
@@ -77,6 +79,13 @@
       branchOps = orcsApi.getBranchOps();
    }
 
+   String getMultipleArtEntriesonCommon(AtsApi atsApi) {
+      return "SELECT DISTINCT art1.art_id FROM osee_artifact art1, osee_artifact art2, \n" + //
+         "osee_txs txs WHERE art1.ART_ID = art2.ART_ID AND \n" + //
+         "art1.art_type_id = art2.art_type_id AND art1.GAMMA_ID <> art2.GAMMA_ID AND \n" + //
+         "art2.GAMMA_ID = txs.GAMMA_ID and txs.BRANCH_ID = 570 ORDER BY art1.art_id";
+   }
+
    public XResultData run() {
       OseeInfo.setValue(atsApi.getJdbcService().getClient(), "osee.work.def.as.name", "true");
 
@@ -97,6 +106,16 @@
       changes.setSoleAttributeValue(topAi, AtsAttributeTypes.Actionable, false);
       changes.execute();
 
+      changes.reset("Create ATS CM Artifact");
+      ArtifactToken art = changes.createArtifact(AtsArtifactToken.AtsTopFolder, AtsArtifactToken.AtsCmBranch);
+      changes.setSoleAttributeValue(art, CoreAttributeTypes.Description,
+         "Used to denote Baseline branch as ATS CM branch");
+      changes.execute();
+
+      List<ArtifactId> artIds = atsApi.getQueryService().getArtifactIdsFromQuery(getMultipleArtEntriesonCommon(atsApi));
+
+      Conditions.assertTrue(artIds.isEmpty(), "Duplicate artifact ids found [%s]", artIds);
+
       atsApi.clearCaches();
 
       createUserGroups(atsApi);
@@ -237,9 +256,9 @@
 
       changes.execute();
 
-      (new OrganizePrograms(atsApi)).run();
+      XResultData results = (new OrganizePrograms(atsApi)).run();
 
-      return new XResultData();
+      return results;
    }
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java
index 669af8d..0f0febf 100644
--- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java
+++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java
@@ -476,4 +476,10 @@
       throw new UnsupportedOperationException("Unsupported on Server");
    }
 
-}
\ No newline at end of file
+   @Override
+   public void clear() {
+      super.clear();
+      transaction = null;
+   }
+
+}