Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2008-02-28 19:39:11 +0000
committerddunne2008-02-28 19:39:11 +0000
commite7aa2e3199c8569672f0085b689ba3758ae10a45 (patch)
tree9739042938a8134f5f20b57867eff6933321ac32
parent089a4a1df46006d1cdc4a60d1898ab9816f4554d (diff)
downloadorg.eclipse.osee-e7aa2e3199c8569672f0085b689ba3758ae10a45.tar.gz
org.eclipse.osee-e7aa2e3199c8569672f0085b689ba3758ae10a45.tar.xz
org.eclipse.osee-e7aa2e3199c8569672f0085b689ba3758ae10a45.zip
"Team Workflow" - DZZ2M - "Create artifact delete checks for plugins to validate prior to deleting an artifact"
-rw-r--r--org.eclipse.osee.ats/plugin.xml6
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java3
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java2
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactChecks.java112
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserRelatedToAtsObjectSearch.java72
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java2
-rw-r--r--org.eclipse.osee.framework.skynet.core/plugin.xml1
-rw-r--r--org.eclipse.osee.framework.skynet.core/schema/ArtifactCheck.exsd105
-rw-r--r--org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactChecks.java51
-rw-r--r--org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactPersistenceManager.java10
-rw-r--r--org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/IArtifactCheck.java18
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java5
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteArtifactHandler.java5
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java3
14 files changed, 383 insertions, 12 deletions
diff --git a/org.eclipse.osee.ats/plugin.xml b/org.eclipse.osee.ats/plugin.xml
index 41c7d8bfdf6..9c40755b467 100644
--- a/org.eclipse.osee.ats/plugin.xml
+++ b/org.eclipse.osee.ats/plugin.xml
@@ -322,4 +322,10 @@
classname="org.eclipse.osee.ats.health.UnAssignedAssignedAtsObjects">
</AutoRunTask>
</extension>
+ <extension
+ point="org.eclipse.osee.framework.skynet.core.ArtifactCheck">
+ <ArtifactCheck
+ classname="org.eclipse.osee.ats.util.AtsArtifactChecks">
+ </ArtifactCheck>
+ </extension>
</plugin>
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
index f5c55416abe..aae91f5beb7 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateComposite.java
@@ -55,8 +55,7 @@ public class AtsNavigateComposite extends XNavigateComposite {
WorldSearchItem worldSearchItem = ((SearchNavigateItem) item).getWsi();
if (worldSearchItem.getLoadView() == LoadView.WorldView)
openWorld(worldSearchItem);
- else
- openTaskEditor(worldSearchItem);
+ else if (worldSearchItem.getLoadView() == LoadView.TaskEditor) openTaskEditor(worldSearchItem);
} else
super.handleDoubleClick();
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java
index 0856637b98d..6ef6bebaac4 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java
@@ -61,6 +61,7 @@ import org.eclipse.osee.ats.world.search.TeamVersionWorldSearchItem;
import org.eclipse.osee.ats.world.search.TeamWorldSearchItem;
import org.eclipse.osee.ats.world.search.UnReleasedTeamWorldSearchItem;
import org.eclipse.osee.ats.world.search.UserCommunitySearchItem;
+import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch;
import org.eclipse.osee.ats.world.search.VersionTargetedForTeamSearchItem;
import org.eclipse.osee.ats.world.search.WorldSearchItem;
import org.eclipse.osee.ats.world.search.MyReviewWorkflowItem.ReviewState;
@@ -143,6 +144,7 @@ public class AtsNavigateViewItems extends XNavigateViewItems {
new SearchNavigateItem(otherItems, new MySubscribedSearchItem("User's Subscribed"));
new SearchNavigateItem(otherItems, new MyReviewWorkflowItem("User's Reviews - InWork", null, ReviewState.InWork));
new SearchNavigateItem(otherItems, new MyReviewWorkflowItem("User's Reviews - All", null, ReviewState.All));
+ new SearchNavigateItem(otherItems, new UserRelatedToAtsObjectSearch("User's All", null));
items.add(otherItems);
items.add(new SearchNavigateItem(null, new GroupWorldSearchItem()));
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactChecks.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactChecks.java
new file mode 100644
index 00000000000..5f72a4f6e5f
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactChecks.java
@@ -0,0 +1,112 @@
+/*
+ * Created on Feb 28, 2008
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.util;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.world.search.ActionableItemWorldSearchItem;
+import org.eclipse.osee.ats.world.search.TeamWorldSearchItem;
+import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch;
+import org.eclipse.osee.ats.world.search.WorldSearchItem.LoadView;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.IArtifactCheck;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsArtifactChecks implements IArtifactCheck {
+
+ /**
+ * Check for certain conditions that must be met to delete an ATS object or User artifact.
+ */
+ public AtsArtifactChecks() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.skynet.core.artifact.IArtifactOperation#isDeleteable(java.util.Collection)
+ */
+ @Override
+ public Result isDeleteable(Collection<Artifact> artifacts) throws Exception {
+ // Check Actionable Items
+ Result result = checkActionableItems(artifacts);
+ if (result.isFalse()) return result;
+ // Check Team Definitions
+ result = checkTeamDefinitions(artifacts);
+ if (result.isFalse()) return result;
+ // Check VUE Workflow General Documents
+ result = checkAtsVueWorkflows(artifacts);
+ if (result.isFalse()) return result;
+ // Check User artifacts related to ATS SMAs
+ result = checkUsers(artifacts);
+ if (result.isFalse()) return result;
+
+ return Result.TrueResult;
+ }
+
+ public Result checkActionableItems(Collection<Artifact> artifacts) throws Exception {
+ Set<ActionableItemArtifact> aias = new HashSet<ActionableItemArtifact>();
+ for (Artifact art : artifacts) {
+ if (art instanceof ActionableItemArtifact) aias.add((ActionableItemArtifact) art);
+ }
+ if (aias.size() > 0) {
+ ActionableItemWorldSearchItem srch = new ActionableItemWorldSearchItem("AI search", aias, true, false, true);
+ if (srch.performSearchGetResults(false).size() > 0) {
+ return new Result(
+ "Actionable Items (or children AIs) selected to delete have related Team Workflows; Delete or re-assign Team Workflows first.");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public Result checkTeamDefinitions(Collection<Artifact> artifacts) throws Exception {
+ Set<TeamDefinitionArtifact> aias = new HashSet<TeamDefinitionArtifact>();
+ for (Artifact art : artifacts) {
+ if (art instanceof TeamDefinitionArtifact) aias.add((TeamDefinitionArtifact) art);
+ }
+ if (aias.size() > 0) {
+
+ TeamWorldSearchItem srch = new TeamWorldSearchItem("Team Def search", aias, true, false, true);
+ if (srch.performSearchGetResults(false).size() > 0) {
+ return new Result(
+ "Team Definition (or children Team Definitions) selected to delete have related Team Workflows; Delete or re-assign Team Workflows first.");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public Result checkAtsVueWorkflows(Collection<Artifact> artifacts) throws Exception {
+ for (Artifact art : artifacts) {
+ if (art.getArtifactTypeName().equals("General Document")) {
+ String ext = art.getSoleAttributeValue("Extension");
+ if (ext != null && ext.equals("vue")) {
+ if (art.getArtifacts(RelationSide.TeamDefinitionToTaskWorkflowDiagram_TeamDefinition).size() > 0) return new Result(
+ "Team Workflow selected to delete has related Team Definition(s); Team Definitions to new Team Workflows first.");
+ }
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public Result checkUsers(Collection<Artifact> artifacts) throws Exception {
+ Set<User> users = new HashSet<User>();
+ for (Artifact art : artifacts) {
+ if (art instanceof User) users.add((User) art);
+ }
+ for (User user : users) {
+ UserRelatedToAtsObjectSearch srch = new UserRelatedToAtsObjectSearch("User search", user, LoadView.None);
+ if (srch.performSearchGetResults().size() > 0) return new Result(
+ "User id: \"" + user.getUserId() + "\" selected to delete has related ATS Objects; Un-relate to ATS first before deleting.");
+ }
+ return Result.TrueResult;
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserRelatedToAtsObjectSearch.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserRelatedToAtsObjectSearch.java
new file mode 100644
index 00000000000..1d809c1cdc5
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/UserRelatedToAtsObjectSearch.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.ats.world.search;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.osee.ats.artifact.ATSAttributes;
+import org.eclipse.osee.ats.artifact.StateMachineArtifact;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.AttributeValueSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.FromArtifactsSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+
+/**
+ * Return all ATS Objects that a user is related to through logs, review roles, defects and etc.
+ *
+ * @author Donald G. Dunne
+ */
+public class UserRelatedToAtsObjectSearch extends UserSearchItem {
+
+ public UserRelatedToAtsObjectSearch(String name, LoadView loadView) {
+ this(name, null, loadView);
+ }
+
+ public UserRelatedToAtsObjectSearch(String name, User user, LoadView loadView) {
+ super(name, user);
+ setLoadView(loadView);
+ }
+
+ @Override
+ protected Collection<Artifact> searchIt(User user) throws SQLException, IllegalArgumentException {
+ // SMA having user as portion of current state attribute (Team WorkFlow and Task)
+ List<ISearchPrimitive> currentStateCriteria = new LinkedList<ISearchPrimitive>();
+ currentStateCriteria.add(new AttributeValueSearch(ATSAttributes.CURRENT_STATE_ATTRIBUTE.getStoreName(),
+ "<" + user.getUserId() + ">", Operator.CONTAINS));
+ currentStateCriteria.add(new AttributeValueSearch(ATSAttributes.CURRENT_STATE_ATTRIBUTE.getStoreName(),
+ "userId>" + user.getUserId() + "<userId", Operator.CONTAINS));
+ FromArtifactsSearch currentStateSearch = new FromArtifactsSearch(currentStateCriteria, false);
+
+ List<ISearchPrimitive> smaArtifactTypeCriteria = new LinkedList<ISearchPrimitive>();
+ for (String artifactTypeName : StateMachineArtifact.getAllSMATypeNames()) {
+ smaArtifactTypeCriteria.add(new ArtifactTypeSearch(artifactTypeName, Operator.EQUAL));
+ }
+ FromArtifactsSearch smaArtifactTypeSearch = new FromArtifactsSearch(smaArtifactTypeCriteria, false);
+
+ List<ISearchPrimitive> smaCriteria = new LinkedList<ISearchPrimitive>();
+ smaCriteria.add(smaArtifactTypeSearch);
+ smaCriteria.add(currentStateSearch);
+
+ if (isCancelled()) return EMPTY_SET;
+ Collection<Artifact> arts =
+ ArtifactPersistenceManager.getInstance().getArtifacts(smaCriteria, true,
+ BranchPersistenceManager.getInstance().getAtsBranch());
+ if (isCancelled()) return EMPTY_SET;
+ return arts;
+ }
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
index 7aac7eff3ff..0ff6a75ba5f 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/WorldSearchItem.java
@@ -29,7 +29,7 @@ public abstract class WorldSearchItem {
protected ArtifactPersistenceManager apm = ArtifactPersistenceManager.getInstance();
private LoadView loadView;
public static enum LoadView {
- WorldView, TaskEditor
+ WorldView, TaskEditor, None
}
public static enum SearchType {
Search, ReSearch
diff --git a/org.eclipse.osee.framework.skynet.core/plugin.xml b/org.eclipse.osee.framework.skynet.core/plugin.xml
index e6122771f33..efce781f8d4 100644
--- a/org.eclipse.osee.framework.skynet.core/plugin.xml
+++ b/org.eclipse.osee.framework.skynet.core/plugin.xml
@@ -19,6 +19,7 @@
<extension-point id="AttributeSaveListener" name="AttributeSaveListener" schema="schema/AttributeSaveListener.exsd"/>
<extension-point id="AutoRunTask" name="AutoRunTask" schema="schema/AutoRunTask.exsd"/>
<extension-point id="TemplateProvider" name="TemplateProvider" schema="schema/TemplateProvider.exsd"/>
+ <extension-point id="ArtifactCheck" name="ArtifactCheck" schema="schema/ArtifactCheck.exsd"/>
<extension
id="SkynetDbInit"
diff --git a/org.eclipse.osee.framework.skynet.core/schema/ArtifactCheck.exsd b/org.eclipse.osee.framework.skynet.core/schema/ArtifactCheck.exsd
new file mode 100644
index 00000000000..4921c8556a9
--- /dev/null
+++ b/org.eclipse.osee.framework.skynet.core/schema/ArtifactCheck.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.skynet.core">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.skynet.core" id="ArtifactCheck" name="ArtifactCheck"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="ArtifactCheck"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="ArtifactCheck">
+ <complexType>
+ <attribute name="classname" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.osee.framework.skynet.core.artifact.IArtifactCheck"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactChecks.java b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactChecks.java
new file mode 100644
index 00000000000..3d4cdddd4f2
--- /dev/null
+++ b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactChecks.java
@@ -0,0 +1,51 @@
+/*
+ * Created on Feb 28, 2008
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.skynet.core.artifact;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.plugin.core.util.ExtensionPoints;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactChecks {
+
+ public static List<IArtifactCheck> tasks;
+ protected static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactChecks.class);
+ public static String EXTENSION_POINT = "org.eclipse.osee.framework.skynet.core.ArtifactCheck";
+
+ public static List<IArtifactCheck> getArtifactChecks() throws Exception {
+ if (tasks == null) {
+ tasks = new ArrayList<IArtifactCheck>();
+ List<IConfigurationElement> iExtensions =
+ ExtensionPoints.getExtensionElements(EXTENSION_POINT, "ArtifactCheck");
+ for (IConfigurationElement element : iExtensions) {
+ String className = element.getAttribute("classname");
+ String bundleName = element.getContributor().getName();
+ try {
+ if (className != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ Class<?> interfaceClass = bundle.loadClass(className);
+ IArtifactCheck check = (IArtifactCheck) interfaceClass.getConstructor().newInstance();
+ tasks.add(check);
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Problem loading ArtifactCheck extension \"" + className + "\". Ignorning.",
+ ex);
+ }
+ }
+ }
+ return tasks;
+ }
+
+}
diff --git a/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactPersistenceManager.java b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactPersistenceManager.java
index 551ab02d16a..f9d601100b3 100644
--- a/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactPersistenceManager.java
+++ b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactPersistenceManager.java
@@ -25,6 +25,7 @@ import java.io.InputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -88,6 +89,7 @@ import org.eclipse.osee.framework.skynet.core.word.WordUtil;
import org.eclipse.osee.framework.ui.plugin.event.Event;
import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandlerStatement;
import org.eclipse.osee.framework.ui.plugin.util.db.DbUtil;
@@ -1028,9 +1030,15 @@ public class ArtifactPersistenceManager implements PersistenceManager {
* @param artifacts The artifacts to delete.
* @throws SQLException
*/
- public void deleteArtifact(final Artifact... artifacts) throws SQLException {
+ public void deleteArtifact(final Artifact... artifacts) throws Exception {
if (artifacts.length == 0) return;
+ // Confirm artifacts are fit to delete
+ for (IArtifactCheck check : ArtifactChecks.getArtifactChecks()) {
+ Result result = check.isDeleteable(Arrays.asList(artifacts));
+ if (result.isFalse()) throw new IllegalStateException(result.getText());
+ }
+
final Branch branch = artifacts[0].getBranch();
if (transactionManager.isInBatch(branch)) {
for (Artifact artifact : artifacts) {
diff --git a/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/IArtifactCheck.java b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/IArtifactCheck.java
new file mode 100644
index 00000000000..8bae0f0b95d
--- /dev/null
+++ b/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/IArtifactCheck.java
@@ -0,0 +1,18 @@
+/*
+ * Created on Feb 28, 2008
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.skynet.core.artifact;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IArtifactCheck {
+
+ public Result isDeleteable(Collection<Artifact> artifacts) throws Exception;
+
+}
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java
index a2662858028..1c8b491f6dc 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java
@@ -21,7 +21,6 @@ import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -293,8 +292,8 @@ public class ArtifactSearchViewPage extends AbstractArtifactSearchViewPage imple
ArtifactPersistenceManager.getInstance().deleteArtifact(
getSelectedArtifacts(viewer).toArray(Artifact.EMPTY_ARRAY));
}
- } catch (SQLException ex) {
- OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
}
return null;
}
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteArtifactHandler.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteArtifactHandler.java
index 91a230c6708..f324fe95a11 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteArtifactHandler.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteArtifactHandler.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.osee.framework.ui.skynet.commandHandlers;
-import java.sql.SQLException;
import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
@@ -58,8 +57,8 @@ public class DeleteArtifactHandler extends AbstractSelectionChangedHandler {
if (dialog.open() == 0) {
ArtifactPersistenceManager.getInstance().deleteArtifact(artifacts.toArray(Artifact.EMPTY_ARRAY));
}
- } catch (SQLException ex) {
- OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
}
}
return null;
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java
index bd9e23320e7..551463c059d 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.osee.framework.ui.skynet.menu;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -166,7 +165,7 @@ public class GlobalMenu {
OSEELog.logException(SkynetGuiPlugin.class, ex, false);
}
}
- } catch (SQLException ex) {
+ } catch (Exception ex) {
OSEELog.logException(SkynetGuiPlugin.class, ex, true);
}
}

Back to the top