• Tidak ada hasil yang ditemukan

5.3 Implementasi Kelas

5.3.6 Implementasi Kelas HalamanUtama

Listing Program 5.5 Kelas DiagramBatang.java

5.3.6 Implementasi Kelas HalamanUtama

Berikut merupakan implementasi dari atribut dan method pada kelas HalamanUtama yang dibuat sesuai dengan perancangannya. Kelas ini berkaitan semua fungsi utama sistem karena bertimdak sebagai interface utama ketika pengguna akan melakukan keseluruhan fungsi pada sistem. Pada listing program ini hanya akan ditampilkan

method utama seperti yang ada pada tabel 4.3.6.6.l pada bab perancangan.

public class HalamanUtama extends javax.swing.JFrame {

CheckBoxTableModel cb_table = new CheckBoxTableModel(); SeleksiAtribut seleksi_atribut;

public void tampilIsiDataBasisdata(DatabaseConnection conn, String namaTabel){

try {

DatabaseController controller = new DatabaseController(); ResultSet rs;

rs = controller.tampilIsiTable(conn.getConnection(), namaTabel); java.sql.ResultSetMetaData meta = rs.getMetaData();

int coloumCount = meta.getColumnCount(); Vector columnName = new Vector();

Vector data = new Vector(); columnName.clear();

for (int i = 1; i <= coloumCount; i++) {

columnName.add(meta.getColumnName(i)); }

data.clear(); while (rs.next()) {

Vector data2 = new Vector();

for (int i = 1; i <= coloumCount; i++) { data2.add(rs.getString(i));

}

data.add(data2); }

DefaultTableModel model = new DefaultTableModel(data, columnName); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); hasilDeteksiTextArea.setText(null); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnName.size()); pathTextField.setText("Tabel : " + namaTabel); pathTextField.setEditable(false);

for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (i == 0) {

if (model.getValueAt(j, i) == null) {

JOptionPane.showMessageDialog(null, "Label data Anda tidak lengkap !" + "\n"

+ "Silahkan periksa kembali label data pada tabel basisdata"); i = model.getColumnCount() - 1; this.dispose(); break; } } else {

if (model.getValueAt(j, i) == null || !model.getValueAt(j, i).toString().matches("[0-9.]*")

|| model.getValueAt(j, i).toString().matches("[.]*")) { JOptionPane.showMessageDialog(null, "Data Anda tidak lengkap dan / atau terdapat karakter bukan angka !" + "\n"

+ "Silahkan periksa kembali data pada tabel basisdata"); i = model.getColumnCount() - 1; break; } } } }

for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut();

seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false);

}

seleksiTable.setModel(cb_table);

TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel);

tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier);

int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } catch (Exception e) {

} }

public HalamanUtama(DatabaseConnection conn, String namaTabel) { initComponents();

setTitle("Halaman Utama");

tampilIsiDataBasisdata(conn, namaTabel); }

public void PilihDB() {

hapusButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); pathTextField.setEditable(false);

HalamanPilihDatabase pilih_db = new HalamanPilihDatabase(); pilih_db.setVisible(true);

}

public void submitData() {

TableModel tableModel = dataPreprocessTable.getModel(); if (tableModel.getColumnCount() == 0) {

JOptionPane.showMessageDialog(null, "Anda belum memasukkan data !"); pathTextField.setText(null); } else { tableDeteksiOutlier.setModel(tableModel); tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier);

int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); System.out.println(" " + baris); jTabbedPane1.setSelectedComponent(deteksiPanel); jTabbedPane1.setEnabledAt(1, true); } }

public void distribusiAtribut() { List<String> daftar_atribut = null;

daftar_atribut = new ArrayList<String>();

for (int i = 1; i < dataPreprocessTable.getColumnCount(); i++) { daftar_atribut.add(dataPreprocessTable.getColumnName(i)); }

HalamanDistribusiAtribut grafik = new

HalamanDistribusiAtribut(daftar_atribut, dataPreprocessTable); grafik.setVisible(true);

}

