| //------------------------------------------------------------------------------ |
| // 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.uma.util; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.epf.uma.ContentDescription; |
| import org.eclipse.epf.uma.ContentElement; |
| import org.eclipse.epf.uma.DescribableElement; |
| import org.eclipse.epf.uma.MethodElement; |
| import org.eclipse.epf.uma.UmaFactory; |
| import org.eclipse.epf.uma.UmaPackage; |
| import org.eclipse.epf.uma.impl.ContentElementImpl; |
| import org.eclipse.epf.uma.impl.ProcessElementImpl; |
| |
| /** |
| * Manages the creation of content descriptions. |
| * |
| * @author Phong Nguyen Le |
| * @since 1.0 |
| */ |
| public final class ContentDescriptionFactory { |
| |
| // Maps ContentElement implementation Class to ContentDesciptionInfo. |
| private static final Map<EClass, EClass> contentDescClassMap = new HashMap<EClass, EClass>(); |
| |
| static { |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getPractice(), |
| UmaPackage.eINSTANCE.getPracticeDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getRole(), |
| UmaPackage.eINSTANCE.getRoleDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getTask(), |
| UmaPackage.eINSTANCE.getTaskDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getTemplate(), |
| UmaPackage.eINSTANCE.getGuidanceDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getExample(), |
| UmaPackage.eINSTANCE.getGuidanceDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getReusableAsset(), |
| UmaPackage.eINSTANCE.getGuidanceDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getWhitepaper(), |
| UmaPackage.eINSTANCE.getGuidanceDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getArtifact(), |
| UmaPackage.eINSTANCE.getArtifactDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getDeliverable(), |
| UmaPackage.eINSTANCE.getDeliverableDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getOutcome(), |
| UmaPackage.eINSTANCE.getWorkProductDescription()); |
| |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getRoleDescriptor(), |
| UmaPackage.eINSTANCE.getDescriptorDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getCompositeRole(), |
| UmaPackage.eINSTANCE.getDescriptorDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getTaskDescriptor(), |
| UmaPackage.eINSTANCE.getDescriptorDescription()); |
| contentDescClassMap.put( |
| UmaPackage.eINSTANCE.getWorkProductDescriptor(), |
| UmaPackage.eINSTANCE.getDescriptorDescription()); |
| |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getMilestone(), |
| UmaPackage.eINSTANCE.getBreakdownElementDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getTeamProfile(), |
| UmaPackage.eINSTANCE.getBreakdownElementDescription()); |
| |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getActivity(), |
| UmaPackage.eINSTANCE.getActivityDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getIteration(), |
| UmaPackage.eINSTANCE.getActivityDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getPhase(), |
| UmaPackage.eINSTANCE.getActivityDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getCapabilityPattern(), |
| UmaPackage.eINSTANCE.getProcessDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE.getDeliveryProcess(), |
| UmaPackage.eINSTANCE.getDeliveryProcessDescription()); |
| contentDescClassMap.put(UmaPackage.eINSTANCE |
| .getProcessPlanningTemplate(), UmaPackage.eINSTANCE |
| .getProcessDescription()); |
| } |
| |
| public static EClass getContentDescriptionType(EClass describableElementType) { |
| EClass type = (EClass) contentDescClassMap.get(describableElementType); |
| if(type == null && UmaPackage.eINSTANCE.getDescribableElement().isSuperTypeOf(describableElementType)) { |
| type = UmaPackage.eINSTANCE.getContentDescription(); |
| } |
| return type; |
| } |
| |
| public static final ContentDescription createContentDescription( |
| DescribableElement e) { |
| EClass eClass = (EClass) contentDescClassMap.get(e.eClass()); |
| if (eClass == null) { |
| eClass = UmaPackage.eINSTANCE.getContentDescription(); |
| } |
| ContentDescription content = (ContentDescription) UmaFactory.eINSTANCE |
| .create(eClass); |
| content.setName(UmaUtil.createContentDescriptionName(e)); |
| content.setGuid(UmaUtil.generateGUID(e.getGuid())); |
| return content; |
| } |
| |
| /** |
| * Creates a new ContentDescription object for the given ContentElement and |
| * save it to a file |
| * |
| * @param e |
| * @return |
| * @deprecated use createContentDescription(DescribableElement e) instead |
| */ |
| public static ContentDescription createContentDescription(ContentElement e) { |
| return createContentDescription(e, false); |
| } |
| |
| /** |
| * |
| * @param e |
| * @param saveContentOnly |
| * @return |
| * @deprecated use createContentDescription(DescribableElement e) instead |
| */ |
| public static ContentDescription createContentDescription( |
| DescribableElement e, boolean saveContentOnly) { |
| // if ( e instanceof ContentElement) |
| // { |
| // return createContentDescription((ContentElement)e, saveContentOnly); |
| // } |
| // |
| // return createContentDescription(e); |
| |
| return createContentDescription(e); |
| } |
| |
| public static ContentDescription createContentDescription(ContentElement e, |
| boolean saveContentOnly) { |
| ContentDescription description = createContentDescription((DescribableElement) e); |
| |
| // Set descriptions = (Set) |
| // contentDescriptionsMap.get(descInfo.packageName); |
| // if(descriptions == null) { |
| // descriptions = new HashSet(); |
| // contentDescriptionsMap.put(descInfo.packageName, descriptions); |
| // } |
| // descriptions.add(description); |
| |
| // saving ContentDescription right after its creation it no longer |
| // needed since ContentDescription is |
| // now contained by a DescribableElement |
| // |
| // if(libPersister != null) { |
| // libPersister.save(e, description, saveContentOnly); |
| // } |
| return description; |
| } |
| |
| // public static final Map getContentDescriptionsMap() { |
| // return contentDescriptionsMap; |
| // } |
| |
| public static boolean hasPresentation(MethodElement e) { |
| if (e instanceof ContentElementImpl) { |
| return ((ContentElementImpl) e).basicGetPresentation() != null; |
| } else if (e instanceof ProcessElementImpl) { |
| return ((ProcessElementImpl) e).basicGetPresentation() != null; |
| } |
| return false; |
| } |
| |
| public static EClass getContentDescriptionEClass(DescribableElement e) { |
| return (EClass) contentDescClassMap.get(e.eClass()); |
| } |
| |
| public static void main(String[] args) throws Exception { |
| // MessageDigest md5 = MessageDigest.getInstance("MD5"); |
| String input = args[0]; |
| // byte[] hash = md5.digest(input.getBytes()); |
| System.out.println("input: '" + input + "'"); //$NON-NLS-1$ //$NON-NLS-2$ |
| System.out.println("Java's hash code: " + input.hashCode()); //$NON-NLS-1$ |
| // System.out.println("hash length: " + hash.length); |
| // System.out.println("base64 encoded: " + |
| // DataValue.Base64.encode(hash)); |
| System.out.println("new GUID: " + UmaUtil.generateGUID(input)); //$NON-NLS-1$ |
| } |
| |
| } |