package org.knime.knip.features.sets; import net.imagej.ops.image.cooccurrenceMatrix.MatrixOrientation; import net.imagej.ops.image.cooccurrenceMatrix.MatrixOrientation2D; import net.imagej.ops.image.cooccurrenceMatrix.MatrixOrientation3D; import org.scijava.convert.AbstractConverter; import org.scijava.convert.ConversionRequest; import org.scijava.convert.Converter; import org.scijava.plugin.Plugin; @Plugin(type = Converter.class) public class StringToMatrixOrientation extends AbstractConverter<String, MatrixOrientation> { @SuppressWarnings("unchecked") @Override public <T> T convert(Object src, Class<T> dest) { if (((String) src).contains("2D")) { return (T) MatrixOrientation2D.valueOf(((String) src).replace(" 2D", "")); } // else is 3D return (T) MatrixOrientation3D.valueOf(((String) src).replace(" 3D", "")); } @Override public Class<MatrixOrientation> getOutputType() { return MatrixOrientation.class; } @Override public Class<String> getInputType() { return String.class; } @Override public boolean canConvert(final ConversionRequest request) { return canConvert(request.sourceObject(), request.destClass()); } @Override public boolean canConvert(final Object src, Class<?> dest) { if (!(src instanceof String) || !(((String) src).contains("2D") || ((String) src).contains("3D"))) { return false; } final String toTest = (String) src; if (toTest.contains("2D")) { final String tmp = ((String) src).replace(" 2D", ""); for (MatrixOrientation2D matrix : MatrixOrientation2D.values()) { if (matrix.toString().equals(tmp)) { return true; } } } else if (toTest.contains("3D")) { final String tmp = ((String) src).replace(" 3D", ""); for (MatrixOrientation3D matrix : MatrixOrientation3D.values()) { if (matrix.toString().equals(tmp)) { return true; } } } return false; } }