· 7 years ago · Dec 10, 2018, 04:20 PM
1
2import com.sun.media.jfxmedia.logging.Logger;
3import java.awt.Color;
4import java.awt.Component;
5import java.sql.Connection;
6import java.sql.SQLException;
7import javax.swing.table.DefaultTableModel;
8import koneksi.conek;
9
10/*
11 * To change this license header, choose License Headers in Project Properties.
12 * To change this template file, choose Tools | Templates
13 * and open the template in the editor.
14 */
15
16/**
17 *
18 * @author DBC115042
19 */
20import java.util.List;
21import java.util.ArrayList;
22import java.util.Collections;
23import java.util.Comparator;
24import java.util.Locale;
25import java.util.logging.Level;
26import java.util.logging.LogManager;
27import javax.swing.JLabel;
28import javax.swing.JTable;
29import javax.swing.UIManager;
30import javax.swing.table.TableCellRenderer;
31public class BandingData extends javax.swing.JFrame {
32
33 List<String> arrReg = new ArrayList<String>();
34 static List<String> arrRek = new ArrayList<String>();
35 static List<String> arrPiu = new ArrayList<String>();
36 final static java.util.logging.Logger logger = java.util.logging.Logger.getAnonymousLogger();
37 /**
38 * Creates new form BandingData
39 */
40 public BandingData() {
41 initComponents();
42
43 tampildtmhs();
44 tampildtrek();
45
46 //Menghighlight Cell Merah
47 tblmhs.setDefaultRenderer(Object.class, new cellHighlighter());
48 getPiutang();
49
50 tambahPiutang();
51 setLocationRelativeTo(this);
52 }
53
54 /**
55 * This method is called from within the constructor to initialize the form.
56 * WARNING: Do NOT modify this code. The content of this method is always
57 * regenerated by the Form Editor.
58 */
59 @SuppressWarnings("unchecked")
60 // <editor-fold defaultstate="collapsed" desc="Generated Code">
61 private void initComponents() {
62
63 jPanel1 = new javax.swing.JPanel();
64 bKeluar = new javax.swing.JButton();
65 jScrollPane2 = new javax.swing.JScrollPane();
66 tblrek = new javax.swing.JTable();
67 jScrollPane3 = new javax.swing.JScrollPane();
68 tblmhs = new javax.swing.JTable();
69
70 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
71
72 jPanel1.setBackground(new java.awt.Color(204, 204, 255));
73
74 bKeluar.setText("Keluar");
75 bKeluar.addActionListener(new java.awt.event.ActionListener() {
76 public void actionPerformed(java.awt.event.ActionEvent evt) {
77 bKeluarActionPerformed(evt);
78 }
79 });
80
81 tblrek.setModel(new javax.swing.table.DefaultTableModel(
82 new Object [][] {
83 {null},
84 {null},
85 {null},
86 {null}
87 },
88 new String [] {
89 "Nama Pada Rekening Koran"
90 }
91 ));
92 jScrollPane2.setViewportView(tblrek);
93
94 tblmhs.setModel(new javax.swing.table.DefaultTableModel(
95 new Object [][] {
96 {null},
97 {null},
98 {null},
99 {null}
100 },
101 new String [] {
102 "Nama Mahasiswa Registrasi"
103 }
104 ));
105 jScrollPane3.setViewportView(tblmhs);
106
107 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
108 jPanel1.setLayout(jPanel1Layout);
109 jPanel1Layout.setHorizontalGroup(
110 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
111 .addGroup(jPanel1Layout.createSequentialGroup()
112 .addGap(25, 25, 25)
113 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
114 .addComponent(bKeluar, javax.swing.GroupLayout.Alignment.TRAILING)
115 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
116 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE)
117 .addGap(18, 18, 18)
118 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE)))
119 .addContainerGap(24, Short.MAX_VALUE))
120 );
121 jPanel1Layout.setVerticalGroup(
122 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
123 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
124 .addContainerGap()
125 .addComponent(bKeluar)
126 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
127 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
128 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
129 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
130 .addContainerGap(52, Short.MAX_VALUE))
131 );
132
133 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
134 getContentPane().setLayout(layout);
135 layout.setHorizontalGroup(
136 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
137 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
138 );
139 layout.setVerticalGroup(
140 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
141 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
142 );
143
144 pack();
145 }// </editor-fold>
146
147 private void bKeluarActionPerformed(java.awt.event.ActionEvent evt) {
148 new MenuUtama().show();
149 this.dispose();
150 }
151
152 /**
153 * @param args the command line arguments
154 */
155 public static void main(String args[]) {
156 /* Set the Nimbus look and feel */
157 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
158 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
159 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
160 */
161 try {
162 for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
163 if ("Nimbus".equals(info.getName())) {
164 javax.swing.UIManager.setLookAndFeel(info.getClassName());
165 break;
166 }
167 }
168 } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
169 java.util.logging.Logger.getLogger(BandingData.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
170 }
171 //</editor-fold>
172
173 //</editor-fold>
174
175 /* Create and display the form */
176 java.awt.EventQueue.invokeLater(() -> {
177 new BandingData().setVisible(true);
178 });
179 }
180
181 // Variables declaration - do not modify
182 private javax.swing.JButton bKeluar;
183 private javax.swing.JPanel jPanel1;
184 private javax.swing.JScrollPane jScrollPane2;
185 private javax.swing.JScrollPane jScrollPane3;
186 private javax.swing.JTable tblmhs;
187 private javax.swing.JTable tblrek;
188 // End of variables declaration
189
190
191 private void Banding() {
192
193
194 }
195
196 private void tampildtrek() {
197 DefaultTableModel model = new DefaultTableModel();
198 model.addColumn("Nama Mahasiswa Pada Rekening Koran");
199
200 try {
201 int no=1;
202 String sql = "select nama from trek";
203 java.sql.Connection conn=(Connection)conek.GetConnection();
204 java.sql.Statement stm=conn.createStatement();
205 java.sql.ResultSet res=stm.executeQuery(sql);
206 while(res.next()){
207 arrRek.add(res.getString(1));
208 model.addRow(new Object[]{res.getString(1)});
209 }
210 Collections.sort(arrRek,new Comp());
211 tblrek.setModel(model);
212 } catch (SQLException e) {
213 }
214 }
215
216 private void tampildtmhs() {
217 DefaultTableModel model = new DefaultTableModel();
218 model.addColumn("Nama Mahasiswa Regisrasi");
219
220 try {
221 int no=1;
222 String sql = "select nama from tregmhs";
223 java.sql.Connection conn=(Connection)conek.GetConnection();
224 java.sql.Statement stm=conn.createStatement();
225 java.sql.ResultSet res=stm.executeQuery(sql);
226 while(res.next()){
227 arrReg.add(res.getString(1));
228 model.addRow(new Object[]{res.getString(1)});
229 }
230 Collections.sort(arrReg,new Comp());
231 tblmhs.setModel(model);
232 } catch (SQLException e) {
233 }
234 }
235
236 public static boolean binarySearch(String toFind, List<String> arr){
237 int lowestIndex = 0;
238 int highestIndex = arr.size()-1;
239 int middleIndex = 0;
240
241 while (lowestIndex <= highestIndex){
242 middleIndex = (lowestIndex+highestIndex)/2;
243
244 if (toFind.compareTo(arr.get(middleIndex).toString()) > 0){
245 lowestIndex = middleIndex+1;
246 }else if (toFind.compareTo(arr.get(middleIndex).toString()) < 0){
247 highestIndex = middleIndex-1;
248 }else{
249 break;
250 }
251 }
252 if (lowestIndex>highestIndex){
253 return false;
254 }else{
255 return true;
256 }
257 }
258
259 public void tambahPiutang(){
260 List<Mahasiswa> arrMHS = new ArrayList<Mahasiswa>();
261 arrMHS.clear();
262 for (int i=0;i<arrPiu.size();i++){
263 try {
264 String sql ="SELECT * FROM tregmhs WHERE Nama='"+arrPiu.get(i).toString()+"'";
265 System.out.println(sql);
266 java.sql.Connection conn=(Connection)conek.GetConnection();
267 java.sql.Statement stm=conn.createStatement();
268 java.sql.ResultSet res=stm.executeQuery(sql);
269 while(res.next()){
270 Mahasiswa mhs = new Mahasiswa(res.getString(1),res.getString(2),res.getString(3),res.getString(4),res.getString(5));
271 arrMHS.add(mhs);
272 }
273 } catch (SQLException e) {
274 }
275 }
276 arrPiu.clear();
277 for(int i = 0; i < arrMHS.size()-1; i++){
278 try{
279 String ket = "";
280 String sql = "INSERT INTO tpiutang SELECT "
281 + "'"+arrMHS.get(i).nama+"','"+arrMHS.get(i).nim+"','"+arrMHS.get(i).fak+"','"+arrMHS.get(i).prog+"',"+arrMHS.get(i).ukt+",'"+ket+"'"+
282 " FROM dual WHERE NOT EXISTS (SELECT 1 FROM tpiutang WHERE Nama = "+"'"+arrMHS.get(i).nim+"')";
283
284 java.sql.Connection conn=(Connection)conek.GetConnection();
285 java.sql.PreparedStatement pst=conn.prepareStatement(sql);
286 pst.execute();
287 System.out.println(sql);
288 }catch (SQLException e){
289
290 }
291 }
292 }
293
294 private static class Comp implements Comparator<String>{
295
296 @Override
297 public int compare(String string1, String string2) {
298 return string1.compareTo(string2);
299 }
300 }
301
302 private void getPiutang(){
303 for (int i = 0; i<arrReg.size();i++){
304 if(!binarySearch(arrReg.get(i).toString(),arrRek)){
305 arrPiu.add(arrReg.get(i).toString());
306 }
307 }
308 }
309
310 private static class cellHighlighter extends JLabel implements TableCellRenderer{
311
312 public cellHighlighter(){
313 setOpaque(true);
314
315 }
316
317 @Override
318 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
319 String val = (String) value;
320 Color c;
321 if (!binarySearch(val,arrRek)){
322 c = Color.RED;
323 }else {
324 c = UIManager.getColor("Table.background");
325 }
326 setBackground(c);
327 setText(val);
328 return this;
329 }
330 }
331
332 static class Mahasiswa{
333 String nama;
334 String nim;
335 String fak;
336 String prog;
337 String ukt;
338
339 Mahasiswa(String nm, String nmm, String fk, String prg, String ukt2){
340 this.nama = nm;
341 this.nim = nmm;
342 this.fak = fk;
343 this.prog = prg;
344 this.ukt = ukt2;
345 }
346 }
347}