public String getActionPossibleFromInputs()
    {
	// There are four possible automation cases:
	//
	// 1. User wants to train a network automatically
	// 2. User wants to classify data.
	// 3. User wants to tests the classifier
	//
	// Each of these cases requires slightly different inputs, so this method
	// must ascertain if the application has been provided with enough information 
	// to perform these tasks.
	//
	// We will try to derive which action the user wants to take by inferring
	// from the input available the users intention.

	// Case 1: Training the network automatically.
	//
	// Requires: Training set, Validation set, a desired classification accuracy, 
	//           and path to save the constructed network to.
	// Optional: Type of classifier to use

	if(!StringOps.isAStringsEmpty(this.trainingSetPath,this.validationSetPath,this.saveNeuralNetworkToPath) && this.tests == -1)
	{
	    if(this.desiredAccuracy > -1)
		return Constants.AUTOMATED_TRAINING;
	}

	// Case 2: Data classification.
	//
	// Requires: Path to a previously saved neural network, the path to the data to be classified, 
	//           and the path to the file to output results to.
	// Optional: Type of clustering technique to use.

	if(!StringOps.isAStringsEmpty(this.pathToSavedNetwork,this.classificationSetPath,this.outputFile) |
		( !StringOps.isAStringsEmpty(this.pathToSavedNetwork,this.outputFile) && this.extraParams.size() > 0))
	{
	    return Constants.AUTOMATED_CLASSIFICATION;
	}

	// Case 3: Test the accuracy of the neural network.
	//
	// Requires: Training set, Validation set, Type of classifier to use, 
	//           the number of tests to run
	// Optional: Path to output file.
	if(!StringOps.isAStringsEmpty(this.trainingSetPath,this.validationSetPath))
	{
	    if(this.tests > -1 && this.classifier > -1)
		return Constants.AUTOMATED_TESTING;
	}

	// Else no actions possible
	return Constants.NO_ACTION;
    }