Package hello.controller

Source Code of hello.controller.MysqlController

package hello.controller;

import hello.domain.World;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

import javax.sql.DataSource;

import com.strategicgains.restexpress.Request;
import com.strategicgains.restexpress.Response;

public class MysqlController
{
  // Database details.
  private static final String DB_QUERY = "SELECT * FROM World WHERE id = ?";
  private static final int DB_ROWS = 10000;

  private DataSource mysqlDataSource;

  public MysqlController(DataSource dataSource)
  {
    super();
    this.mysqlDataSource = dataSource;
  }

  public Object read(Request request, Response response)
  throws SQLException
  {
    final DataSource source = mysqlDataSource;

    // Get the count of queries to run.
    int count = 1;
    try
    {
      count = Integer.parseInt(request.getHeader("queries"));
   
      // Bounds check.
      if (count > 500)
      {
        count = 500;
      }
      if (count < 1)
      {
        count = 1;
      }
    }
    catch(NumberFormatException nfexc)
    {
      // do nothing
    }

    // Fetch some rows from the database.
    final World[] worlds = new World[count];
    final Random random = ThreadLocalRandom.current();

    Connection conn = source.getConnection();
    PreparedStatement statement = conn.prepareStatement(DB_QUERY, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

    // Run the query the number of times requested.
    for (int i = 0; i < count; i++)
    {
      final Long id = (long) (random.nextInt(DB_ROWS) + 1);
      statement.setLong(1, id);

      try (ResultSet results = statement.executeQuery())
      {
        if (results.next())
        {
          worlds[i] = new World(id, results.getInt("randomNumber"));
        }
      }
    }

    if (count == 1)
    {
      return worlds[0];
    }

    return worlds;
  }
}
TOP

Related Classes of hello.controller.MysqlController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.