Package org.activiti.designer.eclipse.util

Source Code of org.activiti.designer.eclipse.util.ExtensionPointUtil

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.activiti.designer.eclipse.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.activiti.designer.eclipse.common.ActivitiPlugin;
import org.activiti.designer.eclipse.extension.export.ExportMarshaller;
import org.activiti.designer.eclipse.extension.icon.IconProvider;
import org.activiti.designer.eclipse.extension.validation.ProcessValidator;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.graphics.Image;

/**
* Utility class for extension point references.
*
* @author Tiese Barrell
* @since 0.6.0
* @version 1
*/
public final class ExtensionPointUtil {

  private ExtensionPointUtil() {
  }

  public static final ExportMarshaller getExportMarshaller(final String marshallerName) {
    final Map<String, ExportMarshaller> marshallers = getExportMarshallersAndNames();
    if (marshallers.containsKey(marshallerName)) {
      return marshallers.get(marshallerName);
    }
    return null;
  }

  public static final Collection<ExportMarshaller> getExportMarshallers() {
    return getExportMarshallersAndNames().values();
  }

  public static final ProcessValidator getProcessValidator(final String validatorId) {
    final Map<String, ProcessValidator> validators = getProcessValidatorsAndIds();
    if (validators.containsKey(validatorId)) {
      return validators.get(validatorId);
    }
    return null;
  }

  public static final Collection<ProcessValidator> getProcessValidators() {
    return getProcessValidatorsAndIds().values();
  }

  public static final Image getIconFromIconProviders(final Object context) {

    Image result = null;

    final List<IconProvider> providers = getPrioritizedIconProviders();

    for (final IconProvider provider : providers) {
      try {
        result = provider.getIcon(context);
      } catch (RuntimeException e) {
        // no-op, provider has no support for this context
      }

      if (result != null) {
        break;
      }

    }

    return result;

  }
  private static final List<IconProvider> getPrioritizedIconProviders() {

    final List<IconProvider> result = new ArrayList<IconProvider>();

    final IConfigurationElement[] providerConfiguration = Platform.getExtensionRegistry().getConfigurationElementsFor(
            ActivitiPlugin.ICON_PROVIDER_EXTENSIONPOINT_ID);

    for (final IConfigurationElement element : providerConfiguration) {
      Object o;
      try {
        o = element.createExecutableExtension("class");
        if (o instanceof IconProvider) {
          final IconProvider iconProvider = (IconProvider) o;
          result.add(iconProvider);
        }
      } catch (CoreException e1) {
        e1.printStackTrace();
      }
    }

    Collections.sort(result, new IconProviderComparator());

    return result;
  }

  private static final Map<String, ExportMarshaller> getExportMarshallersAndNames() {

    final Map<String, ExportMarshaller> result = new HashMap<String, ExportMarshaller>();

    final IConfigurationElement[] marshallerConfiguration = Platform.getExtensionRegistry().getConfigurationElementsFor(
            ActivitiPlugin.EXPORT_MARSHALLER_EXTENSIONPOINT_ID);

    for (IConfigurationElement e : marshallerConfiguration) {
      Object o;
      try {
        o = e.createExecutableExtension("class");
        if (o instanceof ExportMarshaller) {
          final ExportMarshaller exportMarshaller = (ExportMarshaller) o;
          result.put(exportMarshaller.getMarshallerName(), exportMarshaller);
        }
      } catch (CoreException e1) {
        e1.printStackTrace();
      }
    }
    return result;
  }

  private static final Map<String, ProcessValidator> getProcessValidatorsAndIds() {
    final Map<String, ProcessValidator> result = new HashMap<String, ProcessValidator>();

    final IConfigurationElement[] validatorConfiguration = Platform.getExtensionRegistry().getConfigurationElementsFor(
            ActivitiPlugin.PROCESS_VALIDATOR_EXTENSIONPOINT_ID);

    if (validatorConfiguration.length > 0) {
      for (final IConfigurationElement e : validatorConfiguration) {

        try {
          final Object o = e.createExecutableExtension("class");
          if (o instanceof ProcessValidator) {
            final ProcessValidator processValidator = (ProcessValidator) o;
            result.put(processValidator.getValidatorId(), processValidator);
          }
        } catch (CoreException e1) {
          e1.printStackTrace();
        }

      }
    }
    return result;
  }

  private static class IconProviderComparator implements Comparator<IconProvider> {

    @Override
    public int compare(final IconProvider iconProvider1, final IconProvider iconProvider2) {
      return iconProvider2.getPriority().compareTo(iconProvider1.getPriority());
    }

  }

}
TOP

Related Classes of org.activiti.designer.eclipse.util.ExtensionPointUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.