Package org.cishell.utilities.mutateParameter

Source Code of org.cishell.utilities.mutateParameter.ObjectClassDefinitionTransformer

package org.cishell.utilities.mutateParameter;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;

import org.cishell.reference.service.metatype.BasicObjectClassDefinition;
import org.cishell.utilities.MutateParameterUtilities;
import org.cishell.utilities.mutateParameter.dropdown.DropdownTransformer;
import org.osgi.service.metatype.AttributeDefinition;
import org.osgi.service.metatype.ObjectClassDefinition;
/**
* @deprecated see
*            {@link url http://wiki.cns.iu.edu/display/CISHELL/2012/08/30/Future+Direction
*             +for+CIShell+Utilities}
*/
@Deprecated
public class ObjectClassDefinitionTransformer {
  /**
   * AttributeDefinition filters as described in ObjectClassDefinition.
   * "Atomic" to exclude blanket filters like ObjectClassDefinition.ALL.
   * @see ObjectClassDefinition#REQUIRED
   * @see ObjectClassDefinition#OPTIONAL
   */
  public static final Collection<Integer> ATOMIC_ATTRIBUTE_DEFINITION_FILTERS =
    Collections.unmodifiableList(Arrays.asList(
      new Integer(ObjectClassDefinition.REQUIRED),
      new Integer(ObjectClassDefinition.OPTIONAL)));
//  static {
//    List l = new ArrayList();
//    l.add(new Integer(ObjectClassDefinition.REQUIRED));
//    l.add(new Integer(ObjectClassDefinition.OPTIONAL));
//    ATOMIC_ATTRIBUTE_DEFINITION_FILTERS = Collections.unmodifiableList(l);
//  }

  /* Create newOCD from oldOCD by applying transformer
   * to each AttributeDefinition.
   */
  public static BasicObjectClassDefinition apply(
      AttributeDefinitionTransformer transformer,
      ObjectClassDefinition oldObjectClassDefinition,
      Collection<String> attributesToIgnore) {   
    BasicObjectClassDefinition newOCD =
      MutateParameterUtilities.createNewParameters(oldObjectClassDefinition);
   
    // For each kind of AttributeDefinition filter ..
    for (Iterator<Integer> filterIt = ATOMIC_ATTRIBUTE_DEFINITION_FILTERS.iterator();
        filterIt.hasNext();) {
      int filter = filterIt.next().intValue();
     
      // Grab all matching AttributeDefinitions and transform them.
      AttributeDefinition[] oldAttributeDefintions =
        oldObjectClassDefinition.getAttributeDefinitions(filter);

      for (AttributeDefinition attributeDefinition : oldAttributeDefintions) {
        if (!attributesToIgnore.contains(attributeDefinition.getID())) {
          newOCD.addAttributeDefinition(
            filter, transformer.transform(attributeDefinition));
        }
      }
    }
   
    return newOCD;
  }
 
  // Convenience method for batching transformations.
  public static ObjectClassDefinition transform(
      ObjectClassDefinition objectClassDefinition,
      Collection<DropdownTransformer> transformers,
      Collection<String> attributesToIgnore) {
    ObjectClassDefinition newObjectClassDefinition = objectClassDefinition;
   
    for (Iterator<DropdownTransformer> it = transformers.iterator(); it.hasNext();) {
      DropdownTransformer transformer = it.next();
      newObjectClassDefinition =
        apply(transformer, newObjectClassDefinition, attributesToIgnore);
    }
   
    return newObjectClassDefinition;
  }
}
TOP

Related Classes of org.cishell.utilities.mutateParameter.ObjectClassDefinitionTransformer

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.