| /******************************************************************************* |
| * Copyright (c) 2005 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 API and implementation |
| *******************************************************************************/ |
| package org.eclipse.bpel.common.ui; |
| |
| import java.util.StringTokenizer; |
| |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.IExtensionPoint; |
| import org.eclipse.core.runtime.Platform; |
| |
| /** |
| * Utility class. |
| */ |
| public final class Utils { |
| |
| /** |
| * Given an extension point name returns its configuration elements. |
| */ |
| public static IConfigurationElement[] getConfigurationElements(String extensionPointId) { |
| IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(CommonUIPlugin.PLUGIN_ID, extensionPointId); |
| if (extensionPoint == null) { |
| return null; |
| } |
| return extensionPoint.getConfigurationElements(); |
| } |
| |
| /** |
| * Stuff for manipulating generated code |
| * |
| * The format for generated code is: |
| |
| //@generated:id |
| // <generator |
| // source (model) |
| // goes |
| // here> |
| //@generated:end |
| <generated java code here> |
| |
| */ |
| /** |
| * additional tags we need for the model serialization to be stored as Java comments |
| */ |
| public static final String GEN_TAG = "//@generated:"; //$NON-NLS-1$ |
| /* |
| * Note: GEN_TAG_MID assumed to be substring of the other GEN_TAG's in code below, don't change it without adjusting the logic |
| * Also, adjust the similar code in the embedded editor if any. |
| */ |
| public static final String GEN_TAG_MID = "//"; //$NON-NLS-1$ |
| public static final String GEN_TAG_END = "//@generated:end"; //$NON-NLS-1$ |
| public static final String EMBEDDED_SMAP_PREFIX = "//!SMAP!"; //$NON-NLS-1$ |
| |
| /** |
| * Utility function that strips out the generated comments for the generated Java code with embedded model. |
| * @param string - pass the entire block of Java code that is generated from the embedded's getCode function |
| * @return - returns the Java code with the embedded code subtracted out |
| */ |
| public static String getGeneratedCode(String string) { |
| StringBuffer sb = new StringBuffer(); |
| StringTokenizer stringTokenizer = new StringTokenizer(string, "\n"); //$NON-NLS-1$ |
| boolean inside = false; |
| while (stringTokenizer.hasMoreTokens()) { |
| String s = stringTokenizer.nextToken(); |
| if (s.startsWith(GEN_TAG_MID) && !(s.startsWith(EMBEDDED_SMAP_PREFIX))) { |
| // test for end first since GEN_TAG is a prefix of GEN_TAG_END |
| if (inside && s.startsWith(GEN_TAG_END)) { |
| inside = false; |
| continue; |
| } |
| if (s.startsWith(GEN_TAG)) { |
| inside = true; |
| continue; // with next line |
| } |
| } else if (!s.startsWith(EMBEDDED_SMAP_PREFIX)){ |
| // it's not a commented line, so just regular Java code |
| sb.append(s); |
| sb.append("\n"); |
| continue; |
| } |
| |
| if (!inside && !(s.startsWith(EMBEDDED_SMAP_PREFIX))) { |
| sb.append(s); |
| sb.append("\n"); |
| } |
| } |
| return sb.toString(); |
| } |
| |
| /** |
| * Utility function that returns the id of the generator for the given generated Java code. |
| * Returns <code>null</code> if no generator id is found |
| * @param string - pass the entire block of Java code that is generated |
| * @return - returns the Java code with the generated comment code subtracted out |
| */ |
| public static String getGeneratorId(String string) { |
| if (string != null) { |
| StringTokenizer stringTokenizer = new StringTokenizer(string, "\n"); //$NON-NLS-1$ |
| while (stringTokenizer.hasMoreTokens()) { |
| String s = stringTokenizer.nextToken(); |
| if (s.startsWith(GEN_TAG_MID)) { |
| if (s.startsWith(GEN_TAG)) { |
| return s.substring(GEN_TAG.length()); |
| } |
| } |
| } |
| } |
| return null; |
| } |
| } |