public void pilihFile() {

JFileChooser fileChooser = new JFileChooser(); int returnValue = fileChooser.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) { String nama_file = fileChooser.getSelectedFile().getPath(); String[] potong_nama_file = nama_file.split("\\.");

if (potong_nama_file[1].equals("xls")) { cb_table.removeRow2();

File fileExcel = fileChooser.getSelectedFile(); Vector columnName = new Vector();

Vector data = new Vector(); try {

Workbook workbook = Workbook.getWorkbook(fileExcel); Sheet sheet = workbook.getSheet(0);

columnName.clear();

for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, 0);

columnName.add(cell.getContents()); }

data.clear();

for (int j = 1; j < sheet.getRows(); j++) { Vector data2 = new Vector();

for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, j);

data2.add(cell.getContents()); } data2.add("\n"); data.add(data2); } } catch (Exception e) { e.printStackTrace(); }

DefaultTableModel model = new DefaultTableModel(data, columnName);

dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnName.size()); pathTextField.setText(fileExcel.getPath()); hasilDeteksiTextArea.setText(null); hapusButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true);

for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (i == 0) {

if (i == 0 && model.getValueAt(j, 0).toString().isEmpty()) {

JOptionPane.showMessageDialog(null, "Label data tidak lengkap !" + "\n"

+ "Silahkan lengkapi label data pada file asli"); i = model.getColumnCount() - 1;

this.dispose();

HalamanAwal awal = new HalamanAwal(); awal.setVisible(true); break; } } else { if (model.getValueAt(j, i).toString().isEmpty() || !model.getValueAt(j, i).toString().matches("[0-9.]*") || model.getValueAt(j, i).toString().matches("[.]*")) { HalamanMissingValues ms = new

HalamanMissingValues(this, rootPaneCheckingEnabled, model); ms.setVisible(true); i = model.getColumnCount() - 1; break; } } } }

for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut();

seleksi_atribut.setPilih(false); cb_table.add(i, seleksi_atribut); }

seleksiTable.setModel(cb_table);

TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel);

tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier);

int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } else if (potong_nama_file[1].equals("csv")) { cb_table.removeRow2();

File fileCsv = fileChooser.getSelectedFile(); Vector columnNames = new Vector(); Vector data = new Vector();

String line; try {

BufferedReader br = new BufferedReader(new FileReader(fileCsv));

StringTokenizer st = new StringTokenizer(br.readLine(), ","); while (st.hasMoreTokens()) {

columnNames.addElement(st.nextToken()); }

while ((line = br.readLine()) != null) {

StringTokenizer st2 = new StringTokenizer(line, ","); Vector row = new Vector();

while (st2.hasMoreTokens()) { row.addElement(st2.nextToken()); } data.addElement(row); } br.close();

DefaultTableModel model = new DefaultTableModel(data, columnNames); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); pathTextField.setText(fileCsv.getPath()); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnNames.size());

hasilDeteksiTextArea.setText(null); hapusButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true);

for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (model.getValueAt(j, i).toString().isEmpty() || !model.getValueAt(j, i).toString().matches("[0-9.]*")

|| model.getValueAt(j, i).toString().matches("[.]*")) { JOptionPane.showMessageDialog(null, "Data Anda tidak lengkap dan / atau terdapat karakter bukan angka !" + "\n"

+ "Silahkan periksa kembali data pada file asli"); i = model.getColumnCount() - 1;

break; }

} }

for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut();

seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false);

cb_table.add(i, seleksi_atribut); }

seleksiTable.setModel(cb_table);

TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel);

tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier);

int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } catch (Exception e) {

} } else {

JOptionPane.showMessageDialog(null, "File yang Anda pilih harus berformat .xls atau .csv");

} } }

private void updateCellWidth(JTable table) { adjustJTableRowSizes(table);

adjustColumnSizes(table, i, 2); }

}

private void adjustJTableRowSizes(JTable jTable) { for (int row = 0; row < jTable.getRowCount(); row++) { int maxHeight = 0;

for (int column = 0; column < jTable.getColumnCount(); column++) {

TableCellRenderer cellRenderer = jTable.getCellRenderer(row, column);

Object valueAt = jTable.getValueAt(row, column); Component tableCellRendererComponent =

cellRenderer.getTableCellRendererComponent(jTable, valueAt, false, false, row, column);

int heightPreferable =

tableCellRendererComponent.getPreferredSize().height;

maxHeight = Math.max(heightPreferable, maxHeight); }

jTable.setRowHeight(row, maxHeight); }

}

