يقدّم هذا القسم
CsvDataSourceServlet
. CsvDataSourceServlet
هو مثال على التنفيذ الذي يستخدم ملف CSV كمتجر بيانات خارجي. يقدّم هذا القسم أيضًا تعليمات مفصّلة عن كيفية تشغيل CsvDataSourceServlet
واختباره.
ملاحظة: عليك إكمال قسم البدء في استخدام مصادر البيانات قبل البدء في هذا القسم.
نقدّم لك CsvDataSourceServlet
توجد الفئة CsvDataSourceServlet
في الحزمة examples
. تقدّم هذه الفئة مثالاً على التنفيذ
يستخدم ملف CSV كمساحة تخزين خارجية للبيانات. CsvDataSourceServlet
يكتسَب من
DataSourceServlet
،
وينفّذ generateDataTable()
، ويجب أن يتم تشغيله داخل حاوية
خادم.
وفي ما يلي مقتطف عن CsvDataSourceServlet
. تعرض الدالة generateDataTable
البيانات في المكتبة. تنشئ هذه الدالة وصفًا لجدول البيانات،
وتحدّد أعمدة جدول البيانات، وتملأ جدول البيانات بالبيانات التي يتم الحصول عليها من ملف CSV. تتم قراءة ملف CSV من
عنوان URL محدد في طلب تمثيل بصري' لطلب. وتتعامل المكتبة مع جميع الإجراءات الأخرى المطلوبة لعرض جدول البيانات إلى تمثيل بصري لطلب البحث.
/** * 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
يقدّم هذا القسم تعليمات حول كيفية تشغيل واختبار CsvDataSourceServlet
.
لتشغيل CsvDataSourceServlet
واختباره، يمكنك إنشاء ملف CSV وتعديل تطبيق الويب وإعداد التمثيل البصري الذي يفحص مصدر البيانات، كما هو موضّح في الأقسام التالية:
إنشاء ملف CSV
يتوفّر الملف csv_example.csv
في الدليل <data_source_library_install>/examples/src/html
.
ويحتوي هذا الدليل على القيم التالية:
Employee,Manager Roger,John Robert,John Jane,Roger Jack,Jane Bob,Jane
انسخ هذا الملف إلى دليل <tomcat_home>/webapps/myWebApp
الذي أنشأته في قسم البدء.
تحديث تطبيق الويب على Apache Tomcat
اتّبِع التعليمات التالية أو عدِّلها لتحديث تطبيق الويب على Apache Catcat. هذه التعليمات مخصّصة لنظام Apache Tomcat على نظام التشغيل Windows:
- ملف
web.xml
الذي نسخته سابقًا إلى الدليلWEB-INF
يحتوي حاليًا على التعريف والربط المطلوبين لهذا المثال. الأسطر التي تحدِّد ما يلي:
<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>
- افتح Tomcat، أو أعِد تشغيل Tomcat إذا كان قيد التشغيل.
- انقر على الرابط التالي:
http://localhost:8080/myWebApp/csv?url=http://localhost:8080/myWebApp/csv_example.csv
تعرض الشاشة من 6 إلى 7 أسطر من النص، وذلك حسب عرض الشاشة.
يبدأ النص بـgoogle.visualization.Query.setResponse
وينتهي بـ{c:[{v:'Bob'},{v:'Jane'}]}]}});
هذا هو الرد الذي يرسله مثال على مصدر بيانات ملف CSV إلى التمثيل البصري.
استخدام التمثيل البصري لعرض البيانات
يمكن استخدام الملف all_examples.html
في الدليل <data_source_library_install>/examples/src/html
لعرض تمثيل مرئي للبيانات.
إذا عرضت مصدر الملف all_examples.html
، ستلاحظ أنّ هناك ثلاثة تمثيلات بصرية مضمّنة في الملف. تعيد المقتطفات التالية إنتاج مواصفات التمثيل البصري هذه.
- يحدّد السطر التالي مثال
csv
الوارد في هذا القسم:
query = new google.visualization.Query('csv?url=http://localhost:8080/myWebApp/csv_example.csv');
يحدّد السطر التالي تمثيلاً بصريًا للرسم البياني التنظيمي:var chart = new google.visualization.OrgChart(document.getElementById('csv_div'));
- يحدّد السطر التالي
simpleexample
الوارد في قسم البدء:
var query = new google.visualization.Query('simpleexample?tq=select name,population');
يحدّد السطر التالي تمثيلاً بيانيًا دائريًا:var chart = new google.visualization.PieChart(document.getElementById('simple_div'));
- يحدّد السطر التالي المثال
advanced
الوارد في قسم تعريف الإمكانيات وتدفق الأحداث:
query = new google.visualization.Query('advanced?tableId=planets&tq=select planet,mass');
يحدّد السطر التالي تمثيلاً بصريًا للرسم البياني الشريطي:var chart = new google.visualization.BarChart(document.getElementById('advanced_div'));
لمزيد من المعلومات حول كيفية تحديد رسم بياني واستخدام لغة طلب البحث، راجِع مقدمة حول استخدام أدوات الرسم البياني ومرجع لغة طلب البحث.
يمكنك اتّباع التعليمات الواردة أدناه أو تعديلها لعرض تمثيل مرئي للبيانات التي يعرضها CsvDataSourceServlet
:
- انسخ ملف
all_examples.html
من الدليل<data_source_library_install>/examples/src/html
إلى الدليل<tomcat_home>/webapps/myWebApp/
. - انقر على الرابط التالي: http://localhost:8080/myWebApp/all_examples.html،
وسيظهر لك التمثيل البصري التالي.
تتم مناقشة مثال مصدر البيانات المتقدم في تحديد الإمكانيات وتدفق الأحداث.
الخطوات التالية
يوضّح المثال التالي في قسم تحديد الإمكانيات وتدفق الأحداث. يمكنك بدلاً من ذلك استكشاف الروابط التالية:
- للاطّلاع على مقدمة عن الصفوف الدراسية الأكثر استخدامًا في المكتبة، يمكنك الاطّلاع على الصفوف الرئيسية.
- بدلاً من أن يكون مصدر البيانات موروثًا من
DataSourceServlet
، يمكن أن يكتسبه من صف آخر. لمزيد من المعلومات، راجِع استخدام خدمتك الخاصة. - للتعرّف على كيفية تمرير المعلَمات من تطبيق إلى مصدر بيانات، يمكنك الاطّلاع على تمرير المعلّمات إلى
DataTableGenerator.generateDataTable
.