Externen Datenspeicher verwenden

In diesem Abschnitt wird CsvDataSourceServlet vorgestellt. CsvDataSourceServlet ist eine Beispielimplementierung, die eine CSV-Datei als externen Datenspeicher verwendet. In diesem Abschnitt finden Sie auch detaillierte Anleitungen zum Ausführen und Testen von CsvDataSourceServlet.

Hinweis: Bevor Sie mit diesem Abschnitt beginnen, müssen Sie den Abschnitt Erste Schritte mit Datenquellen ausführen.

Wir stellen vor: CsvDataSourceServlet

Die Klasse CsvDataSourceServlet befindet sich im Paket examples. Diese Klasse enthält eine Beispielimplementierung, bei der eine CSV-Datei als externer Datenspeicher verwendet wird. CsvDataSourceServlet übernimmt von DataSourceServlet, implementiert generateDataTable() und muss in einem Servlet-Container ausgeführt werden.

Ein CsvDataSourceServlet-Snippet wird unten bereitgestellt. Die Funktion generateDataTable stellt Daten der Bibliothek zur Verfügung. Diese Funktion erstellt eine Datentabellenbeschreibung, definiert die Datentabellenspalten und füllt die Datentabelle mit Daten aus einer CSV-Datei. Die CSV-Datei wird aus einer URL gelesen, die in einer anfragenden Visualisierungsabfrage angegeben ist. Die Bibliothek verarbeitet alle anderen Aktionen, die zum Zurückgeben der Datentabelle an die Abfragevisualisierung erforderlich sind.

/**
 * A demo servlet for serving a simple, constant data table.
 * This servlet extends DataSourceServlet, but does not override the default
 * empty implementation of method getCapabilities(). This servlet therefore ignores the
 * user query (as passed in the 'tq' url parameter), leaving the
 * query engine to apply it to the data table created here.
 *
 * @author Nimrod T.
 */
public class CsvDataSourceServlet extends DataSourceServlet {

  /**
   * Log.
   */
  private static final Log log = LogFactory.getLog(CsvDataSourceServlet.class.getName());

  /**
   * The name of the parameter that contains the url of the CSV to load.
   */
  private static final String URL_PARAM_NAME = "url";

  /**
   * Generates the data table.
   * This servlet assumes a special parameter that contains the CSV URL from which to load
   * the data.
   */
  @Override
  public DataTable generateDataTable(Query query, HttpServletRequest request)
      throws DataSourceException {
    String url = request.getParameter(URL_PARAM_NAME);
    if (StringUtils.isEmpty(url)) {
      log.error("url parameter not provided.");
      throw new DataSourceException(ReasonType.INVALID_REQUEST, "url parameter not provided");
    }

    Reader reader;
    try {
      reader = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
    } catch (MalformedURLException e) {
      log.error("url is malformed: " + url);
      throw new DataSourceException(ReasonType.INVALID_REQUEST, "url is malformed: " + url);
    } catch (IOException e) {
      log.error("Couldn't read from url: " + url, e);
      throw new DataSourceException(ReasonType.INVALID_REQUEST, "Couldn't read from url: " + url);
    }
    DataTable dataTable = null;
    ULocale requestLocale = DataSourceHelper.getLocaleFromRequest(request);
    try {
      // Note: We assume that all the columns in the CSV file are text columns. In cases where the
      // column types are known in advance, this behavior can be overridden by passing a list of
      // ColumnDescription objects specifying the column types. See CsvDataSourceHelper.read() for
      // more details.
      dataTable = CsvDataSourceHelper.read(reader, null, true, requestLocale);
    } catch (IOException e) {
      log.error("Couldn't read from url: " + url, e);
      throw new DataSourceException(ReasonType.INVALID_REQUEST, "Couldn't read from url: " + url);
    }
    return dataTable;
  }
}

CsvDataSourceServlet ausführen und testen

In diesem Abschnitt erfahren Sie, wie Sie CsvDataSourceServlet ausführen und testen.

Wenn Sie CsvDataSourceServlet ausführen und testen möchten, erstellen Sie eine CSV-Datei, aktualisieren Sie Ihre Webanwendung und richten Sie eine Visualisierung ein, mit der die Datenquelle abgefragt wird. Dies wird in den folgenden Abschnitten beschrieben:

CSV-Datei erstellen

