## BarChartOLAPDataModel: Basic Requirements

The main responsibility of a BarChartOLAPDataModel is to map data members from an OLAP data structure to variable roles in a bar chart.

In your code, you can explicitly select measures in the OLAP data, or allow the component's OLAP data model to select measures by default.

A bar chart's primary variable roles are

CategoryVariable
  Specifies a classification variable whose values determine the number and arrangement of bars in the chart. A unique bar element is produced for each unique classification value or combination of values when other variable roles are specified. A BarChartOLAPDataModel maps this role to an OLAP column or row level, depending on the OLAP structure.
ResponseVariable
  Specifies an analysis variable whose values determine the height of each bar. A BarChartOLAPDataModel maps this role to one or more OLAP measures, depending on the OLAP structure.
SubgroupVariable
  Divides bars into subgroup segments, based on the values of a categorical variable. A BarChartOLAPDataModel uses this role if the OLAP axis that supplies the CategoryVariable role has more than one level and the BarChart's subgroupEnabled field is true.

To access OLAP data for a graph, you must know the name of the OLAP host server and connect to that server with a valid username and password. To use the OLAP data in a BarChart, you must

- create an OLAPDataSet, either from the result set of a query that is executed on an OLAP provider or from the metadata that has been mapped to the OLAP data
- assign the OLAPDataSet to a BarChartOLAPDataModel
- assign the BarChartOLAPDataModel to a BarChart.

The following code fragment generates a bar chart that shows product sums for selected products, years, and countries.

    // Create strings to store an SQL query, the OLAP server name,
    // and the connection port.
       String OLAP_QUERY="SELECT CROSSJOIN({[GEOGRAPHIC].[COUNTRY].MEMBERS},"
                       + "{[PRODUCTLINE].[PRODUCT].MEMBERS}) ON COLUMNS,"
                       + "{[TIME].[YEAR].MEMBERS} ON ROWS "
                       + "FROM MYOLAPCUBE WHERE ([Measures].[ACTUAL_SUM])"; // specify valid OLAP source
       String OLAP_SERVER="myOlapServer.com"; // use a valid server name
       int OLAP_PORT=8800;                    // use a valid port

    // Create a BarChartOLAPDataModel from an OLAPDataSet. The final argument
    // on the model constructor sets the chart's subgroupEnabled field to true.
       BarChartOLAPDataModel olapDataModel = null;
       try {
            // OLAPDataSet arguments: host, port, username, pwd, query
               olapDataModel=new BarChartOLAPDataModel(
               new OLAPDataSet(OLAP_SERVER, OLAP_PORT, "myUsername", "myPwd",
                               OLAP_QUERY), true);
           } catch (Exception ex) { ex.printStackTrace(); }

    // Create a BarChart that uses the BarChartOLAPDataModel as its data model
       BarChart barChart=new BarChart();
       barChart.setDataModel(olapDataModel);

Example
BarChart Using OLAP Data: Swing-based code, Servlet-based code