Package frc.robot.subsystems.swervedrive.swerve

## Class SwerveParser

- java.lang.Object
- - frc.robot.subsystems.swervedrive.swerve.SwerveParser

    public class SwerveParser
    extends java.lang.Object

Swerve Drive JSON parser.

### Constructor Summary

Constructors
`SwerveParser()`

### Method Summary

All Methods Static Methods Concrete Methods
`private static void` `checkDirectory​(java.io.File directory)` Check directory structure.
`private static void` `checkMain​(com.fasterxml.jackson.databind.JsonNode mainJson)` Check the main json for correct attributes.
`private static void` `checkModule​(com.fasterxml.jackson.databind.JsonNode moduleJson)` Check module JSON config for existing values.
`private static java.lang.Object` `createEncoder​(com.fasterxml.jackson.databind.JsonNode encoderConfig)` Create SwerveEncoder from JSON config.
`private static com.ctre.phoenix.sensors.WPI_Pigeon2` `createGyro​(com.fasterxml.jackson.databind.JsonNode gyroConfig)` Create the gyro object based off the configuration.
`private static SwerveModule<?,​?,​?>` `createModule​(com.fasterxml.jackson.databind.JsonNode mainJson, java.io.File moduleFile, SwerveModule.SwerveModuleLocation moduleLocation)` Create SwerveModule from JSON configuration file.
`private static edu.wpi.first.wpilibj.motorcontrol.MotorController` `createMotor​(com.fasterxml.jackson.databind.JsonNode motorConfig)` Create the motor controller based off the config.
`static SwerveDrive` `fromJSONDirectory​(java.io.File directory)` Create SwerveDrive from JSON configuration directory.
`private static com.fasterxml.jackson.databind.JsonNode` `openJson​(java.io.File file)` Open JSON file.
`private static void` `setModulePIDF​(SwerveMotor motor, com.fasterxml.jackson.databind.JsonNode jsonPIDF)` Set the PIDF for the module if the given JSON has the paramters.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### SwerveParser

    public SwerveParser()

### Method Detail

#### openJson

    private static com.fasterxml.jackson.databind.JsonNode openJson​(java.io.File file)

Open JSON file.

Parameters:
  `file` - JSON File to open.
Returns:
  JsonNode of file.

#### checkDirectory

    private static void checkDirectory​(java.io.File directory)

Check directory structure.

Parameters:
  `directory` - JSON Configuration Directory

#### createMotor

    private static edu.wpi.first.wpilibj.motorcontrol.MotorController createMotor​(com.fasterxml.jackson.databind.JsonNode motorConfig)

Create the motor controller based off the config.

Parameters:
  `motorConfig` - JSON Motor config object.
Returns:
  Motor Controller

#### createEncoder

    private static java.lang.Object createEncoder​(com.fasterxml.jackson.databind.JsonNode encoderConfig)

Create SwerveEncoder from JSON config.

Parameters:
  `encoderConfig` - Swerve Encoder JSON config.
Returns:
  SwerveEncoder

#### createGyro

    private static com.ctre.phoenix.sensors.WPI_Pigeon2 createGyro​(com.fasterxml.jackson.databind.JsonNode gyroConfig)

Create the gyro object based off the configuration.

Parameters:
  `gyroConfig` - Gyro configuration.
Returns:
  Gyro object.

#### checkModule

    private static void checkModule​(com.fasterxml.jackson.databind.JsonNode moduleJson)

Check module JSON config for existing values.

Parameters:
  `moduleJson` - Module JSON object.

#### checkMain

    private static void checkMain​(com.fasterxml.jackson.databind.JsonNode mainJson)

Check the main json for correct attributes.

Parameters:
  `mainJson` - Main JSON.

#### createModule

    private static SwerveModule<?,​?,​?> createModule​(com.fasterxml.jackson.databind.JsonNode mainJson,
                                                                java.io.File moduleFile,
                                                                SwerveModule.SwerveModuleLocation moduleLocation)

Create SwerveModule from JSON configuration file.

Parameters:
  `mainJson` - Main JSON to pull from.
  `moduleFile` - Module specific JSON data to pull from.
  `moduleLocation` - Swerve module location that is being created.
Returns:
  SwerveModule

#### setModulePIDF

    private static void setModulePIDF​(SwerveMotor motor,
                                      com.fasterxml.jackson.databind.JsonNode jsonPIDF)

Set the PIDF for the module if the given JSON has the paramters.

Parameters:
  `motor` - Motor to configure.
  `jsonPIDF` - JSON ndoe with values.

#### fromJSONDirectory

    public static SwerveDrive fromJSONDirectory​(java.io.File directory)

Create SwerveDrive from JSON configuration directory.

Parameters:
  `directory` - JSON Configuration directory.
Returns:
  SwerveDrive