|
From: <jrb...@us...> - 2009-07-24 17:44:44
|
Revision: 896
http://cishell.svn.sourceforge.net/cishell/?rev=896&view=rev
Author: jrbibers
Date: 2009-07-24 17:44:30 +0000 (Fri, 24 Jul 2009)
Log Message:
-----------
Added ParameterMutator utilities for transforming ObjectClassDefinitions and AttributeDefinitions. See MutateParameterUtilities.mutateToDropdown() for an example usage.
Added Paths:
-----------
trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/
trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/AttributeDefinitionTransformer.java
trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/DropdownTransformer.java
trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/NullDropdownTransformer.java
trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/ObjectClassDefinitionTransformer.java
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/AttributeDefinitionTransformer.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/AttributeDefinitionTransformer.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/AttributeDefinitionTransformer.java 2009-07-24 17:44:30 UTC (rev 896)
@@ -0,0 +1,19 @@
+package org.cishell.utilities.mutateParameter;
+
+import org.osgi.service.metatype.AttributeDefinition;
+
+/* There would be one implementation of this interface for each useful
+ * constructor of BasicAttributeDefinition, where the transform is defined as in
+ * DropdownTransformer.
+ */
+public interface AttributeDefinitionTransformer {
+ public boolean shouldTransform(AttributeDefinition ad);
+ public AttributeDefinition transform(AttributeDefinition oldAD);
+ public String transformID(String oldID);
+ public String transformName(String oldName);
+ public String transformDescription(String oldDescription);
+ public int transformType(int oldType);
+}
+
+
+
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/DropdownTransformer.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/DropdownTransformer.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/DropdownTransformer.java 2009-07-24 17:44:30 UTC (rev 896)
@@ -0,0 +1,27 @@
+package org.cishell.utilities.mutateParameter;
+
+import org.cishell.reference.service.metatype.BasicAttributeDefinition;
+import org.osgi.service.metatype.AttributeDefinition;
+
+public abstract class DropdownTransformer
+ implements AttributeDefinitionTransformer {
+ public AttributeDefinition transform(AttributeDefinition oldAD) {
+ if (shouldTransform(oldAD)) {
+ return
+ new BasicAttributeDefinition(
+ transformID(oldAD.getID()),
+ transformName(oldAD.getName()),
+ transformDescription(oldAD.getDescription()),
+ transformType(oldAD.getType()),
+ transformOptionLabels(oldAD.getOptionLabels()),
+ transformOptionValues(oldAD.getOptionValues()));
+ }
+ else {
+ return oldAD;
+ }
+ }
+
+ public abstract String[] transformOptionLabels(String[] oldOptionLabels);
+ public abstract String[] transformOptionValues(String[] oldOptionValues);
+}
+
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/NullDropdownTransformer.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/NullDropdownTransformer.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/NullDropdownTransformer.java 2009-07-24 17:44:30 UTC (rev 896)
@@ -0,0 +1,40 @@
+package org.cishell.utilities.mutateParameter;
+
+import org.osgi.service.metatype.AttributeDefinition;
+
+/* A dropdown-forming AttributeDefinition transformer which by default
+ * performs no transformation.
+ * This is a convenient access to DropdownTransformer where you may override
+ * methods to transform only the arguments that you wish to modify.
+ * The typical case would be extending shouldTransform (think of as a filter),
+ * transformOptionLabels, and transformOptionValues.
+ */
+public abstract class NullDropdownTransformer extends DropdownTransformer {
+ public boolean shouldTransform(AttributeDefinition ad) {
+ return false;
+ }
+
+ public String transformID(String oldID) {
+ return oldID;
+ }
+
+ public String transformName(String oldName) {
+ return oldName;
+ }
+
+ public String transformDescription(String oldDescription) {
+ return oldDescription;
+ }
+
+ public int transformType(int oldType) {
+ return oldType;
+ }
+
+ public String[] transformOptionLabels(String[] oldOptionLabels) {
+ return oldOptionLabels;
+ }
+
+ public String[] transformOptionValues(String[] oldOptionValues) {
+ return oldOptionValues;
+ }
+}
\ No newline at end of file
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/ObjectClassDefinitionTransformer.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/ObjectClassDefinitionTransformer.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/mutateParameter/ObjectClassDefinitionTransformer.java 2009-07-24 17:44:30 UTC (rev 896)
@@ -0,0 +1,51 @@
+package org.cishell.utilities.mutateParameter;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.cishell.reference.service.metatype.BasicObjectClassDefinition;
+import org.cishell.utilities.MutateParameterUtilities;
+import org.osgi.service.metatype.AttributeDefinition;
+import org.osgi.service.metatype.ObjectClassDefinition;
+
+public class ObjectClassDefinitionTransformer {
+ private static final int OUTGOING_ATTRIBUTES_FILTER =
+ ObjectClassDefinition.REQUIRED;
+ private static final int INCOMING_ATTRIBUTES_FILTER =
+ ObjectClassDefinition.ALL;
+
+ /* Create newOCD from oldOCD by applying transformer
+ * to each AttributeDefinition.
+ */
+ public static BasicObjectClassDefinition apply(
+ AttributeDefinitionTransformer transformer,
+ ObjectClassDefinition oldOCD) {
+ BasicObjectClassDefinition newOCD =
+ MutateParameterUtilities.createNewParameters(oldOCD);
+
+ AttributeDefinition[] oldADs =
+ oldOCD.getAttributeDefinitions(INCOMING_ATTRIBUTES_FILTER);
+ for(int ii = 0; ii < oldADs.length; ii++) {
+ newOCD.addAttributeDefinition(OUTGOING_ATTRIBUTES_FILTER,
+ transformer.transform(oldADs[ii]));
+ }
+
+ return newOCD;
+ }
+
+ /* Convenience method for batching transformations.
+ * TODO Untested
+ */
+ public static BasicObjectClassDefinition transform(
+ BasicObjectClassDefinition oldOCD, List transformers) {
+ BasicObjectClassDefinition newOCD = oldOCD;
+
+ for ( Iterator it = transformers.iterator(); it.hasNext(); ) {
+ AttributeDefinitionTransformer transformer =
+ (AttributeDefinitionTransformer) it.next();
+ newOCD = apply(transformer, newOCD);
+ }
+
+ return newOCD;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|