Bagian ini memperkenalkan CsvDataSourceServlet
. CsvDataSourceServlet
adalah contoh penerapan yang menggunakan file CSV sebagai penyimpanan data
eksternal. Bagian ini juga memberikan petunjuk langkah demi langkah tentang cara
menjalankan dan menguji CsvDataSourceServlet
.
Catatan: Anda harus menyelesaikan bagian Memulai Sumber Data sebelum memulai bagian ini.
Memperkenalkan CsvDataSourceServlet
Class CsvDataSourceServlet
terletak dalam paket
examples
. Class ini memberikan contoh implementasi
yang menggunakan file CSV sebagai penyimpanan data eksternal. CsvDataSourceServlet
mewarisi
dari DataSourceServlet
,
mengimplementasikan generateDataTable()
, dan harus dijalankan dalam container
servlet.
Cuplikan CsvDataSourceServlet
disediakan di bawah. Fungsi generateDataTable
mengekspos data ke library. Fungsi ini membuat deskripsi tabel data, menentukan kolom tabel data, dan mengisi tabel data dengan data yang diperoleh dari file CSV. File CSV dibaca dari
URL yang ditentukan dalam kueri visualisasi yang meminta. Library menangani
semua tindakan lain yang diperlukan untuk menampilkan tabel data ke visualisasi kueri.
/** * 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; } }
Menjalankan dan menguji CsvDataSourceServlet
Bagian ini memberikan petunjuk tentang cara menjalankan dan menguji CsvDataSourceServlet
.
Untuk menjalankan dan menguji CsvDataSourceServlet
, buat file CSV,
update aplikasi web Anda, dan siapkan visualisasi yang mengkueri
sumber data, seperti yang dijelaskan di bagian berikut:
- Membuat File CSV
- Memperbarui Aplikasi Web Anda di Apache Tomcat
- Menggunakan Visualisasi untuk Melihat Data
Membuat File CSV
File csv_example.csv
disediakan di direktori <data_source_library_install>/examples/src/html
.
Isinya adalah sebagai berikut:
Employee,Manager Roger,John Robert,John Jane,Roger Jack,Jane Bob,Jane
Salin file ini ke direktori <tomcat_home>/webapps/myWebApp
yang Anda buat di bagian Memulai.
Memperbarui Aplikasi Web Anda di Apache Tomcat
Ikuti atau sesuaikan petunjuk di bawah untuk mengupdate aplikasi web Anda di Apache Tomcat. Petunjuk ini khusus untuk Apache Tomcat di sistem Windows:
- File
web.xml
yang sebelumnya Anda salin ke direktoriWEB-INF
sudah berisi definisi dan pemetaan yang diperlukan untuk contoh ini. Baris yang menjelaskan hal ini adalah:
<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>
- Mulai Tomcat, atau mulai ulang Tomcat jika sudah berjalan.
- Klik link berikut:
http://localhost:8080/myWebApp/csv?url=http://localhost:8080/myWebApp/csv_example.csv
Layar menampilkan 6-7 baris teks, bergantung pada lebar layar Anda.
Teks dimulai dengangoogle.visualization.Query.setResponse
dan diakhiri dengan{c:[{v:'Bob'},{v:'Jane'}]}]}});
Ini adalah respons yang dikirim sumber data CSV contoh ke visualisasi.
Menggunakan Visualisasi untuk Melihat Data
File all_examples.html
dalam direktori <data_source_library_install>/examples/src/html
dapat digunakan untuk melihat visualisasi data.
Jika melihat sumber file all_examples.html
,
Anda akan melihat ada tiga visualisasi yang disertakan dalam file tersebut. Cuplikan berikut mereproduksi spesifikasi visualisasi ini.
- Baris berikut menetapkan contoh
csv
yang dibahas di bagian ini:
query = new google.visualization.Query('csv?url=http://localhost:8080/myWebApp/csv_example.csv');
Baris berikut menentukan visualisasi diagram organisasi:var chart = new google.visualization.OrgChart(document.getElementById('csv_div'));
- Baris berikut menentukan
simpleexample
yang dibahas di bagian Memulai:
var query = new google.visualization.Query('simpleexample?tq=select name,population');
Baris berikut menentukan visualisasi diagram lingkaran:var chart = new google.visualization.PieChart(document.getElementById('simple_div'));
- Baris berikut menentukan contoh
advanced
yang dibahas di bagian Menentukan Kemampuan dan Alur Peristiwa:
query = new google.visualization.Query('advanced?tableId=planets&tq=select planet,mass');
Baris berikut menentukan visualisasi diagram batang:var chart = new google.visualization.BarChart(document.getElementById('advanced_div'));
Untuk informasi selengkapnya tentang cara menentukan diagram dan menggunakan bahasa kueri, lihat Pengantar Menggunakan Alat Diagram dan Referensi Bahasa Kueri.
Ikuti atau sesuaikan petunjuk di bawah untuk melihat visualisasi data yang disalurkan oleh CsvDataSourceServlet
:
- Salin file
all_examples.html
dari direktori<data_source_library_install>/examples/src/html
ke direktori<tomcat_home>/webapps/myWebApp/
. - Klik link berikut: http://localhost:8080/myWebApp/all_examples.html, Anda akan melihat visualisasi berikut.
Contoh Sumber Data Lanjutan dibahas dalam Menentukan Kemampuan dan Alur Peristiwa.
Langkah Berikutnya
Contoh berikutnya dijelaskan di bagian Kemampuan Definisi dan Alur Peristiwa. Atau, jelajahi link berikut:
- Untuk pengantar tentang class library yang paling sering digunakan, lihat Class Kunci.
- Anda dapat memiliki sumber data yang diwarisi dari class lain tanpa perlu mewarisi sumber data dari
DataSourceServlet
. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Layanan Anda Sendiri. - Untuk mempelajari cara meneruskan parameter dari aplikasi ke sumber data, lihat Meneruskan Parameter ke
DataTableGenerator.generateDataTable
.