Esta seção apresenta CsvDataSourceServlet
. CsvDataSourceServlet
é um exemplo de implementação que usa um arquivo CSV como um armazenamento de dados externo. Nesta seção, também fornecemos instruções detalhadas sobre como
executar e testar CsvDataSourceServlet
.
Observação: conclua a seção Primeiros passos com as fontes de dados antes de iniciar esta seção.
Apresentação do CsvDataSourceServlet
A classe CsvDataSourceServlet
está localizada no pacote
examples
. Essa classe apresenta um exemplo de implementação que usa um arquivo CSV como um armazenamento de dados externo. CsvDataSourceServlet
herda de DataSourceServlet
, implementa generateDataTable()
e precisa ser executado em um contêiner de servlet.
Veja abaixo um snippet de CsvDataSourceServlet
. A função generateDataTable
expõe dados à biblioteca. Essa função cria uma descrição da tabela de dados, define as colunas da tabela de dados e preenche a tabela com dados obtidos de um arquivo CSV. O arquivo CSV é lido de um URL especificado em uma consulta de visualização solicitante. A biblioteca processa
todas as outras ações necessárias para retornar a tabela de dados para a visualização de consulta.
/** * 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; } }
Como executar e testar CsvDataSourceServlet
Esta seção fornece instruções sobre como executar e testar o CsvDataSourceServlet
.
Para executar e testar CsvDataSourceServlet
, crie um arquivo CSV,
atualize seu aplicativo da Web e configure uma visualização que consulte a
fonte de dados, conforme descrito nas seções a seguir:
- Como criar um arquivo CSV
- Como atualizar seu aplicativo da Web no Apache Tomcat
- Como usar uma visualização para visualizar os dados
Como criar um arquivo CSV
O arquivo csv_example.csv
é fornecido no diretório <data_source_library_install>/examples/src/html
.
Ela contém os seguintes valores:
Employee,Manager Roger,John Robert,John Jane,Roger Jack,Jane Bob,Jane
Copie esse arquivo para o diretório <tomcat_home>/webapps/myWebApp
criado na seção Primeiros passos.
Como atualizar seu aplicativo da Web no Apache Tomcat
Siga ou adapte as instruções abaixo para atualizar seu aplicativo da Web no Apache Tomcat. Estas instruções são específicas para o Apache Tomcat em um sistema Windows:
- O arquivo
web.xml
que você copiou anteriormente para o diretórioWEB-INF
já contém a definição e o mapeamento necessários para este exemplo. As linhas que definem isso são:
<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>
- Inicie o Tomcat ou reinicie o Tomcat se ele já estiver em execução.
- Clique no link a seguir:
http://localhost:8080/myWebApp/csv?url=http://localhost:8080/myWebApp/csv_example.csv
A tela mostra de 6 a 7 linhas de texto, dependendo da largura da tela.
O texto começa comgoogle.visualization.Query.setResponse
e termina com{c:[{v:'Bob'},{v:'Jane'}]}]}});
Esta é a resposta que a fonte de dados CSV de exemplo envia para uma visualização.
Como usar uma visualização para visualizar os dados
O arquivo all_examples.html
no diretório <data_source_library_install>/examples/src/html
pode ser usado para visualizar os dados.
Ao visualizar a origem do arquivo all_examples.html
,
você verá três visualizações incluídas no arquivo. Os snippets
a seguir reproduzem a especificação dessas visualizações.
- A linha a seguir especifica o exemplo de
csv
abordado nesta seção:
query = new google.visualization.Query('csv?url=http://localhost:8080/myWebApp/csv_example.csv');
A linha a seguir especifica uma visualização do gráfico da organização:var chart = new google.visualization.OrgChart(document.getElementById('csv_div'));
- A linha a seguir especifica o
simpleexample
coberto na seção Vamos começar:
var query = new google.visualization.Query('simpleexample?tq=select name,population');
A linha a seguir especifica uma visualização do gráfico de pizza:var chart = new google.visualization.PieChart(document.getElementById('simple_div'));
- A linha a seguir especifica o exemplo de
advanced
abordado na seção Como definir recursos e o fluxo de eventos:
query = new google.visualization.Query('advanced?tableId=planets&tq=select planet,mass');
A linha a seguir especifica uma visualização do gráfico de barras:var chart = new google.visualization.BarChart(document.getElementById('advanced_div'));
Para mais informações sobre como especificar um gráfico e usar a linguagem de consulta, consulte Introdução ao uso de ferramentas de gráfico e a Referência da linguagem de consulta.
Siga ou adapte as instruções abaixo para visualizar os
dados exibidos por CsvDataSourceServlet
:
- Copie o arquivo
all_examples.html
do diretório<data_source_library_install>/examples/src/html
para o diretório<tomcat_home>/webapps/myWebApp/
. - Clique no seguinte link: http://localhost:8080/myWebApp/all_examples.html,
você verá a visualização a seguir.
O exemplo da fonte de dados avançada é discutido em Como definir recursos e o fluxo de eventos.
Próximas etapas
O próximo exemplo é descrito na seção Como definir recursos e o fluxo de eventos. Você também pode acessar os seguintes links:
- Para ver uma introdução às classes mais usadas da biblioteca, consulte Classes principais.
- Em vez de herdar a fonte de dados de
DataSourceServlet
, é possível herdá-la de outra classe. Para mais informações, consulte Como usar seu próprio servlet. - Para saber como transmitir parâmetros de um aplicativo para uma fonte de dados, consulte Como transmitir parâmetros para
DataTableGenerator.generateDataTable
.