W tej sekcji opisujemy CsvDataSourceServlet
. CsvDataSourceServlet
to przykład implementacji, która używa pliku CSV jako zewnętrznego magazynu danych. W tej sekcji znajdziesz także szczegółowe instrukcje uruchamiania i testowania środowiska CsvDataSourceServlet
.
Uwaga: przed rozpoczęciem tej sekcji musisz wypełnić sekcję Pierwsze kroki ze źródłami danych.
Przedstawiamy CsvDataSourceServlet
Klasa CsvDataSourceServlet
znajduje się w pakiecie examples
. Ta klasa zawiera przykładową implementację, która wykorzystuje plik CSV jako zewnętrzny magazyn danych. Ustawienie CsvDataSourceServlet
dziedziczy z kontenera DataSourceServlet
, implementuje metodę generateDataTable()
i musi być uruchamiane w kontenerze serwletu.
Fragment kodu CsvDataSourceServlet
znajdziesz poniżej. Funkcja generateDataTable
udostępnia dane w bibliotece. Ta funkcja tworzy opis tabeli danych, definiuje kolumny tabeli danych i uzupełnia tabelę danych danymi pochodzącymi z pliku CSV. Plik CSV jest odczytywany z adresu URL określonego w żądaniu wizualizacji. Biblioteka obsługuje wszystkie inne działania niezbędne do przywrócenia tabeli danych do wizualizacji zapytań.
/** * 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; } }
Uruchamianie i testowanie CsvDataSourceServlet
W tej sekcji znajdziesz instrukcje dotyczące uruchamiania i testowania środowiska CsvDataSourceServlet
.
Aby uruchomić i przetestować CsvDataSourceServlet
, utwórz plik CSV, zaktualizuj aplikację internetową i skonfiguruj wizualizację dla źródła danych w sposób opisany w poniższych sekcjach:
Tworzenie pliku CSV
Plik csv_example.csv
znajduje się w katalogu <data_source_library_install>/examples/src/html
.
Tabela zawiera te wartości:
Employee,Manager Roger,John Robert,John Jane,Roger Jack,Jane Bob,Jane
Skopiuj ten plik do katalogu <tomcat_home>/webapps/myWebApp
utworzonego w sekcji Pierwsze kroki.
Aktualizowanie aplikacji internetowej w Apache Tomcat
Aby zaktualizować aplikację internetową na serwerze Apache Tomcat, wykonaj lub dostosuj podane niżej instrukcje. Te instrukcje dotyczą Apache Tomcat w systemie Windows:
- Plik
web.xml
skopiowany wcześniej do kataloguWEB-INF
zawiera już definicję i mapowanie wymagane w tym przykładzie. Wiersze, które to definiują:
<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>
- Uruchom program Tomcat lub uruchom ponownie Tomcata, jeśli jest już uruchomiony.
- Kliknij ten link:
http://localhost:8080/myWebApp/csv?url=http://localhost:8080/myWebApp/csv_example.csv
Na ekranie wyświetli się 6–7 wierszy tekstu.
Tekst zaczyna się odgoogle.visualization.Query.setResponse
i kończy na{c:[{v:'Bob'},{v:'Jane'}]}]}});
To jest odpowiedź, którą przykładowe źródło danych CSV wysyła na wizualizację.
Wizualizacja do wyświetlania danych
Plik all_examples.html
w katalogu <data_source_library_install>/examples/src/html
może służyć do wyświetlania wizualizacji danych.
Jeśli wyświetlasz źródło pliku all_examples.html
, zobaczysz w nim 3 wizualizacje. Podane niżej fragmenty kodu odzwierciedlają specyfikację wizualizacji.
- Wiersz
csv
przedstawia przykład w tej sekcji:
query = new google.visualization.Query('csv?url=http://localhost:8080/myWebApp/csv_example.csv');
Poniższy wiersz określa wizualizację wykresu organizacji:var chart = new google.visualization.OrgChart(document.getElementById('csv_div'));
- Ten wiersz określa
simpleexample
w sekcji Pierwsze kroki:
var query = new google.visualization.Query('simpleexample?tq=select name,population');
Poniższy wiersz określa wizualizację wykresu kołowego:var chart = new google.visualization.PieChart(document.getElementById('simple_div'));
- Ten wiersz określa przykład właściwości
advanced
:
Więcej informacji o sposobie określania wykresu i korzystaniu z języka zapytania znajdziesz w artykułach Wprowadzenie do używania wykresów i Informacje o języku zapytań.
Aby wyświetlić wizualizację danych wyświetlanych przez CsvDataSourceServlet
(lub dostosować się do poniższych instrukcji):
- Skopiuj plik
all_examples.html
z katalogu<data_source_library_install>/examples/src/html
do katalogu<tomcat_home>/webapps/myWebApp/
. - Kliknij ten link: http://localhost:8080/myWebApp/all_examples.html. Powinna wyświetlić się ta wizualizacja.
Przykład zaawansowanego źródła danych omawiamy w sekcji Definiowanie możliwości i przepływu zdarzeń.
Następne kroki
Następny przykład znajdziesz w sekcji Definiowanie możliwości i przepływu zdarzeń. Możesz też kliknąć te linki:
- Wprowadzenie do najczęściej używanych zajęć w bibliotece znajdziesz w artykule Najważniejsze zajęcia.
- Jeśli nie chcesz, aby źródło danych było dziedziczone z grupy
DataSourceServlet
, możesz je dziedziczyć z innej klasy. Więcej informacji znajdziesz w artykule Korzystanie z własnego serwletu. - Aby dowiedzieć się, jak przekazywać parametry z aplikacji do źródła danych, zapoznaj się z artykułem Przekazywanie parametrów do
DataTableGenerator.generateDataTable
.