wlu: 208459 fix
diff --git a/org.eclipse.epf.export/src/org/eclipse/epf/export/services/DiagramHandler.java b/org.eclipse.epf.export/src/org/eclipse/epf/export/services/DiagramHandler.java
index 98c353e..240cb91 100644
--- a/org.eclipse.epf.export/src/org/eclipse/epf/export/services/DiagramHandler.java
+++ b/org.eclipse.epf.export/src/org/eclipse/epf/export/services/DiagramHandler.java
@@ -17,13 +17,15 @@
import java.util.List;
import java.util.Map;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.epf.common.utils.FileUtil;
-import org.eclipse.epf.common.utils.NetUtil;
import org.eclipse.epf.library.ILibraryResourceManager;
import org.eclipse.epf.library.util.ResourceHelper;
import org.eclipse.epf.uma.CapabilityPattern;
import org.eclipse.epf.uma.DeliveryProcess;
import org.eclipse.epf.uma.MethodElement;
+import org.eclipse.epf.uma.ProcessComponent;
+import org.eclipse.epf.uma.util.UmaUtil;
/**
@@ -211,14 +213,43 @@
String diagramPath = elementPath + elem.getName() + File.separator +
"diagram.xmi"; //$NON-NLS-1$
+ if (debug) {
+ System.out.println("LD> diagramPath 0: " + diagramPath); //$NON-NLS-1$
+ }
+
File srcRoot = sourceLibRoot;
File tgtRoot = targetLibRoot;
+
+
if (export) {
srcRoot = getRoot(elem);
} else {
tgtRoot = getRoot(elem);
}
+ if (export) {
+ Resource res = elem.eResource();
+ if (res != null) {
+ File modelFile = new File(res.getURI().toFileString());
+ File folder = modelFile.getParentFile();
+ String folderPath = folder.getAbsolutePath();
+
+ int ix = srcRoot.getAbsolutePath().length();
+ if (folderPath.length() > ix
+ && folderPath.substring(0, ix).equalsIgnoreCase(
+ srcRoot.getAbsolutePath())) {
+ diagramPath = folderPath.substring(ix + 1) + File.separator
+ + "diagram.xmi"; //$NON-NLS-1$
+ }
+ }
+ } else {
+ ProcessComponent pc = UmaUtil.getProcessComponent(elem);
+ if (pc != null && ! pc.getName().equals(elem.getName())) {
+ diagramPath = elementPath + pc.getName() + File.separator
+ + "diagram.xmi"; //$NON-NLS-1$
+ }
+ }
+
files[0] = new File(srcRoot, diagramPath);
files[1] = new File(tgtRoot, diagramPath);
@@ -238,5 +269,9 @@
File root = (new File(pluginPath)).getParentFile();
return root;
}
+
+ public File getTargetLibRoot() {
+ return targetLibRoot;
+ }
}
diff --git a/org.eclipse.epf.import.xml/src/org/eclipse/epf/importing/xml/services/ImportXMLService.java b/org.eclipse.epf.import.xml/src/org/eclipse/epf/importing/xml/services/ImportXMLService.java
index e99737f..41642b3 100644
--- a/org.eclipse.epf.import.xml/src/org/eclipse/epf/importing/xml/services/ImportXMLService.java
+++ b/org.eclipse.epf.import.xml/src/org/eclipse/epf/importing/xml/services/ImportXMLService.java
@@ -293,7 +293,7 @@
//[1]: targetFile
protected File[] getFiles(org.eclipse.epf.uma.MethodElement elem) {
File[] files = super.getFiles(elem, false);
-
+
EDataObject xmlObj = xmlLib.getElement(elem.getGuid());
if (xmlObj instanceof org.eclipse.epf.xml.uma.Process) {
org.eclipse.epf.xml.uma.Process proc =
@@ -303,7 +303,8 @@
File file = new File(getSourceLibRoot(), uri);
//System.out.println("LD: file: " + file);
if (file.exists()) {
- files[0] = file;
+ files[0] = file;
+ files[1] = new File(getTargetLibRoot(), uri);
} else {
//System.out.println("LD: files[0]: " + files[0]);
}