blob: bfa04a5f87c8351f725f0a7b73d117082b882520 [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.library.tests;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epf.common.utils.FileUtil;
import org.eclipse.epf.dataexchange.importing.LibraryService;
import org.eclipse.epf.dataexchange.importing.PluginService;
import org.eclipse.epf.library.LibraryServiceException;
import org.eclipse.epf.library.util.LibraryUtil;
import org.eclipse.epf.uma.Activity;
import org.eclipse.epf.uma.Artifact;
import org.eclipse.epf.uma.CapabilityPattern;
import org.eclipse.epf.uma.Checklist;
import org.eclipse.epf.uma.ContentDescription;
import org.eclipse.epf.uma.ContentPackage;
import org.eclipse.epf.uma.CustomCategory;
import org.eclipse.epf.uma.Discipline;
import org.eclipse.epf.uma.Domain;
import org.eclipse.epf.uma.Guidance;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.epf.uma.MethodLibrary;
import org.eclipse.epf.uma.MethodPlugin;
import org.eclipse.epf.uma.ProcessComponent;
import org.eclipse.epf.uma.Role;
import org.eclipse.epf.uma.RoleSet;
import org.eclipse.epf.uma.Section;
import org.eclipse.epf.uma.SupportingMaterial;
import org.eclipse.epf.uma.Task;
import org.eclipse.epf.uma.UmaFactory;
import org.eclipse.epf.uma.VariabilityElement;
import org.eclipse.epf.uma.VariabilityType;
import org.eclipse.epf.uma.WorkProductType;
import com.ibm.icu.util.Calendar;
/**
* Helper class to manipulate a test method library.
*
* @author Jinhua Xi
* @since 1.0
*/
public class LibraryTestHelper {
public static final String TEMP_TEST_DIR = System.getProperty("user.home") + File.separator //$NON-NLS-2$
+ "EPF" + File.separator + "test" + File.separator; //$NON-NLS-1$ //$NON-NLS-2$
private static final String LIBRARY_XMI = "library.xmi"; //$NON-NLS-1$
private static final String XMI_TYPE = "xmi"; //$NON-NLS-1$
/**
* Creates a new test method library.
*/
public static MethodLibrary createTestMethodLibrary()
throws LibraryServiceException {
String path = TEMP_TEST_DIR
+ Long.toHexString(Calendar.getInstance().getTimeInMillis())
+ File.separator;
org.eclipse.epf.library.LibraryService.getInstance()
.closeCurrentMethodLibrary();
Map params = new HashMap();
params.put("library.path", path); //$NON-NLS-1$
return org.eclipse.epf.library.LibraryService.getInstance()
.createMethodLibrary(LIBRARY_XMI, XMI_TYPE, params);
}
/**
* Creates a test method library on a given path.
*/
public static MethodLibrary createTestMethodLibrary(String path)
throws LibraryServiceException {
if (path == null) {
path = TEMP_TEST_DIR
+ Long
.toHexString(Calendar.getInstance()
.getTimeInMillis()) + File.separator;
}
// If the library path already exists, delete it.
File libraryPath = new File(path);
if (libraryPath.exists()) {
FileUtil.deleteAllFiles(libraryPath.getAbsolutePath());
libraryPath.delete();
}
org.eclipse.epf.library.LibraryService.getInstance()
.closeCurrentMethodLibrary();
Map params = new HashMap();
params.put("library.path", path); //$NON-NLS-1$
return org.eclipse.epf.library.LibraryService.getInstance()
.createMethodLibrary(LIBRARY_XMI, XMI_TYPE, params);
}
/**
* Closes the current method library and delete the library resource files.
*/
public static void closeLibrary() {
try {
File path = new File(org.eclipse.epf.library.LibraryService
.getInstance().getCurrentMethodLibraryLocation());
org.eclipse.epf.library.LibraryService.getInstance()
.closeCurrentMethodLibrary();
// Delete the library folder and files.
FileUtil.deleteAllFiles(path.getAbsolutePath());
path.delete();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void saveLibrary() {
try {
org.eclipse.epf.library.LibraryService.getInstance()
.saveCurrentMethodLibrary();
} catch (LibraryServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static MethodConfiguration createConfiguration(String name) {
return LibraryService.INSTANCE.createConfiguration(name, EcoreUtil
.generateUUID());
}
public static MethodPlugin createMethodPlugin(String name) {
try {
return LibraryService.INSTANCE.createPlugin(name, EcoreUtil
.generateUUID());
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static Discipline createDiscipline(MethodPlugin plugin, String name) {
Discipline element = LibraryService.INSTANCE
.createPluginService(plugin).createDiscipline();
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static RoleSet createRoleSet(MethodPlugin plugin, String name) {
RoleSet element = LibraryService.INSTANCE.createPluginService(plugin)
.createRoleSet();
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Domain createDomain(MethodPlugin plugin, String name) {
Domain element = LibraryService.INSTANCE.createPluginService(plugin)
.createDomain();
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static WorkProductType createWorkProductType(MethodPlugin plugin,
String name) {
WorkProductType element = LibraryService.INSTANCE.createPluginService(
plugin).createWorkProductType();
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static CustomCategory createCustomCategory(MethodPlugin plugin,
CustomCategory parent, String name) {
CustomCategory element = LibraryService.INSTANCE.createPluginService(
plugin).createCustomCategory(parent);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static ContentPackage createContentPackage(String name) {
return createContentPackage(null, name);
}
public static ContentPackage createContentPackage(MethodPlugin plugin,
String name) {
if (plugin == null) {
plugin = createMethodPlugin("test plugin");
}
ContentPackage element = LibraryService.INSTANCE.createPluginService(
plugin).createContentPackage(null);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Task createTask(ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
Task element = LibraryService.INSTANCE.createPluginService(plugin)
.createTask(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Role createRole(ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
Role element = LibraryService.INSTANCE.createPluginService(plugin)
.createRole(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Artifact createArtifact(ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
Artifact element = LibraryService.INSTANCE.createPluginService(plugin)
.createArtifact(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Guidance createGuidance(ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
Guidance element = LibraryService.INSTANCE.createPluginService(plugin)
.createGuidance(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Checklist createChecklist(ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
Checklist element = LibraryService.INSTANCE.createPluginService(plugin)
.createChecklist(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static SupportingMaterial createSupportingMaterial(
ContentPackage pkg, String name) {
MethodPlugin plugin = LibraryUtil.getMethodPlugin(pkg);
SupportingMaterial element = LibraryService.INSTANCE
.createPluginService(plugin).createSupportingMaterial(pkg);
element.setName(name);
element.setGuid(EcoreUtil.generateUUID());
return element;
}
public static Section createSection(ContentDescription desc, String name,
String content) {
Section e = UmaFactory.eINSTANCE.createSection();
e.setSectionName(name);
e.setSectionDescription(content);
e.setGuid(EcoreUtil.generateUUID());
desc.getSections().add(e);
return e;
}
public static CapabilityPattern createCapabilityPattern(
MethodPlugin plugin, String name, MethodConfiguration defaultConfig) {
CapabilityPattern cp = LibraryService.INSTANCE.createPluginService(
plugin).createCapabilityPattern(defaultConfig);
cp.setName(name);
((ProcessComponent) cp.eContainer()).setName(name);
saveLibrary();
return cp;
}
public static Activity createActivity(MethodPlugin plugin,
Activity superActivity, String name, Task[] tasks) {
PluginService svc = LibraryService.INSTANCE.createPluginService(plugin);
Activity act = svc.createActivity(superActivity);
act.setName(name);
saveLibrary();
if (tasks != null && tasks.length > 0) {
for (int i = 0; i < tasks.length; i++) {
svc.addTaskToActivity(act, tasks[i]);
}
saveLibrary();
}
return act;
}
public static void setExtends(VariabilityElement element,
VariabilityElement base) {
element.setVariabilityBasedOnElement(base);
element.setVariabilityType(VariabilityType.EXTENDS_LITERAL);
}
public static void setContributes(VariabilityElement element,
VariabilityElement base) {
element.setVariabilityBasedOnElement(base);
element.setVariabilityType(VariabilityType.CONTRIBUTES_LITERAL);
}
public static void setReplaces(VariabilityElement element,
VariabilityElement base) {
element.setVariabilityBasedOnElement(base);
element.setVariabilityType(VariabilityType.REPLACES_LITERAL);
}
}