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
- Webanwendung in Apache Tomcat aktualisieren
- Daten mithilfe einer Visualisierung ansehen
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:
- Die Datei
web.xml
, die Sie zuvor in das VerzeichnisWEB-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>
- Starten Sie Tomcat oder starten Sie Tomcat neu, wenn er bereits ausgeführt wird.
- 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 mitgoogle.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.
- Kopieren Sie die Datei
all_examples.html
aus dem Verzeichnis<data_source_library_install>/examples/src/html
in das Verzeichnis<tomcat_home>/webapps/myWebApp/
. - 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:
- Eine Einführung in die am häufigsten verwendeten Klassen der Bibliothek finden Sie unter Schlüsselklassen.
- Anstatt die Datenquelle von
DataSourceServlet
zu übernehmen, können Sie sie von einer anderen Klasse übernehmen lassen. Weitere Informationen finden Sie unter Eigenes Servlet verwenden. - Informationen zum Übertragen von Parametern aus einer Anwendung an eine Datenquelle finden Sie unter Parameter an
DataTableGenerator.generateDataTable
übergeben.