public void adjustColumnSizes(JTable table, int column, int margin) { DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();

TableColumn col = colModel.getColumn(column); int width;

TableCellRenderer renderer = col.getHeaderRenderer(); if (renderer == null) {

renderer = table.getTableHeader().getDefaultRenderer(); }

Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);

width = comp.getPreferredSize().width; for (int r = 0; r < table.getRowCount(); r++) { renderer = table.getCellRenderer(r, column);

comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, column), false, false, r, column);

int currentWidth = comp.getPreferredSize().width; width = Math.max(width, currentWidth);

}

width += 2 * margin;

col.setPreferredWidth(width); col.setWidth(width);

public void prosesDeteksi() {

String jumlah_baris = jumlahBarisDeteksi.getText(); String path = pathTextField.getText();

if (nilaiMTF.getText().isEmpty() || dminTF.getText().isEmpty()) { if (nilaiMTF.getText().isEmpty()) { nilaiMTF.setBackground(Color.red); } if (dminTF.getText().isEmpty()) { dminTF.setBackground(Color.red); }

JOptionPane.showMessageDialog(null, "Nilai M atau dmin tidak boleh kosong! "); } else { if (!nilaiMTF.getText().isEmpty() && !dminTF.getText().isEmpty()) { if (nilaiMTF.getText().matches("[0-9.]*") || dminTF.getText().matches("[0-9.]*")) {

Double nilaiM = Double.parseDouble(nilaiMTF.getText()); Double nilaiD = Double.parseDouble(dminTF.getText()); TableModel tableModel = tableDeteksiOutlier.getModel(); int kolom = tableModel.getColumnCount();

int baris = tableModel.getRowCount(); List<Double> data_nilai = null;

String label = "";

Graph_IndexBased g = new Graph_IndexBased(baris); //insert vertex

for (int i = 0; i < baris; i++) {

data_nilai = new ArrayList<Double>(); for (int j = 0; j < kolom; j++) {

if (j == 0) { label = String.valueOf(tableModel.getValueAt(i, j)); } else { data_nilai.add(Double.parseDouble(tableModel.getValueAt(i, j).toString())); } } g.addVertex(label, data_nilai); } //insert edge

for (int i = 0; i < baris; i++) { for (int j = i + 1; j < baris; j++) { if (i != j) {

} } }

hasilDeteksiTextArea.setText(g.displayOutlier(nilaiM, nilaiD, jumlah_baris, tableDeteksiOutlier, path));

prosesButton.setEnabled(false); nilaiMTF.setText(null); dminTF.setText(null); nilaiMTF.requestFocus(); simpanFileButton.setEnabled(true); } } } }

public boolean cek_atribut_hapus(String atribut, List<String> hapus_atribut) {

boolean cek = false;

for (int i = 0; i < hapus_atribut.size(); i++) { if (hapus_atribut.get(i).equals(atribut)) { return cek = true;

} }

return cek; }

public boolean cek_atribut_kolom(String atribut, Vector kolom) { boolean cek = false;

for (int i = 0; i < kolom.size(); i++) { if (kolom.get(i).equals(atribut)) { return cek = true;

} }

return cek; }

public void hapusAtribut() {

TableModel model = dataPreprocessTable.getModel(); List<String> hapus_seleksi = new ArrayList<String>(); for (int i = 0; i < cb_table.getRowCount(); i++) { if (cb_table.getValueAt(i, 1).equals(true)) {

hapus_seleksi.add(cb_table.getValueAt(i, 0).toString()); }

}

int kolom = model.getColumnCount(); int baris = model.getRowCount(); Vector namaKolom = new Vector(); Vector isiData = new Vector();

if (!cek_atribut_hapus(cb_table.getValueAt(k, 0).toString(), hapus_seleksi)) {

namaKolom.addElement(cb_table.getValueAt(k, 0)); }

}

for (int a = 0; a < baris; a++) { Vector satu_baris = new Vector(); for (int b = 0; b < kolom; b++) {

if (cek_atribut_kolom(model.getColumnName(b).toString(), namaKolom)) { satu_baris.addElement(model.getValueAt(a, b)); } } isiData.addElement(satu_baris); }

DefaultTableModel model_baru = new DefaultTableModel(isiData, namaKolom);

dataPreprocessTable.setModel(model_baru);

if (!isiData.isEmpty() && !namaKolom.isEmpty()) { updateCellWidth(dataPreprocessTable); } dataPreprocessTable.setAutoCreateRowSorter(true); barisTextField.setText("" + isiData.size()); atributTextField.setText("" + namaKolom.size()); jumlahBarisDeteksi.setText(" " + isiData.size()); cb_table.removeRow(); if (namaKolom.isEmpty()) { barisTextField.setText(null); atributTextField.setText(null); jumlahBarisDeteksi.setText(null); submitDataButton.setEnabled(false); batalTandaiButton.setEnabled(false); tandaiSemuaButton.setEnabled(false); hapusButton.setEnabled(false); distribusiButton.setEnabled(false); pathTextField.setText(null); } seleksi_atribut.setPilih(false); }

public void tandaiSemuaAtribut() {

for (int i = 0; i < cb_table.getRowCount(); i++) { cb_table.setValueAt(true, i, 1);

} }

public void batalTandaiSemuaAtribut() {

cb_table.setValueAt(false, i, 1); }

}

public void simpanFile() {

JFileChooser fileChooser = new JFileChooser(new File("D:/")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word (*.doc)", "doc"));

fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents (*.txt)", "txt"));

FileOutputStream file_output_stream;

int returnValue = fileChooser.showSaveDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { String filename = fileChooser.getSelectedFile().getPath(); String extension = fileChooser.getFileFilter().getDescription(); File ff = new File(filename);

//buat file output stream

if (extension.equals("Microsoft Word (*.doc)")) { ff = new File(filename + ".doc");

} else if (extension.equals("Text Documents (*.txt)")) { ff = new File(filename + ".txt");

} try {

file_output_stream = new FileOutputStream(ff); } catch (FileNotFoundException fe) {

fe.printStackTrace(); return;

} try {

String hasil_text_area = hasilDeteksiTextArea.getText(); String[] potong_isi = hasil_text_area.split("\\n");

FileWriter outFile = new FileWriter(ff);

PrintWriter out = new PrintWriter(outFile, true); for (int i = 0; i < potong_isi.length; i++) { out.println("" + potong_isi[i].toString()); }

file_output_stream.close(); } catch (IOException ie) {

JOptionPane.showMessageDialog(this, "Penyimpanan asil Deteksi Outlier Gagal !");

}

JOptionPane.showMessageDialog(this, "Hasil Deteksi Outlier Telah Berhasil Disimpan di " + filename);

}

simpanFileButton.setEnabled(false); }

private javax.swing.JLabel DLabel; private javax.swing.JLabel MLabel;

private javax.swing.JTextField atributTextField; private javax.swing.JButton bantuanButton; private javax.swing.JTextField barisTextField; private javax.swing.JButton batalTandaiButton; private javax.swing.JTable dataPreprocessTable; private javax.swing.JPanel deteksiPanel;

private javax.swing.JButton distribusiButton; private javax.swing.JTextField dminTF; private javax.swing.JButton fileButton; private javax.swing.JButton hapusButton;

private javax.swing.JTextArea hasilDeteksiTextArea; private javax.swing.JLabel hasilLabel;

private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel judulLabel;

private javax.swing.JLabel jumlahAtributLabel; private javax.swing.JTextField jumlahBarisDeteksi; private javax.swing.JLabel jumlahDataLabel; private javax.swing.JLabel jumlahLabel; private javax.swing.JButton keluarButton; private javax.swing.JTextField nilaiMTF; private javax.swing.JLabel pathLabel;

private javax.swing.JTextField pathTextField; private javax.swing.JButton pilihDBButton; private javax.swing.JPanel preprocessPanel; private javax.swing.JButton prosesButton; private javax.swing.JLabel prosesLabel;

private javax.swing.JLabel seleksiAtributLabel; private javax.swing.JTable seleksiTable;

private javax.swing.JButton simpanFileButton; private javax.swing.JButton submitDataButton; private javax.swing.JLabel tabel2Label;

private javax.swing.JTable tableDeteksiOutlier; private javax.swing.JButton tandaiSemuaButton; }

Listing Program 5.6 Kelas HalamanUtama.java

Dokumen terkait