//------------------------------------------------------------------------------ // 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.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.util.ExtendedMetaData; import org.eclipse.epf.uma.UmaFactory; /** * manage the features of EClass. * maintains a map of feature name to the EStructuralFeature object for easier access * * @author Jinhua Xi * */ public class FeatureManager { public static FeatureManager INSTANCE = new FeatureManager(); //private Map classMap = new HashMap(); // map of uma feature name to the corresponding xml feature name private Map featureNameMap = new TreeMap(); // uma features that should be ignored private List unneededRmcFeatures = new ArrayList(); // xml features that can be ignored private List unneededXmlFeatures = new ArrayList(); // map of EClass name to EClass Object for xml model // note: we can't use feature.getEType() to get the EClass from feature // the problem is the above returned EClass may not be the concreate EClass, instead, it is the base class // for example, it returns MethodPackage instead of ProcessPackage or ContentPackage // so we have to maintain a map manually private Map xmlEClassMap = new TreeMap(); // map of Eclas name to EClass object for uma model private Map umaEClassMap = new TreeMap(); private FeatureManager() { featureNameMap.put("OptionalInputTo", "optionalInputTo"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("Role", "role"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("Task", "task"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("activityReferences", "activityReference"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("aggregatedRoles", "aggregatedRole"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("assets", "reusableAsset"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("attachments", "attachment"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("baseConfigurations", "baseConfiguration"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("basedOnProcesses", "baseProcess"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("bases", "referencedMethodPlugin"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("body", "mainDescription"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("breakdownElements", "breakdownElement"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("categorizedElements", "categorizedElement"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("checklists", "checklist"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("childPackages", "methodPackage"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("communicationsMaterials", "communicationsMaterial"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("concepts", "concept,whitepaper"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("conceptsAndPapers", "concept,whitepaper"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("containedArtifacts", "containedArtifact"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("contentElements", "contentElement"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("contentReferences", "contentReference"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("copyrightStatement", "copyright"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("deliveredWorkProducts", "deliveredWorkProduct"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("disciplines", "discipline"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("educationMaterials", "educationMaterial"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("estimationConderations", "estimationConsiderations"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("examples", "example"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("guid", "id"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("guidelines", "guideline"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("howtoStaff", "howToStaff"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("includesPatterns", "includesPattern"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("interfaces", "interface"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("linkToPredecessor", "predecessor"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("methodPackages", "methodPackage"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("methodPlugins", "methodPlugin"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("ownedRules", "ownedRule"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("predefinedConfigurations", "methodConfiguration"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("processElements", "processElement"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("processViews", "processView"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("referenceWorkflows", "referenceWorkflow"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("reports", "report"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("reusableAssets", "reusableAsset"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("reusedPackages", "reusedPackage"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("roadmaps", "roadmap"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("roleSets", "roleSet"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("roles", "role"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("sectionDescription", "description"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("sections", "section"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("selectedSteps", "step"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("subCategories", "subCategory"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("subdiscipline", "subDiscipline"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("subPractices", "subPractice"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("subSections", "subSection"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("subdomains", "subdomain"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("superActivities", "superActivity"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("supportingMaterials", "supportingMaterial"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("tasks", "task"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("teamRoles", "role"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("templates", "template"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("toolMentors", "toolMentor"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("WorkProduct", "workProduct"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("workProducts", "workProduct"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("pred", "value"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("methodElementProperty", "methodElementProperty"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("requiredResults", "requiredResult"); //$NON-NLS-1$ //$NON-NLS-2$ featureNameMap.put("fulfills", "fulfill"); //$NON-NLS-1$ //$NON-NLS-2$ unneededRmcFeatures.add("containerArtifact"); //$NON-NLS-1$ unneededRmcFeatures.add("modifies"); //$NON-NLS-1$ unneededRmcFeatures.add("parentPackage"); //$NON-NLS-1$ unneededRmcFeatures.add("diagrams"); //$NON-NLS-1$ unneededRmcFeatures.add("modifies"); //$NON-NLS-1$ unneededRmcFeatures.add("steps"); //$NON-NLS-1$ unneededRmcFeatures.add("workedOnBy"); //$NON-NLS-1$ unneededRmcFeatures.add("diagrams"); //$NON-NLS-1$ unneededXmlFeatures.add("group"); //$NON-NLS-1$ unneededXmlFeatures.add("group1"); //$NON-NLS-1$ unneededXmlFeatures.add("group2"); //$NON-NLS-1$ unneededXmlFeatures.add("predecessor1"); //$NON-NLS-1$ loadXmlClasses(); loadRmcClasses(); // // print out the EClasses and feature map, for testing purpose // // don't delete this code segment // System.out.println("============ Loading EClasses for XML Uma model ================="); // for (Iterator it = xmlEClassMap.keySet().iterator(); it.hasNext(); ) { // System.out.println("\t" + it.next()); // } // System.out.println("================================================================="); // // for (Iterator it = featureNameMap.entrySet().iterator(); it.hasNext(); ) { // Map.Entry entry = (Map.Entry) it.next(); // String key = (String)entry.getKey(); // String value = (String)entry.getValue(); // if (value != null && value.length() > 0 ) { // System.out.println("\tfeatureNameMap.put(\"" + key + "\", \"" + value + "\");"); // } // } } private void loadRmcClasses() { // load EClass map loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getActivity()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getActivityDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getArtifact()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getArtifactDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getBreakdownElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getBreakdownElementDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getCapabilityPattern()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getChecklist()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getCompositeRole()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getConcept()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getConstraint()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getContentCategory()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getContentDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getContentElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getContentPackage()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getCustomCategory()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDeliverable()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDeliverableDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDeliveryProcess()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDeliveryProcessDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDescribableElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDescriptor()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDescriptorDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDiscipline()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDisciplineGrouping()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getDomain()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getEstimationConsiderations()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getExample()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getGuidance()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getGuidanceDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getGuideline()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getIteration()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodConfiguration()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodLibrary()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodPackage()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodPlugin()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodUnit()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMilestone()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getNamedElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getOutcome()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getPackageableElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getPhase()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getPlanningData()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getPractice()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getPracticeDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcess()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessComponent()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessComponentInterface()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessPackage()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getProcessPlanningTemplate()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getReport()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getReusableAsset()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRoadmap()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRole()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRoleDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRoleDescriptor()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRoleSet()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getRoleSetGrouping()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getSection()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getSupportingMaterial()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTask()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTaskDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTaskDescriptor()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTeamProfile()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTemplate()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTermDefinition()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getTool()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getToolMentor()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWhitepaper()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkBreakdownElement()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkDefinition()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkOrder()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkProduct()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkProductDescription()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkProductDescriptor()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getWorkProductType()); loadModelClasses(umaEClassMap, org.eclipse.epf.uma.UmaPackage.eINSTANCE.getMethodElementProperty()); } private void loadXmlClasses() { // load EClass map loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getActivity()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getActivityDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getArtifact()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getArtifactDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getBreakdownElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getBreakdownElementDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getCapabilityPattern()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getChecklist()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getCompositeRole()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getConcept()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getConstraint()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentCategory()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentCategoryPackage()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentPackage()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getCustomCategory()); // loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getCategoryType()); // loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getCategoryTypeObject()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDeliverable()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDeliverableDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDeliveryProcess()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDeliveryProcessDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDescribableElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDescriptor()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDescriptorDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDiscipline()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDisciplineGrouping()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getDomain()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getEstimate()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getEstimatingMetric()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getEstimationConsiderations()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getExample()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getGuidance()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getGuidanceDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getGuideline()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getIteration()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodConfiguration()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodLibrary()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodPackage()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodPlugin()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodUnit()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMilestone()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getNamedElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getOutcome()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getPackageableElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getPhase()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getPlanningData()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getPractice()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getPracticeDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcess()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessComponent()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessComponentInterface()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessPackage()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getProcessPlanningTemplate()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getReport()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getReusableAsset()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRoadmap()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRole()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRoleDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRoleDescriptor()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRoleSet()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getRoleSetGrouping()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getSection()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getSupportingMaterial()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTask()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTaskDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTaskDescriptor()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTeamProfile()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTemplate()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTermDefinition()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getTool()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getToolMentor()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWhitepaper()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkBreakdownElement()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkDefinition()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkOrder()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkProduct()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkProductDescription()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkProductDescriptor()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getWorkProductType()); loadModelClasses(xmlEClassMap, org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getMethodElementProperty()); } private void loadModelClasses(Map classMap, EClass clazz) { String name = clazz.getName(); if( classMap.containsKey(name) ) { return; } classMap.put(name, clazz); //for (Iterator it = clazz.getEAllStructuralFeatures().iterator(); it.hasNext(); ) { for (Iterator elements = ExtendedMetaData.INSTANCE.getAllElements(clazz).iterator(); elements.hasNext(); ) { EStructuralFeature eStructuralFeature = (EStructuralFeature)elements.next(); EClassifier eClassifier = eStructuralFeature.getEType(); if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; // recursively find the nestedt features loadModelClasses(classMap, eClass); } } } /** * @param clazz * @param umaFeatureName * @return the corresponding xml feature. */ public EStructuralFeature getXmlFeature(EClass clazz, String umaFeatureName) { return getXmlFeature(clazz, umaFeatureName, null); } /** * @param umaClazz * @param xmlFeatureName * @return the corresponding EStructuralFeature object. */ public EStructuralFeature getRmcFeature(EClass umaClazz, String xmlFeatureName) { for ( Iterator it = umaClazz.getEAllStructuralFeatures().iterator(); it.hasNext(); ) { EStructuralFeature feature = (EStructuralFeature)it.next(); String umaFeaturename = feature.getName(); // if the feature name is the same, got it if ( umaFeaturename.equals(xmlFeatureName) ) { return feature; } // check if the feature name is mapped to another xml feature name String featureName = (String)featureNameMap.get(umaFeaturename); if ( featureName != null ) { int i = featureName.indexOf(","); //$NON-NLS-1$ if ( i > 0 ) { if ( featureName.substring(0,i).equals(xmlFeatureName) || featureName.substring(i+1).equals(xmlFeatureName) ) { return feature; } } else { if ( featureName.equals(xmlFeatureName) ) { return feature; } } } } //System.out.print("FeatureManager: Unable to find uma feature for xml feature" + xmlFeatureName); return null; } /** * @param clazz * @param umaFeatureName * @param objectType * @return the corrsponding xml feature. */ public EStructuralFeature getXmlFeature(EClass clazz, String umaFeatureName, String objectType) { String featureName = umaFeatureName; if ( featureNameMap.containsKey(featureName) ) { featureName = (String)featureNameMap.get(featureName); // if the feature is not unique, use the first one int i = featureName.indexOf(","); //$NON-NLS-1$ if ( i > 0 ) { String name = featureName.substring(0, i); if ( objectType != null ) { // pick the feature based on object type if ( !name.equalsIgnoreCase(objectType) ) { name = featureName.substring(i+1); } if ( !name.equalsIgnoreCase(objectType) ) { name = null; } } featureName = name; } } if ( featureName == null ) { return null; } EStructuralFeature feature = clazz.getEStructuralFeature(featureName); if ( (feature==null) && (clazz.getName().equals("ContentCategoryPackage")) && featureName.equals("contentElement") ) { //$NON-NLS-1$ //$NON-NLS-2$ feature = org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE.getContentCategoryPackage_ContentCategory(); } // if ( feature == null ) { // System.out.println("No xml feature " + featureName + " for class " + clazz.getName()); // } return feature; } /** * @param umaEClassName * @return the corresponding xml eclass */ public EClass getXmlEClass(String umaEClassName) { // EClass rootClass = ExtendedMetaData.INSTANCE.getDocumentRoot(org.eclipse.epf.xml.uma.UmaPackage.eINSTANCE); // EClass eClass = (EClass)rootClass.getEStructuralFeature(umaEClassName); // return eClass; EClass cls = (EClass)xmlEClassMap.get(umaEClassName); // if ( cls == null ) { // System.out.println("No xml EClass for uma class " + umaEClassName); // } return cls; } /** * @param xmlEClassName * @return the corresponding EClass object. */ public EClass getRmcEClass(String xmlEClassName) { EClass cls = (EClass)umaEClassMap.get(xmlEClassName); // if ( cls == null ) { // System.out.println("No uma EClass for xml class " + xmlEClassName); // } return cls; } /** * @param featurename * @return true if the feature is unneeded given by featurename. */ public boolean isUnneededRmcFeature(String featurename) { return unneededRmcFeatures.contains(featurename); } /** * @param featurename * @return true if the xml feature is unneeded given by featurename. */ public boolean isUnneededXmlFeature(String featurename) { return unneededXmlFeatures.contains(featurename); } /** * Prints the feature-name map. */ public void printFeatureNameMapping() { printFeature(UmaFactory.eINSTANCE.createActivity(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createActivity()); printFeature(UmaFactory.eINSTANCE.createActivityDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createActivityDescription()); printFeature(UmaFactory.eINSTANCE.createArtifact(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createArtifact()); printFeature(UmaFactory.eINSTANCE.createArtifactDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createArtifactDescription()); printFeature(UmaFactory.eINSTANCE.createBreakdownElementDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createBreakdownElementDescription()); printFeature(UmaFactory.eINSTANCE.createCapabilityPattern(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createCapabilityPattern()); printFeature(UmaFactory.eINSTANCE.createChecklist(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createChecklist()); printFeature(UmaFactory.eINSTANCE.createCompositeRole(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createCompositeRole()); printFeature(UmaFactory.eINSTANCE.createConcept(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createConcept()); printFeature(UmaFactory.eINSTANCE.createConstraint(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createConstraint()); printFeature(UmaFactory.eINSTANCE.createContentDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createContentDescription()); printFeature(UmaFactory.eINSTANCE.createContentPackage(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createContentPackage()); printFeature(UmaFactory.eINSTANCE.createCustomCategory(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createCustomCategory()); printFeature(UmaFactory.eINSTANCE.createDeliverable(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDeliverable()); printFeature(UmaFactory.eINSTANCE.createDeliverableDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDeliverableDescription()); printFeature(UmaFactory.eINSTANCE.createDeliveryProcess(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDeliveryProcess()); printFeature(UmaFactory.eINSTANCE.createDeliveryProcessDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDeliveryProcessDescription()); printFeature(UmaFactory.eINSTANCE.createDescriptorDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDescriptorDescription()); printFeature(UmaFactory.eINSTANCE.createDiscipline(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDiscipline()); printFeature(UmaFactory.eINSTANCE.createDisciplineGrouping(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDisciplineGrouping()); printFeature(UmaFactory.eINSTANCE.createDomain(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createDomain()); printFeature(UmaFactory.eINSTANCE.createEstimationConsiderations(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createEstimationConsiderations()); printFeature(UmaFactory.eINSTANCE.createExample(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createExample()); printFeature(UmaFactory.eINSTANCE.createGuidanceDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createGuidanceDescription()); printFeature(UmaFactory.eINSTANCE.createGuideline(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createGuideline()); printFeature(UmaFactory.eINSTANCE.createIteration(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createIteration()); printFeature(UmaFactory.eINSTANCE.createMethodConfiguration(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createMethodConfiguration()); printFeature(UmaFactory.eINSTANCE.createMethodLibrary(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createMethodLibrary()); printFeature(UmaFactory.eINSTANCE.createMethodPlugin(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createMethodPlugin()); printFeature(UmaFactory.eINSTANCE.createMilestone(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createMilestone()); printFeature(UmaFactory.eINSTANCE.createOutcome(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createOutcome()); printFeature(UmaFactory.eINSTANCE.createPhase(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createPhase()); printFeature(UmaFactory.eINSTANCE.createPlanningData(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createPlanningData()); printFeature(UmaFactory.eINSTANCE.createPractice(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createPractice()); printFeature(UmaFactory.eINSTANCE.createPracticeDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createPracticeDescription()); printFeature(UmaFactory.eINSTANCE.createProcessComponent(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createProcessComponent()); printFeature(UmaFactory.eINSTANCE.createProcessDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createProcessDescription()); printFeature(UmaFactory.eINSTANCE.createProcessPackage(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createProcessPackage()); printFeature(UmaFactory.eINSTANCE.createProcessPlanningTemplate(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createProcessPlanningTemplate()); printFeature(UmaFactory.eINSTANCE.createReport(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createReport()); printFeature(UmaFactory.eINSTANCE.createReusableAsset(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createReusableAsset()); printFeature(UmaFactory.eINSTANCE.createRoadmap(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRoadmap()); printFeature(UmaFactory.eINSTANCE.createRole(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRole()); printFeature(UmaFactory.eINSTANCE.createRoleDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRoleDescription()); printFeature(UmaFactory.eINSTANCE.createRoleDescriptor(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRoleDescriptor()); printFeature(UmaFactory.eINSTANCE.createRoleSet(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRoleSet()); printFeature(UmaFactory.eINSTANCE.createRoleSetGrouping(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createRoleSetGrouping()); printFeature(UmaFactory.eINSTANCE.createSection(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createSection()); printFeature(UmaFactory.eINSTANCE.createSupportingMaterial(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createSupportingMaterial()); printFeature(UmaFactory.eINSTANCE.createTask(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTask()); printFeature(UmaFactory.eINSTANCE.createTaskDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTaskDescription()); printFeature(UmaFactory.eINSTANCE.createTaskDescriptor(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTaskDescriptor()); printFeature(UmaFactory.eINSTANCE.createTeamProfile(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTeamProfile()); printFeature(UmaFactory.eINSTANCE.createTemplate(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTemplate()); printFeature(UmaFactory.eINSTANCE.createTermDefinition(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTermDefinition()); printFeature(UmaFactory.eINSTANCE.createTool(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createTool()); printFeature(UmaFactory.eINSTANCE.createToolMentor(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createToolMentor()); printFeature(UmaFactory.eINSTANCE.createWhitepaper(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createWhitepaper()); printFeature(UmaFactory.eINSTANCE.createWorkOrder(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createWorkOrder()); printFeature(UmaFactory.eINSTANCE.createWorkProductDescription(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createWorkProductDescription()); printFeature(UmaFactory.eINSTANCE.createWorkProductDescriptor(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createWorkProductDescriptor()); printFeature(UmaFactory.eINSTANCE.createWorkProductType(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.createWorkProductType()); // printFeature(UmaFactory.eINSTANCE.create(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.create()); // printFeature(UmaFactory.eINSTANCE.create(), org.eclipse.epf.xml.uma.UmaFactory.eINSTANCE.create()); } private void printFeature(EObject obj1, EObject obj2) { List matched = new ArrayList(); List unmatched = new ArrayList(); List umaFeatures = new ArrayList(); EList features = obj1.eClass().getEAllStructuralFeatures(); for ( Iterator it = features.iterator(); it.hasNext(); ) { EStructuralFeature feature = (EStructuralFeature)it.next(); String name = feature.getName(); if ( featureNameMap.containsKey(name) ) { String xml_name = (String) featureNameMap.get(name); int indx = xml_name.indexOf(","); //$NON-NLS-1$ if ( indx > 0 ) { matched.add(xml_name.substring(0, indx)); matched.add(xml_name.substring(indx+1).trim()); } else if ( !matched.contains(xml_name) ) { matched.add(xml_name); } } else if (!unneededRmcFeatures.contains(name) && !umaFeatures.contains(name) ) { umaFeatures.add(name); } } features = obj2.eClass().getEAllStructuralFeatures(); for ( Iterator it = features.iterator(); it.hasNext(); ) { EStructuralFeature feature = (EStructuralFeature)it.next(); String name = feature.getName(); if ( umaFeatures.contains(name) ) { umaFeatures.remove(name); } else if (!unneededXmlFeatures.contains(name) && !matched.contains(name) && !unmatched.contains(name) ) { unmatched.add(name); } } if ( umaFeatures.size() + unmatched.size() == 0 ) { return; } System.out.println("============== un-matched features for " + obj1.eClass().getName() + " =================="); //$NON-NLS-1$ //$NON-NLS-2$ for ( Iterator it = umaFeatures.iterator(); it.hasNext(); ) { String name = (String)it.next(); System.out.println("\tfeatureNameMap.put(\"" + name + "\", \"\");"); //$NON-NLS-1$ //$NON-NLS-2$ //System.out.println(name); } for ( Iterator it = unmatched.iterator(); it.hasNext(); ) { String name = (String)it.next(); System.out.println("\t\t" + name); //$NON-NLS-1$ } System.out.println(""); //$NON-NLS-1$ } // public class FeatureMap { // private Map featureMap = new HashMap(); // // FeatureMap(EClass clazz) { // EList features = clazz.getEAllStructuralFeatures(); // for ( Iterator it = features.iterator(); it.hasNext(); ) { // EStructuralFeature feature = (EStructuralFeature)it.next(); // featureMap.put(feature.getName(), feature); // } // } // // public EStructuralFeature getFeature(String featureName) { // return (EStructuralFeature) featureMap.get(featureName); // } // } }