2014-01-29 2 views
0

Моя цель - сгенерировать this Bar Chart с помощью JFreeChart.Набор данных диаграммы JFreeChart из базы данных

Я пытаюсь получить данные JFreeChart из базы данных с помощью MVC; Bean, Data Access Object (DAO) и Servlet. У меня проблема с выполнением кода на Servlet. Ниже кодов я до сих пор.

Справка будет очень полезна и за вас заранее! :)

Database

идентификатор | выручка


R1 | 999
M3 | 832
G7 | 318

Bean

public class Revenue 
{ 
    private String id; 
    private Integer revenue; 

    //getters and setters 
} 

DAO

public ArrayList<Revenue> getAllRevenueList() 
{ 
    try 
    { 
     //driver 
     //connection code 

    String sql = "SELECT id,revenue FROM revenue_table"; 
    Statement stmt = con.createStatemtnt(); 
    ResultSet rs = stmt.executeQuery(sql); 

    ArrayList<Revenue> revenueList = new ArrayList<Revenue>(); 
    while(rs.next) 
    { 
     Revenue r = new Revenue(); 
     r.setId(rs.getString("id")); 
     r.setRevenue(Integer.parseInt(rs.getString("revenue"))); 
     revenueList.add(r); //add object to list 
    } 

    return revenueList; 
    } 
    catch(Exception e) 
    { 
    e.printStackTrace(); 
    return null; 
    } 
} 

Servlet

protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     response.setContentType("image/png"); 

     OutputStream outputStream = response.getOutputStream(); 
JFreeChart chart = getRevenueChart(); 

int width = 1100; 
      int height = 350; 
      ChartUtilities.writeChartAsPNG(outputStream, chart, width, height); 


} 

public JFreeChart getRevenueChart() { 

//Cannot instantiate the type CategoryDataset 

     CategoryDataset dataset = new CategoryDataset(); 

     ArrayList<Bean> revenueList = DAO.getAllRevenueList(); 

     if (revenueList != null && !revenueList.isEmpty()) { 
      for (Bean r : revenueList) { 
       dataset.setValue(r.getRevenue(), r.getID()); 

      } 
     } 

     JFreeChart chart = ChartFactory.createBarChart3D("Graph Title", 
       "ID", 
       "Revenue", 
       dataset, 
       PlotOrientation.VERTICAL, 
       false, 
       false, 
       false); 

     CategoryPlot plot = chart.getCategoryPlot(); 
     CategoryAxis axis = plot.getDomainAxis(); 

     CategoryItemRenderer renderer = plot.getRenderer(); 
     BarRenderer r = (BarRenderer) renderer; 
     r.setMaximumBarWidth(0.95); 

     return chart; 
    } 
+0

У вас возникли проблемы с созданием диаграммы? Что вы пробовали? Или что все должно быть сделано в Servlet? Что вы пробовали? – Erlik

ответ

1

Если ваша проблема была т o создайте диаграмму из заданного List<Revenue>, затем попробуйте что-то вроде следующего.

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
for (Revenue revenue : revenueList) { 
    // the middle parameter is for naming the value, can be empty if you have just one 
    dataset.addValue(revenue.getRevenue(), "", revenue.getId()); 
} 

JFreeChart chart = ChartFactory.createBarChart(
    "", 
    "", 
    "Revenues", 
    dataset, 
    PlotOrientation.VERTICAL, 
    true, 
    false, 
    false 
);    // or whatever parameters you need 

Информация о статическом методе фабрики является here.

+0

Работает как очарование! Благодаря! :) – newbieinjavaversion2

Смежные вопросы