Die Datei csv_example.csv befindet sich im Verzeichnis <data_source_library_install>/examples/src/html. Es enthält die folgenden Werte:

Employee,Manager
Roger,John
Robert,John
Jane,Roger
Jack,Jane
Bob,Jane

Kopieren Sie diese Datei in das Verzeichnis <tomcat_home>/webapps/myWebApp, das Sie im Abschnitt Erste Schritte erstellt haben.

Webanwendung in Apache Tomcat aktualisieren

Folgen Sie der Anleitung unten oder passen Sie sie an, um Ihre Webanwendung in Apache Tomcat zu aktualisieren. Die folgende Anleitung gilt speziell für Apache Tomcat auf einem Windows-System:

  1. Die Datei web.xml, die Sie zuvor in das Verzeichnis WEB-INF kopiert haben, enthält bereits die für dieses Beispiel erforderliche Definition und Zuordnung. Die Definition dieser Zeilen lautet:
    <servlet>
      <servlet-name>CSV Example</servlet-name>
      <description>
      CsvDataSourceServlet
      </description>
      <servlet-class>CsvDataSourceServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
      <servlet-name>CSV Example</servlet-name>
      <url-pattern>/csv</url-pattern>
    </servlet-mapping>
    
  2. Starten Sie Tomcat oder starten Sie Tomcat neu, wenn er bereits ausgeführt wird.
     
  3. Klicken Sie auf den folgenden Link: http://localhost:8080/myWebApp/csv?url=http://localhost:8080/myWebApp/csv_example.csv

    Je nach Bildschirmbreite werden 6–7 Textzeilen angezeigt.
    Der Text beginnt mit google.visualization.Query.setResponse
    und endet mit {c:[{v:'Bob'},{v:'Jane'}]}]}});

    Dies ist die Antwort, die die CSV-Datenquelle an eine Visualisierung sendet.

Daten mithilfe einer Visualisierung ansehen

Mit der Datei all_examples.html im Verzeichnis <data_source_library_install>/examples/src/html können Sie eine Visualisierung der Daten aufrufen.

In der Quelle der Datei all_examples.html sehen Sie drei Visualisierungen in der Datei. Die folgenden Snippets reproduzieren die Spezifikation dieser Visualisierungen.

  • Die folgende Zeile gibt das Beispiel csv an, das in diesem Abschnitt behandelt wird:
    query = new google.visualization.Query('csv?url=http://localhost:8080/myWebApp/csv_example.csv');
    Die folgende Zeile gibt eine Visualisierung des Organigramms an:
    var chart = new google.visualization.OrgChart(document.getElementById('csv_div'));
  • Die folgende Zeile gibt die simpleexample im Abschnitt Erste Schritte an:
    var query = new google.visualization.Query('simpleexample?tq=select name,population');
    Die folgende Zeile gibt eine Visualisierung des Kreisdiagramms an:
    var chart = new google.visualization.PieChart(document.getElementById('simple_div'));
  • Die folgende Zeile gibt das Beispiel advanced an, das im Abschnitt Funktionen definieren und Ereignisfluss behandelt wird:
    query = new google.visualization.Query('advanced?tableId=planets&tq=select planet,mass');
    Die folgende Zeile gibt eine Balkendiagrammvisualisierung an:
    var chart = new google.visualization.BarChart(document.getElementById('advanced_div'));

Weitere Informationen zum Angeben eines Diagramms und zum Verwenden der Abfragesprache finden Sie unter Einführung in die Verwendung von Diagrammtools und die Referenz zur Abfragesprache.

Folgen Sie der Anleitung unten, um eine Visualisierung der von CsvDataSourceServlet bereitgestellten Daten zu sehen oder anzupassen.

  1. Kopieren Sie die Datei all_examples.html aus dem Verzeichnis <data_source_library_install>/examples/src/html in das Verzeichnis <tomcat_home>/webapps/myWebApp/.
  2. Klicken Sie auf den folgenden Link: http://localhost:8080/myWebApp/all_examples.html. Daraufhin wird die folgende Visualisierung angezeigt.


Das Beispiel für erweiterte Datenquellen wird unter Funktionen und den Ablauf von Ereignissen definieren erläutert.

Next Steps

Das nächste Beispiel wird im Abschnitt Funktionen und den Ablauf von Ereignissen definieren beschrieben. Alternativ können Sie auch auf die folgenden Links zugreifen: