diff options
author | megumi.telles | 2013-08-30 22:18:00 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2013-09-03 19:05:54 +0000 |
commit | 4820a81db4f857ede8007ec39c2d1ed7af5ee753 (patch) | |
tree | 8af6718e86bf00a798c0a450ba59dccb38fe6c0b /plugins/org.eclipse.osee.framework.ui.skynet | |
parent | 3a3a3fe7db847c6133c330f14020ffdbf77d5d21 (diff) | |
download | org.eclipse.osee-4820a81db4f857ede8007ec39c2d1ed7af5ee753.tar.gz org.eclipse.osee-4820a81db4f857ede8007ec39c2d1ed7af5ee753.tar.xz org.eclipse.osee-4820a81db4f857ede8007ec39c2d1ed7af5ee753.zip |
feature[ats_EDTDG]: Drag and Drop of edited document creates the document as a child
Change-Id: Ib09d0e7337b3954e983ac5f6fbc4e3266578a011
Diffstat (limited to 'plugins/org.eclipse.osee.framework.ui.skynet')
2 files changed, 67 insertions, 1 deletions
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF index e2678c913f6..eb0c6f3fec7 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF @@ -42,6 +42,7 @@ Import-Package: com.lowagie.text;version="2.1.7", com.lowagie.text.html;version="2.1.7", com.lowagie.text.pdf;version="2.1.7", com.lowagie.text.rtf;version="2.1.7", + org.apache.commons.io, org.apache.commons.lang;version="2.4.0", org.apache.commons.lang.mutable;version="2.4.0", org.apache.xml.serialize;version="2.9.0", diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerDragAndDrop.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerDragAndDrop.java index 3a0470de863..5255fe894c4 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerDragAndDrop.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerDragAndDrop.java @@ -11,16 +11,22 @@ package org.eclipse.osee.framework.ui.skynet; import java.io.File; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; +import org.apache.commons.io.FilenameUtils; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.osee.framework.core.data.IOseeBranch; +import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; +import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; import org.eclipse.osee.framework.core.enums.RelationOrderBaseTypes; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.model.type.ArtifactType; +import org.eclipse.osee.framework.core.operation.IOperation; import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -28,10 +34,18 @@ import org.eclipse.osee.framework.skynet.core.AccessPolicy; import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData; +import org.eclipse.osee.framework.skynet.core.importing.parsers.IArtifactExtractor; +import org.eclipse.osee.framework.skynet.core.importing.parsers.NativeDocumentExtractor; +import org.eclipse.osee.framework.skynet.core.importing.parsers.WholeWordDocumentExtractor; +import org.eclipse.osee.framework.skynet.core.importing.resolvers.IArtifactImportResolver; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager; import org.eclipse.osee.framework.ui.plugin.util.Wizards; +import org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportOperationFactory; +import org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportOperationParameter; import org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportWizard; +import org.eclipse.osee.framework.ui.skynet.Import.ArtifactResolverFactory; +import org.eclipse.osee.framework.ui.skynet.Import.ArtifactResolverFactory.ArtifactCreationStrategy; import org.eclipse.osee.framework.ui.skynet.artifact.ArtifactTransfer; import org.eclipse.osee.framework.ui.skynet.internal.Activator; import org.eclipse.osee.framework.ui.skynet.internal.ServiceUtil; @@ -201,9 +215,60 @@ public class ArtifactExplorerDragAndDrop extends SkynetDragAndDrop { wizard.setImportFile(importFile); wizard.setDestinationArtifact(parentArtifact); - Wizards.initAndOpen(wizard, viewPart, new ArtifactStructuredSelection(parentArtifact)); + String fileName = importFile.getName(); + if (isSameName(parentArtifact, fileName)) { + String promptMsg = + String.format( + "Artifact [%s] has same base file name as [%s]. \n\nDo you want to update the exisiting file? \nIf 'NO' selected, you'll be taken to the Artifact Import Wizard", + parentArtifact.getName(), FilenameUtils.getName(fileName)); + + if (MessageDialog.openQuestion(viewPart.getViewSite().getShell(), "Confirm Import", promptMsg)) { + + IArtifactImportResolver resolver = + ArtifactResolverFactory.createResolver(ArtifactCreationStrategy.CREATE_ON_DIFFERENT_ATTRIBUTES, + parentArtifact.getArtifactType(), Arrays.asList(CoreAttributeTypes.Name), true, false); + try { + ArtifactImportOperationParameter parameter = new ArtifactImportOperationParameter(); + parameter.setSourceFile(importFile); + parameter.setDestinationArtifact(parentArtifact.getParent()); + parameter.setExtractor(getArtifactExtractor(parentArtifact.getArtifactType())); + parameter.setResolver(resolver); + parameter.setStopOnError(true); + + IOperation operation = ArtifactImportOperationFactory.completeOperation(parameter); + Operations.executeWorkAndCheckStatus(operation); + } catch (OseeCoreException ex) { + OseeLog.log(getClass(), OseeLevel.SEVERE_POPUP, ex); + } + + } else { + Wizards.initAndOpen(wizard, viewPart, new ArtifactStructuredSelection(parentArtifact)); + } + } else { + Wizards.initAndOpen(wizard, viewPart, new ArtifactStructuredSelection(parentArtifact)); + } } } } } + + private boolean isSameName(Artifact art, String fileName) { + boolean isSame = false; + if (!art.getArtifactType().equals(CoreArtifactTypes.Folder)) { + if (art.getName().equals(FilenameUtils.getBaseName(fileName))) { + isSame = true; + } + } + return isSame; + } + + private IArtifactExtractor getArtifactExtractor(ArtifactType type) { + IArtifactExtractor extractor = null; + if (type.inheritsFrom(CoreArtifactTypes.GeneralDocument)) { + extractor = new NativeDocumentExtractor(); + } else { + extractor = new WholeWordDocumentExtractor(); + } + return extractor; + } } |