/**
   * Creates and returns a JSON Node for a JPA Node Entity Used for GET Requests for NodeResource
   *
   * @param nodeEntity
   * @return
   */
  public Node getNodeJSONFromNodeEntity(org.nikhil.webapp.nodeadmin.entity.Node nodeEntity) {
    Node nodeJson = new Node();
    nodeJson.setName(nodeEntity.getName());
    nodeJson.setDescription(nodeEntity.getDescription());
    nodeJson.setIpAddress(nodeEntity.getIpAddress());
    nodeJson.setMaster(nodeEntity.isMaster());
    nodeJson.setUserName(nodeEntity.getUserName());
    nodeJson.setPassword(nodeEntity.getPassword());
    nodeJson.setShutdownTimer(nodeEntity.getShutdownTimer());
    nodeJson.setRestartTimer(nodeEntity.getRestartTimer());
    nodeJson.setStatus(nodeEntity.getStatus());

    for (NodeAndService nodeAndService : nodeEntity.getNodeServices()) {
      Service service = new Service();
      org.nikhil.webapp.nodeadmin.entity.Service serviceToCopyFrom =
          nodeAndService.getCompositePK().getService();
      service.setName(serviceToCopyFrom.getName());
      service.setDescription(serviceToCopyFrom.getDescription());
      service.setRunAlwaysInBackground(serviceToCopyFrom.isRunAlwaysInBackground());
      service.setStartCommand(serviceToCopyFrom.getStartCommand());
      service.setStopCommand(serviceToCopyFrom.getStopCommand());
      service.setStatusWildCard(serviceToCopyFrom.getStatusWildCard());

      // composite info flattened
      service.setAdditionalRunParamsStart(nodeAndService.getAdditionalRunParamsStart());
      service.setAdditionalRunParamsStop(nodeAndService.getAdditionalRunParamsStop());
      service.setStatusWildCardOverride(nodeAndService.getStatusWildCardOverride());
      service.setStatusCommandOverride(nodeAndService.getStatusCommandOverride());
      service.setRundir(nodeAndService.getRundir());

      // TODOne put this one on the composite/join table
      service.setRunning(nodeAndService.isRunning());

      nodeJson.getServices().add(service);
    }

    for (NodeAndCommand nodeAndCommand : nodeEntity.getNodeCommands()) {
      Command command = new Command();
      org.nikhil.webapp.nodeadmin.entity.Command commandToCopyFrom =
          nodeAndCommand.getCompositePK().getCommand();
      command.setName(commandToCopyFrom.getName());
      command.setDescription(commandToCopyFrom.getDescription());
      command.setCommand(commandToCopyFrom.getCommand());

      // composite info flattened
      command.setAdditionalRunParams(nodeAndCommand.getAdditionalRunParams());
      command.setAlwaysRunInBackground(nodeAndCommand.isAlwaysRunInBackground());
      command.setRundir(nodeAndCommand.getRundir());

      nodeJson.getCommands().add(command);
    }

    return nodeJson;
  }