/*
* Copyright (c) 2012 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller.impl.smis;
import javax.cim.*;
/**
* Factory for creating CIMArgument objects
*/
public class CIMArgumentFactory {
public CIMArgument<UnsignedInteger16> uint16(String name, int value) {
return build(name, new UnsignedInteger16(value), CIMDataType.UINT16_T);
}
public CIMArgument<UnsignedInteger16[]> uint16Array(String name, UnsignedInteger16[] value) {
return build(name, value, CIMDataType.UINT16_ARRAY_T);
}
public CIMArgument<UnsignedInteger32[]> uint32Array(String name, UnsignedInteger32[] value) {
return build(name, value, CIMDataType.UINT32_ARRAY_T);
}
public CIMArgument<UnsignedInteger32> uint32(String name, int value) {
return build(name, new UnsignedInteger32(value), CIMDataType.UINT32_T);
}
public CIMArgument<UnsignedInteger64> uint64(String name, String value) {
return build(name, new UnsignedInteger64(value), CIMDataType.UINT64_T);
}
public CIMArgument<UnsignedInteger64> uint64(String name, Long value) {
return uint64(name, value.toString());
}
public CIMArgument<UnsignedInteger64[]> uint64Array(String name, UnsignedInteger64[] value) {
return build(name, value, CIMDataType.UINT64_ARRAY_T);
}
public CIMArgument<String> string(String name, String value) {
return build(name, value, CIMDataType.STRING_T);
}
public CIMArgument<String[]> stringArray(String name, String[] value) {
return build(name, value, CIMDataType.STRING_ARRAY_T);
}
public CIMArgument<CIMObjectPath> reference(String name, CIMObjectPath path) {
return build(name, path, CIMDataType.getDataType(path));
}
public CIMArgument<CIMObjectPath[]> referenceArray(String name, CIMObjectPath[] path) {
return build(name, path, CIMDataType.getDataType(path));
}
public CIMArgument<Boolean> bool(String name, Boolean value) {
return build(name, value, CIMDataType.BOOLEAN_T);
}
public CIMArgument<Boolean[]> boolArray(String name, Boolean[] value) {
return build(name, value, CIMDataType.BOOLEAN_ARRAY_T);
}
public CIMArgument<Object> object(String name, Object value) {
return build(name, value, CIMDataType.OBJECT_T);
}
/**
* Build a CIMArgument object from name and value arguments.
*
* @param name
* @param value
* @param dataType
* @param <T>
* @return
*/
private <T> CIMArgument<T> build(String name, T value, CIMDataType dataType) {
CIMArgument<T> arg;
try {
arg = new CIMArgument<>(name, dataType, value);
} catch (Exception e) {
throw new IllegalStateException("Problem getting input arguments: ", e);
}
return arg;
}
}