class ModelManager2(ModelManager):
    """Interface that queries information on the models configured in the system."""
    def __init__(self, gateway_ip_address=None):
        super(self.__class__, self).__init__()
        if (gateway_ip_address is None):
            self.modmgr = Factory().GetIModelManager2("")
        else:
            self.modmgr = Factory().GetIModelManager2(gateway_ip_address)

    def GetModelList(self, target):
        """Returns a list of models on the target you specify."""
        data = self.modmgr.GetModelList(target, None)
        _RaiseException_(data[0])
        models = []
        for i in data[1]:
            models.append(i)
        return models

    def GetParametersList(self, target):
        """Returns a list of all parameters in the target you specify."""
        data = self.modmgr.GetParametersList(target, None)
        _RaiseException_(data[0])
        params = []
        for i in data[1]:
            params.append(i)
        return params

    def GetSingleParameterValue(self, target, name):
        """Acquires the value of the parameter you specify."""
        data = self.modmgr.GetSingleParameterValue(target, name,
                                                   System.Double(0))
        _RaiseException_(data[0])
        return data[1]

    def GetMultipleParameterValues(self, target, names):
        """Acquires the value(s) of the parameters you specify."""
        tupleNames = _ConvertListParamToTuple_(names)
        data = self.modmgr.GetMultipleParameterValues(target, tupleNames, None)
        _RaiseException_(data[0])
        values = []
        for i in data[1]:
            values.append(i)
        return values

    def GetParameterVectorValues(self, target, name):
        """Acquires the vector values of the parameter you specify."""
        data = self.modmgr.GetParameterVectorValues(target, name,
                                                    System.UInt32(0),
                                                    System.UInt32(0), None)
        _RaiseException_(data[0])
        return _Convert1DARRVALTOMATRIX_(data[1], data[2], data[3])

    def SetSingleParameterValue(self, target, name, value):
        """Sets the value of the parameter you specify."""
        _RaiseException_(
            self.modmgr.SetSingleParameterValue(target, name,
                                                System.Double(value)))

    def SetMultipleParameterValues(self, target, names, values):
        """Sets the value of the parameter(s) you specify."""
        tupleNames = _ConvertListParamToTuple_(names)
        tupleValues = _ConvertListParamToTuple_(values)
        _RaiseException_(
            self.modmgr.SetMultipleParameterValues(target, tupleNames,
                                                   tupleValues))

    def SetParameterVectorValues(self, target, name, values):
        """Set a parameter vector values.

        Values are expected to be a matrix type.
        """
        tupleArray = _ConvertMATRIXTO1DARRVAL_(values)
        _RaiseException_(
            self.modmgr.SetParameterVectorValues(target, name, tupleArray))

    def SetParameterValues(self, target, names, matrixArr):
        """
        Sets the vector value of the parameter(s) you specify.

        The value you specify in `matrixArr` must be a matrix data type.
        Sample usage ModelManager2.SetParameterValues("target1",["1By3Param","2By3Param"],[[[1,2,3]],[[1,2,3],[4,5,6]]])
        """
        tupleNames = _ConvertListParamToTuple_(names)
        dataArrayArrays = _ConvertMATRIXARRToDataArray_(matrixArr)
        _RaiseException_(
            self.modmgr.SetParameterValues(target, tupleNames,
                                           dataArrayArrays))

    def UpdateParametersFromFile(self, target, parameterfiles):
        """Update a set of parameters specified in the parameter files."""
        tupleFiles = _ConvertListParamToTuple_(parameterfiles)
        _RaiseException_(
            self.modmgr.UpdateParametersFromFile(target, tupleFiles))
class ModelManager:
    """Interface that queries information on the models configured in the system."""
    def __init__(self):
        self.modmgr = Factory().GetIModelManager()

    def GetModelList(self):
        """Returns a list of all models configured in the system."""
        data = self.modmgr.GetModelList(None)
        _RaiseException_(data[0])
        models = []
        for i in data[1]:
            models.append(i)
        return models

    def GetParametersList(self):
        """Returns a list of all parameters in the system."""
        data = self.modmgr.GetParametersList(None)
        _RaiseException_(data[0])
        params = []
        for i in data[1]:
            params.append(i)
        return params

    def GetSingleParameterValue(self, name):
        """Acquires the value of the parameter you specify."""
        data = self.modmgr.GetSingleParameterValue(name, System.Double(0))
        _RaiseException_(data[0])
        return data[1]

    def GetMultipleParameterValues(self, names):
        """Acquires the value(s) of the parameters you specify."""
        tupleParamNames = _ConvertListParamToTuple_(names)
        data = self.modmgr.GetMultipleParameterValues(tupleParamNames, None)
        _RaiseException_(data[0])
        values = []
        for i in data[1]:
            values.append(i)
        return values

    def GetParameterVectorValues(self, name):
        """Acquires the vector values of the parameter you specify."""
        data = self.modmgr.GetParameterVectorValues(name, System.UInt32(0),
                                                    System.UInt32(0), None)
        _RaiseException_(data[0])
        return _Convert1DARRVALTOMATRIX_(data[1], data[2], data[3])

    def SetSingleParameterValue(self, name, value):
        """Sets the value of the parameter you specify."""
        _RaiseException_(
            self.modmgr.SetSingleParameterValue(name, System.Double(value)))

    def SetMultipleParameterValues(self, names, values):
        """Sets the value(s) of the parameters you specify."""
        tupleParamNames = _ConvertListParamToTuple_(names)
        tupleParamValues = _ConvertListParamToTuple_(values)
        _RaiseException_(
            self.modmgr.SetMultipleParameterValues(tupleParamNames,
                                                   tupleParamValues))

    def SetParameterVectorValues(self, name, values):
        """
        Sets a vector value for a parameter.

        The value you specify in `value` must be a matrix data type.
        """
        tupleArray = _ConvertMATRIXTO1DARRVAL_(values)
        _RaiseException_(self.modmgr.SetParameterVectorValues(
            name, tupleArray))