Package org.openiaml.model.diagram.custom.actions

Source Code of org.openiaml.model.diagram.custom.actions.RefreshDomainStoreMappingsWithDrools$RefreshDataStores

package org.openiaml.model.diagram.custom.actions;

import java.util.Arrays;
import java.util.List;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
import org.openiaml.model.diagram.edit.parts.DomainSourceEditPart;
import org.openiaml.model.drools.DroolsInferenceEngine;
import org.openiaml.model.drools.ICreateElementsFactory;
import org.openiaml.model.inference.InferenceException;
import org.openiaml.model.model.domain.DomainSource;
import org.openiaml.model.model.domain.DomainStoreTypes;

/**
* Refreshes DomainSources when connected to Properties files.
*
* @author jmwright
*
*/
public class RefreshDomainStoreMappingsWithDrools extends UpdateWithDroolsAction {

  /**
   * We only want to refresh Properties file mappings.
   *
   * @param object
   * @throws InferenceException
   */
  @Override
  public void checkModelElement(EObject object) throws InferenceException {
    DomainSource ds = (DomainSource) object;
    if (!ds.getType().equals(DomainStoreTypes.PROPERTIES_FILE)) {
      throw new InferenceException("Can only refresh mappings of Properties files: actual type was '" + ds.getType() + "'");
    }
  }

  /* (non-Javadoc)
   * @see org.openiaml.model.diagram.custom.actions.UpdateWithDroolsAction#getEditPartClass()
   */
  @Override
  public Class<? extends ShapeNodeEditPart> getEditPartClass() {
    return DomainSourceEditPart.class;
  }

  /* (non-Javadoc)
   * @see org.openiaml.model.diagram.custom.actions.UpdateWithDroolsAction#getExpectedEObjectClass()
   */
  @Override
  public Class<? extends EObject> getExpectedEObjectClass() {
    return DomainSource.class;
  }

  /* (non-Javadoc)
   * @see org.openiaml.model.diagram.custom.actions.UpdateWithDroolsAction#getEngine(org.openiaml.model.inference.ICreateElements)
   */
  @Override
  public DroolsInferenceEngine getEngine(ICreateElementsFactory handler) {
    return new RefreshDataStores(handler);
  }

  /**
   * We want to use the root element, not the selected element.
   */
  @Override
  public EObject selectRootElement(EObject element) {
    return getRoot(element);
  }

  /* (non-Javadoc)
   * @see org.openiaml.model.diagram.custom.actions.UpdateWithDroolsAction#getTitle()
   */
  @Override
  public String getTitle() {
    return "Properties-based DomainSource";
  }

  /**
   * Uses Drools to refresh data stores.
   *
   * @author jmwright
   *
   */
  public class RefreshDataStores extends DroolsInferenceEngine {

    ICreateElementsFactory handler;

    public RefreshDataStores(ICreateElementsFactory handler) {
      super(handler, false);
      this.handler = handler;
    }

    private List<String> ruleFiles = Arrays.asList(
        "/rules/domain.drl",
        "/rules/file-domain-object.drl"
      );

    /**
     * Get the list of rule files used.
     *
     * @see #addRuleFile(String)
     * @return
     */
    @Override
    public List<String> getRuleFiles() {
      return ruleFiles;
    }

  }

}
TOP

Related Classes of org.openiaml.model.diagram.custom.actions.RefreshDomainStoreMappingsWithDrools$RefreshDataStores

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.