שימוש בחנות נתונים חיצונית

הקטע הזה מציג את 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 Tomcat. ההוראות הבאות הן ספציפיות ל-Apache Tomcat במערכת Windows:

  1. הקובץ 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>
    
  2. מפעילים את Tomcat או מפעילים מחדש את Tomcat, אם הוא כבר פועל.
     
  3. לוחצים על הקישור הבא: 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, יש לבצע את ההוראות הבאות או להתאים אותן:

  1. מעתיקים את הקובץ all_examples.html מספריית <data_source_library_install>/examples/src/html לספרייה <tomcat_home>/webapps/myWebApp/.
  2. יש ללחוץ על הקישור הבא: http://localhost:8080/myWebApp/all_examples.html, עליכם לראות את התצוגה החזותית הבאה.


הדוגמה 'מקור נתונים מתקדם' מתוארת בנושא הגדרת יכולות וזרימת אירועים.

השלבים הבאים

הדוגמה הבאה מתוארת בקטע הגדרה של יכולות וזרימת האירועים. לחלופין, אפשר לעיין בקישורים הבאים: