blob: 5406149367c4b103d15f8de4de9d7b3273292327 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.export.xml.services;
import java.io.File;
import java.io.IOException;
import org.eclipse.epf.dataexchange.util.BaseResourceHandler;
import org.eclipse.epf.dataexchange.util.UrlInfo;
import org.eclipse.epf.library.ILibraryManager;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.library.util.ResourceHelper;
import org.eclipse.epf.uma.MethodElement;
/**
* The resource handler for content in the exported library.
*
* @author Jinhua Xi
* @since 1.0
*/
public class ExportResourceHandler extends BaseResourceHandler {
/**
* Creates a new instance.
*/
public ExportResourceHandler(File sourceLibRoot, File targetLibRoot) {
super(sourceLibRoot, targetLibRoot);
}
/**
* resolve the url. For XML export, we should reserve the resource locations.
*/
public UrlInfo resolveFileUrl(Object owner, String srcUrl) throws Exception {
return loadUrlInfoWithFixedPath(owner, srcUrl);
}
/**
* the resource path will be relative to the libary root. urls needs to be
* fixed
*
* @param owner
* the owner object in the target library
* @param srcUrl
* @return
*/
private UrlInfo loadUrlInfoWithFixedPath(Object owner, String srcUrl) {
UrlInfo info = new UrlInfo();
info.sourceUrl = srcUrl;
info.targetUrl = srcUrl;
String srcFile = getFileRelPath(owner, srcUrl);
if (srcFile != null) {
info.sourceFile = new File(sourceLibRoot, srcFile);
info.targetFile = new File(targetLibRoot, srcFile);
info.targetUrl = srcFile.replace(File.separatorChar, '/');
}
return info;
}
private String getFileRelPath(Object owner, String srcUrl) {
try {
if (owner instanceof org.eclipse.epf.xml.uma.MethodElement) {
String id = ((org.eclipse.epf.xml.uma.MethodElement) owner)
.getId();
ILibraryManager manager = LibraryService.getInstance()
.getCurrentLibraryManager();
if (manager != null) {
MethodElement element = manager.getMethodElement(id);
if (element != null) {
File f = new File(new File(sourceLibRoot,
ResourceHelper.getElementPath(element)), srcUrl);
String path = f.getCanonicalPath();
return path.substring(sourceLibRoot.getCanonicalPath()
.length() + 1);
}
}
}
} catch (IOException e) {
// Log error here
}
return null;
}
// /**
// * the resource path will be relative to the owner element. urls will not be
// * changed but resource files is relicated.
// *
// * @param owner
// * @param srcUrl
// * @return
// */
// private UrlInfo loadUrlInfoWithRelativePath(Object owner, String srcUrl) {
// UrlInfo info = new UrlInfo();
//
// try {
// info.sourceUrl = srcUrl;
// info.targetUrl = srcUrl; // no url change
//
// // get the rmc object
// if (owner instanceof org.eclipse.epf.xml.uma.MethodElement) {
// String id = ((org.eclipse.epf.xml.uma.MethodElement) owner)
// .getId();
// ILibraryManager manager = LibraryService.getInstance()
// .getCurrentLibraryManager();
// if (manager != null) {
// MethodElement element = manager.getMethodElement(id);
// if (element != null) {
// File f = new File(new File(sourceLibRoot,
// ResourceHelper.getElementPath(element)), srcUrl);
// f = f.getCanonicalFile();
//
// info.sourceFile = f;
// }
// }
// }
//
// info.targetFile = new File(targetLibRoot, srcUrl)
// .getCanonicalFile();
//
// } catch (IOException e) {
// // log error TODO
// }
// return info;
// }
}