//------------------------------------------------------------------------------ // 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.edit.util; import java.util.Collection; import java.util.HashSet; import org.eclipse.epf.uma.MethodPlugin; import org.eclipse.epf.uma.ProcessPackage; import org.eclipse.epf.uma.UmaFactory; /** * Defines internal structure of a method plugin with predefined packages * * @author Phong Nguyen Le * @since 1.0 */ public class ModelStructure { public static final ModelStructure DEFAULT = new ModelStructure(); public static final String HIDDEN_PACKAGE_NAME = "Hidden"; //$NON-NLS-1$ public static final String CONTENT_PACKAGE_NAME = "Content"; //$NON-NLS-1$ public static final String CORE_CONTENT_PACAKGE_NAME = "CoreContent"; //$NON-NLS-1$ private static final String CATEGORIES = "Categories"; //$NON-NLS-1$ public static final String ROLE_SET_PACKAGE_NAME = "RoleSets"; //$NON-NLS-1$ public static final String DISCIPLINE_PACKAGE_NAME = "Disciplines"; //$NON-NLS-1$ public static final String CUSTOM_CATEGORY_PACKAGE_NAME = "CustomCategories"; //$NON-NLS-1$ private static final String[] DEFAULT_CORE_CONTENT_PATH = { CONTENT_PACKAGE_NAME, CORE_CONTENT_PACAKGE_NAME }; private static final String[] DEFAULT_ROLE_SET_PACKAGE_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, ROLE_SET_PACKAGE_NAME}; public static final String[] DEFAULT_DISCIPLINE_DEF_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, DISCIPLINE_PACKAGE_NAME }; private static final String[] DEFAULT_TOOL_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, "Tools" }; //$NON-NLS-1$ private static final String[] DEFAULT_STANDARD_CATEGORY_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, "StandardCategories" }; //$NON-NLS-1$ private static final String[] DEFAULT_DELIVERY_PROCESS_PATH = { "DeliveryProcesses" }; //$NON-NLS-1$ private static final String[] DEFAULT_CAPABILITY_PATTERN_PATH = { CONTENT_PACKAGE_NAME, "CapabilityPatterns" }; //$NON-NLS-1$ public static final String[] DEFAULT_DOMAIN_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, "Domains" }; //$NON-NLS-1$ public static final String[] DEFAULT_WORK_PRODUCT_TYPE_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, "WP Types" }; //$NON-NLS-1$ public static final String[] DEFAULT_CUSTOM_CATEGORY_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, CUSTOM_CATEGORY_PACKAGE_NAME}; public static final String[] DEFAULT_ESTIMATING_MODELS_PATH = { CONTENT_PACKAGE_NAME, CATEGORIES, "EstimatingModels" }; //$NON-NLS-1$ private static final String[] DEFAULT_PROCESS_CONTRIBUTION_PATH = { "ProcessContributions" }; //$NON-NLS-1$ private static final String[] DEFAULT_PROCESS_PLANNING_TEMPLATE_PATH = { "ProcessPlanningTemplates" }; //$NON-NLS-1$ public static final Collection ALL_PREDEFINED_PATHS = new HashSet(); public String[] coreContentPath; public String[] roleSetPath; public String[] disciplineDefinitionPath; public String[] domainPath; public String[] toolPath; public String[] capabilityPatternPath; public String[] deliveryProcessPath; public String[] workProductTypePath; public String[] processContributionPath; public String[] customCategoryPath; public String[] estimatingModelPath; public String[] standardCategoryPath; public String[] processPlanningTemplatePath; /** * this is the method to return all the system defined package path Please * add this this array when ever you have new system packages defined * * @return */ public String[][] getAllSystemPaths() { return new String[][] { coreContentPath, roleSetPath, disciplineDefinitionPath, domainPath, toolPath, capabilityPatternPath, deliveryProcessPath, workProductTypePath, processContributionPath, customCategoryPath, standardCategoryPath, processPlanningTemplatePath, }; } public String[][] getCategoryPaths() { return new String[][] { roleSetPath, disciplineDefinitionPath, domainPath, toolPath, workProductTypePath, standardCategoryPath, customCategoryPath, }; } public static String toLines(String[] path) { StringBuffer lines = new StringBuffer(); int max = path.length - 1; for (int i = 0; i < max; i++) { lines.append(path[i]).append('\n'); } lines.append(path[max]); return lines.toString(); } public static String toFilePath(String[] path) { StringBuffer lines = new StringBuffer(); int max = path.length; for (int i = 0; i < max; i++) { lines.append(path[i]).append('/'); } return lines.toString(); } static { DEFAULT.coreContentPath = DEFAULT_CORE_CONTENT_PATH; DEFAULT.disciplineDefinitionPath = DEFAULT_DISCIPLINE_DEF_PATH; DEFAULT.roleSetPath = DEFAULT_ROLE_SET_PACKAGE_PATH; DEFAULT.domainPath = DEFAULT_DOMAIN_PATH; DEFAULT.toolPath = DEFAULT_TOOL_PATH; DEFAULT.capabilityPatternPath = DEFAULT_CAPABILITY_PATTERN_PATH; DEFAULT.deliveryProcessPath = DEFAULT_DELIVERY_PROCESS_PATH; DEFAULT.workProductTypePath = DEFAULT_WORK_PRODUCT_TYPE_PATH; DEFAULT.processContributionPath = DEFAULT_PROCESS_CONTRIBUTION_PATH; DEFAULT.standardCategoryPath = DEFAULT_STANDARD_CATEGORY_PATH; DEFAULT.customCategoryPath = DEFAULT_CUSTOM_CATEGORY_PATH; DEFAULT.estimatingModelPath = DEFAULT_ESTIMATING_MODELS_PATH; DEFAULT.processPlanningTemplatePath = DEFAULT_PROCESS_PLANNING_TEMPLATE_PATH; ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.coreContentPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.disciplineDefinitionPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.roleSetPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.domainPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.toolPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.capabilityPatternPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.deliveryProcessPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.workProductTypePath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.processContributionPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.standardCategoryPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.customCategoryPath)); ALL_PREDEFINED_PATHS.add(toFilePath(DEFAULT.estimatingModelPath)); ALL_PREDEFINED_PATHS .add(toFilePath(DEFAULT.processPlanningTemplatePath)); } public static ProcessPackage createProcessContributionPackage( MethodPlugin plugin) { // boolean old = plugin.eDeliver(); try { // create ProcessContributions process package // ProcessPackage pkg = UmaFactory.eINSTANCE.createProcessPackage(); pkg.setName(ModelStructure.DEFAULT.processContributionPath[0]); // disable notification // plugin.eSetDeliver(false); plugin.getMethodPackages().add(pkg); return pkg; } finally { // restore original notifaction setting // plugin.eSetDeliver(true); } } public static ProcessPackage createProcessPlanningTemplatePackage( MethodPlugin plugin) { // boolean old = plugin.eDeliver(); try { // create ProcessPlanningTemplates process package // ProcessPackage pkg = UmaFactory.eINSTANCE.createProcessPackage(); pkg.setName(ModelStructure.DEFAULT.processPlanningTemplatePath[0]); // disable notification // plugin.eSetDeliver(false); plugin.getMethodPackages().add(pkg); return pkg; } finally { // restore original notifaction setting // plugin.eSetDeliver(true); } } }