Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Interface.CommunityAdminWorkArea; import Business.Community.Community; import Business.Employee.CitizenEmployee; import Business.Employee.Employee; import Business.Organization.Organization; import Business.UserAccount.UserAccount; import Business.WorkQueue.WorkRequest; import java.awt.CardLayout; import java.awt.Color; import java.util.ArrayList; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; /** * * @author kunal */ public class BestCitizen extends javax.swing.JPanel { /** * Creates new form BestCitizen */ private JPanel userProcessContainer; private UserAccount account; private Employee ee; private Community community; private Organization organization; public BestCitizen(JPanel userProcessContainer, UserAccount account) { initComponents(); this.userProcessContainer = userProcessContainer; this.account = account; ee = account.getEmployee(); community = ee.getCommunityAssociated(); organization = community.getFoodDistributionOrg(); } public ArrayList<CitizenEmployee> calculateTopThreeCitizenByRewardPoints( ArrayList<CitizenEmployee> citizenList) { int val = 0; CitizenEmployee ce1 = new CitizenEmployee(); CitizenEmployee ce2 = new CitizenEmployee(); CitizenEmployee ce3 = new CitizenEmployee(); for (CitizenEmployee ce : citizenList) { val = ce.getCurrentRewardPoints(); if (val > ce1.getCurrentRewardPoints()) { ce3 = ce2; ce2 = ce1; ce1 = ce; } else if (val > ce2.getCurrentRewardPoints()) { if (ce1.getCurrentRewardPoints() == val) { if (ce1.getCurrentRewardPoints() != ce.getCurrentRewardPoints()) { ce3 = ce2; ce2 = ce; } } else { ce3 = ce2; ce2 = ce; } } else if (val > ce3.getCurrentRewardPoints()) { if (ce1.getCurrentRewardPoints() == val || ce2.getCurrentRewardPoints() == val) { } else { ce3 = ce; } } } ArrayList<CitizenEmployee> ceList = new ArrayList<CitizenEmployee>(); ceList.add(ce1); ceList.add(ce2); ceList.add(ce3); return ceList; } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); jDateChooser1 = new com.toedter.calendar.JDateChooser(); jDateChooser2 = new com.toedter.calendar.JDateChooser(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); btnCalculate = new javax.swing.JButton(); btnBack = new javax.swing.JButton(); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N jLabel1.setText("Top 3 Citizen with Maximum Rewards Points"); jDateChooser1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N jDateChooser2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N jLabel2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N jLabel2.setText("From Date"); jLabel3.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N jLabel3.setText("To Date"); btnCalculate.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N btnCalculate.setText("View Results >>"); btnCalculate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCalculateActionPerformed(evt); } }); btnBack.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N btnBack.setText("<< Back"); btnBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnBackActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGap(279, 279, 279).addComponent(jLabel1)) .addGroup(layout.createSequentialGroup().addGap(58, 58, 58) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2).addComponent(jLabel3)) .addGap(58, 58, 58) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(btnCalculate) .addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jDateChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jDateChooser2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(btnBack))) .addContainerGap(270, Short.MAX_VALUE))); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGap(26, 26, 26).addComponent(jLabel1) .addGap(103, 103, 103) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2) .addComponent(jDateChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(36, 36, 36).addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jDateChooser2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(37, 37, 37).addComponent(btnCalculate) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 223, Short.MAX_VALUE) .addComponent(btnBack).addContainerGap())); }// </editor-fold>//GEN-END:initComponents private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCalculateActionPerformed // TODO add your handling code here: Date toDate1 = jDateChooser1.getDate(); Date toDate2 = jDateChooser2.getDate(); if ((toDate1 == null) || (toDate2 == null)) { JOptionPane.showMessageDialog(null, "Invalid date..Kindly enter valid date."); return; } long fromDate = (jDateChooser1.getDate().getTime()) / (1000 * 60 * 60 * 24); long toDate = (jDateChooser2.getDate().getTime()) / (1000 * 60 * 60 * 24); //String citizenRewards = null; ArrayList<CitizenEmployee> citizenEmployeeList = new ArrayList<>(); for (WorkRequest request : organization.getWorkQueue().getWorkRequestList()) { long requestDate = (request.getRequestDate().getTime()) / (1000 * 60 * 60 * 24); if ((requestDate >= fromDate) && (requestDate <= toDate)) { Employee ee = request.getSender().getEmployee(); if (ee instanceof CitizenEmployee) { CitizenEmployee c = (CitizenEmployee) ee; if (!citizenEmployeeList.contains(c)) { c.calculateTotalRewardPointsForCitizen(); citizenEmployeeList.add(c); } } } // else{ // // JOptionPane.showMessageDialog(null, "There are no records for this search criteria."); // } } if (citizenEmployeeList.isEmpty()) { JOptionPane.showMessageDialog(null, "There are no records for this search criteria."); } ArrayList<CitizenEmployee> citizenEmployee = calculateTopThreeCitizenByRewardPoints(citizenEmployeeList); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(citizenEmployee.get(0).getCurrentRewardPoints(), "Citizens", citizenEmployee.get(0).getName()); dataset.setValue(citizenEmployee.get(1).getCurrentRewardPoints(), "Citizens", citizenEmployee.get(1).getName()); dataset.setValue(citizenEmployee.get(2).getCurrentRewardPoints(), "Citizens", citizenEmployee.get(2).getName()); JFreeChart chart = ChartFactory.createBarChart3D("Types of food collected", "Top 3 citizen", "Number of reward points", dataset, PlotOrientation.VERTICAL, false, true, false); CategoryPlot plot = chart.getCategoryPlot(); plot.setRangeGridlinePaint(Color.BLUE); ChartFrame frame = new ChartFrame("Bar Chart for Types of food collected", chart); frame.setVisible(true); frame.setSize(450, 350); }//GEN-LAST:event_btnCalculateActionPerformed private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBackActionPerformed // TODO add your handling code here: userProcessContainer.remove(this); CardLayout layout = (CardLayout) userProcessContainer.getLayout(); layout.previous(userProcessContainer); }//GEN-LAST:event_btnBackActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnBack; private javax.swing.JButton btnCalculate; private com.toedter.calendar.JDateChooser jDateChooser1; private com.toedter.calendar.JDateChooser jDateChooser2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; // End of variables declaration//GEN-END:variables }