• Tidak ada hasil yang ditemukan

Analisis Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (Flbe) Dengan Algoritma Sequitur Dalam Kompresi File Teks

N/A
N/A
Protected

Academic year: 2019

Membagikan "Analisis Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (Flbe) Dengan Algoritma Sequitur Dalam Kompresi File Teks"

Copied!
28
0
0

Teks penuh

(1)

LAMPIRAN A:LISTING PROGRAM

ProgramSkripsi

package program.skripsi;

/**

*

* @author Yosef

*/

public class ProgramSkripsi {

/**

* @param args the command line arguments

*/

public static void main (String args[]){

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Compression.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Compression.class.getName()).log(java.util.loggin

(2)

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Compression.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Compression.class.getName()).log(java.util.loggin

g.Level.SEVERE, null, ex);

}

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Program().setVisible(true);

}

});}}

Algorithms Class

package program.skripsi;

import java.util.*;

/**

*

* @author Yosef

*/

public class algorithms {

public static void CharinString(String text, List character, List freq){

char[] chars = text.toCharArray();

int count = 0;

for (char c : chars) {

if(character.contains(c)==false){

character.add(c); count = 1;

freq.add(count);

(3)

else{

count = Integer.parseInt(freq.get(character.indexOf(c)).toString())+ 1;

freq.set(character.indexOf(c), count);

}

}

}

public static String paddingandflagging(int n){

StringBuffer padflag = new StringBuffer();

String pad = "";

int x = 8 - (n%8);

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

pad +="0";

}

String dec = Integer.toBinaryString(pad.length());

String flag="";

int y = 8 - dec.length();

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

flag +="0";

}

padflag.append(pad+flag+dec);

System.out.println("padd "+pad);

return padflag.toString();

}

public static String Encode(String bitstring){

StringBuffer str = new StringBuffer();

for(int i=0; i<bitstring.length(); i+=8){

String s = bitstring.substring(i, i+8);

char c = (char) (Integer.parseInt(s, 2)); str.append(c);

}

(4)

}

Compression

package program.skripsi;

import java.beans.PropertyChangeEvent;

import java.util.*;

import java.io.*;

import java.util.Map.Entry;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;

import javax.swing.filechooser.FileNameExtensionFilter;

import org.apache.poi.extractor.ExtractorFactory;

import org.apache.poi.hwpf.extractor.WordExtractor;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import org.apache.poi.openxml4j.exceptions.OpenXML4JException;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import org.apache.xmlbeans.XmlException;

/**

*

* @author Yosef

*/

public class Compression extends javax.swing.JInternalFrame {

List character = new ArrayList();

List frequency = new ArrayList();

Map<String,String> rule = new HashMap();

String text;

File file;

File file1;

JFileChooser openfile = new JFileChooser();

JFileChooser savefile = new JFileChooser();

(5)

String[] code ;

String[] paragraph;

String algorithm;

String bitstr="";

String ekstfile;

String writestr;

int uncompressed_bits;

int compressed_bits;

Long totaltime;

int n=0;

/**

* Creates new form Compression

*/

public Compression() {

openfile.setAcceptAllFileFilterUsed(false);

openfile.addChoosableFileFilter(new FileNameExtensionFilter("TXT Document

(*.txt)", "txt"));

openfile.addChoosableFileFilter(new FileNameExtensionFilter("WORD

Document (*.doc)","doc"));

openfile.addChoosableFileFilter(new FileNameExtensionFilter("All Files

(*.txt,*.doc)","doc", "txt"));

initComponents();

}

/**

* 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">

(6)

jPanel1 = new javax.swing.JPanel();

jButton1 = new javax.swing.JButton();

jPanel2 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jScrollPane4 = new javax.swing.JScrollPane();

jTextArea2 = new javax.swing.JTextArea();

jScrollPane5 = new javax.swing.JScrollPane();

jTextArea1 = new javax.swing.JTextArea();

jPanel3 = new javax.swing.JPanel();

jTextField1 = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jTextField2 = new javax.swing.JTextField();

jButton3 = new javax.swing.JButton();

jButton5 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

jButton4 = new javax.swing.JButton();

jRadioButton1 = new javax.swing.JRadioButton();

jRadioButton2 = new javax.swing.JRadioButton();

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null,

"COMPRESSION", javax.swing.border.TitledBorder.CENTER,

javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Agency

FB", 1, 36))); // NOI18N

jButton1.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jButton1.setText("Compress");

jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

(7)

});

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null,

"RESULT", javax.swing.border.TitledBorder.LEFT,

javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Agency

FB", 0, 18))); // NOI18N

jLabel3.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel3.setText("FLBE");

jLabel4.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel4.setText("SEQUITUR");

jTextArea2.setColumns(20);

jTextArea2.setRows(5);

jScrollPane4.setViewportView(jTextArea2);

jTextArea1.setColumns(20);

jTextArea1.setRows(5);

jScrollPane5.setViewportView(jTextArea1);

javax.swing.GroupLayout jPanel2Layout = new

javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addGap(33, 33, 33)

.addComponent(jScrollPane5,

javax.swing.GroupLayout.PREFERRED_SIZE, 286,

(8)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62,

Short.MAX_VALUE)

.addComponent(jScrollPane4,

javax.swing.GroupLayout.PREFERRED_SIZE, 285,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(20, 20, 20))

.addGroup(jPanel2Layout.createSequentialGroup()

.addGap(158, 158, 158)

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel4)

.addGap(139, 139, 139))

);

jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jLabel3,

javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(jLabel4,

javax.swing.GroupLayout.Alignment.TRAILING))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

(9)

.addComponent(jScrollPane5,

javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short.MAX_VALUE)

.addComponent(jScrollPane4))

.addContainerGap())

);

jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jTextField1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jTextField1ActionPerformed(evt);

}

});

jLabel1.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel1.setText("Choose File:");

jLabel2.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel2.setText("Save As:");

jButton3.setText("..");

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3ActionPerformed(evt);

}

});

jButton5.setText("..");

jButton5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt);

}

(10)

javax.swing.GroupLayout jPanel3Layout = new

javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jLabel1)

.addComponent(jLabel2))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addComponent(jTextField2,

javax.swing.GroupLayout.PREFERRED_SIZE, 206,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton5,

javax.swing.GroupLayout.PREFERRED_SIZE, 23,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel3Layout.createSequentialGroup()

.addComponent(jTextField1,

javax.swing.GroupLayout.PREFERRED_SIZE, 206,

(11)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton3,

javax.swing.GroupLayout.PREFERRED_SIZE, 23,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(28, Short.MAX_VALUE))

);

jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

BASELINE)

.addComponent(jTextField1,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel1)

.addComponent(jButton3))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

BASELINE)

.addComponent(jTextField2,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)

.addComponent(jButton5))

(12)

);

jButton2.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jButton2.setText("Clear");

jButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt);

}

});

jButton4.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jButton4.setText("Close");

jButton4.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton4ActionPerformed(evt);

}

});

jRadioButton1.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jRadioButton1.setText("FLBE");

jRadioButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton1ActionPerformed(evt);

}

});

jRadioButton2.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jRadioButton2.setText("SEQUITUR");

jRadioButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jRadioButton2ActionPerformed(evt);

}

(13)

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jPanel2,

javax.swing.GroupLayout.Alignment.TRAILING,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(34, 34, 34)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jRadioButton2)

.addComponent(jRadioButton1))

.addGap(65, 65, 65)

.addComponent(jPanel3,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(232, 232, 232) .addComponent(jButton1)

(14)

.addComponent(jButton2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton4)))

.addGap(4, 4, 4))

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jRadioButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jRadioButton2)))

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

BASELINE)

.addComponent(jButton1)

.addComponent(jButton2)

.addComponent(jButton4))

.addGap(5, 5, 5)

.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

(15)

.addContainerGap(26, Short.MAX_VALUE))

);

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addContainerGap()

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addContainerGap())

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(37, Short.MAX_VALUE))

);

pack();

}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here: if(algorithm==null){

JOptionPane.showMessageDialog(rootPane,"Please Choose your algorithm

(16)

}

else

if(jTextField1.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"No Input File

Found!","Error",JOptionPane.WARNING_MESSAGE);

}

else

if(jTextField2.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"Please Set Directory For Output

File !","Error",JOptionPane.WARNING_MESSAGE);

}

else{

try{

Long starttime = System.currentTimeMillis();

// int s = 0;

// jProgressBar1.setValue(s);

algorithms alg = new algorithms();

if(algorithm=="flbe"){

alg.CharinString(content.toString(),character,frequency); n = character.size();

code = alg.flb(n);

for(int i=0;i<content.toString().length();i++){

bitstr += code[character.indexOf(content.toString().charAt(i))];

}

String padflag="";

padflag= alg.paddingandflagging(bitstr.length());

bitstr +=padflag;

writestr = alg.Encode(bitstr);

System.out.println("Panjang Bit String Sebelum Encode

(17)

System.out.println("panjang Bit string Setelah encode

"+writestr.length()+" Byte");

if(jTextField1.getText().toLowerCase().endsWith(".txt")){

ekstfile =".txt.flb";

}

else if(jTextField1.getText().toLowerCase().endsWith(".doc")){

ekstfile =".doc.flb";

}

}

else if(algorithm=="sequitur"){

alg.Sqrprocess(content.toString());

alg.Sequitur(content.toString(),rule);

writestr = alg.Sqrprocess(content.toString());

bitstr = alg.Decode(writestr);

System.out.println("Panjang Bit String Sebelum Encode

"+bitstr.length()+" bit");

System.out.println("panjang bit string Setelah encode

"+writestr.length()+" Byte");

if(jTextField1.getText().toLowerCase().endsWith(".txt")){

ekstfile =".txt.sqr";

}

else if(jTextField1.getText().toLowerCase().endsWith(".doc")){

ekstfile =".doc.sqr";

}

}

File compressedfile = new File(file1.getAbsolutePath().toString()+ekstfile);

try (FileWriter fw = new FileWriter(compressedfile)) {

System.out.print(fw.getEncoding());

fw.write(writestr); fw.flush();

fw.close();

(18)

if(algorithm=="flbe"){

FileOutputStream fos = new

FileOutputStream(file1.getAbsoluteFile().toString()+ekstfile+".h");

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(character);

oos.writeObject(code);

oos.close();

}

else if(algorithm=="sequitur"){

FileOutputStream fos = new

FileOutputStream(file1.getAbsoluteFile().toString()+ekstfile+".h");

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(rule);

oos.close();

}

Long endtime = System.currentTimeMillis();

totaltime = endtime - starttime;

}}

catch (IOException ex) {

JOptionPane.showMessageDialog(null, ex.toString(), "Error",

JOptionPane.ERROR);

}

compressed_bits = bitstr.length();

System.out.print("compressed size="+compressed_bits+" bit");

double RC = (double)uncompressed_bits/compressed_bits;

double CR = (double)compressed_bits/uncompressed_bits *100;

double RD = (double)100-CR;

Decompression

package program.skripsi;

(19)

import java.util.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;

import javax.swing.filechooser.FileNameExtensionFilter;

import org.apache.poi.extractor.ExtractorFactory;

import org.apache.poi.hwpf.HWPFDocument;

import org.apache.poi.hwpf.extractor.WordExtractor;

/*

* 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.

*/

/**

*

* @author Yosef

*/

public class Decompression extends javax.swing.JInternalFrame { List character = new ArrayList();

List frequency = new ArrayList();

List flbecode = new ArrayList();

Map<String,String> rule = new HashMap<>();

// String text;

File file;

File file1;

JFileChooser openfile = new JFileChooser();

JFileChooser savefile = new JFileChooser();

StringBuffer content = new StringBuffer();

(20)

FileNameExtensionFilter filter1 = new FileNameExtensionFilter("FLBE File

(*.flb)","flb");

FileNameExtensionFilter filter2 = new FileNameExtensionFilter("Sequitur File

(*.sqr)","sqr");

FileNameExtensionFilter text = new FileNameExtensionFilter("TEXT Document",

"txt");

FileNameExtensionFilter word = new FileNameExtensionFilter("WORD

Document","doc");

int text_bits;

String[] code ;

String[] paragraph;

String algorithm;

String bitstr="";

String dstr="";

String ekstfile;

// String writestr;

int uncompressed_bits;

int compressed_bits;

Long totaltime,endtime,starttime;

int n=0;

/**

* Creates new form Decompression

*/

public Decompression() {

initComponents();

}

/**

* 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.

(21)

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel7 = new javax.swing.JPanel();

jButton3 = new javax.swing.JButton();

jPanel5 = new javax.swing.JPanel();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jScrollPane8 = new javax.swing.JScrollPane();

jTextArea2 = new javax.swing.JTextArea();

jScrollPane9 = new javax.swing.JScrollPane();

jTextArea1 = new javax.swing.JTextArea();

jPanel6 = new javax.swing.JPanel();

jTextField1 = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jButton4 = new javax.swing.JButton();

jLabel2 = new javax.swing.JLabel();

jTextField3 = new javax.swing.JTextField();

jButton8 = new javax.swing.JButton();

jButton5 = new javax.swing.JButton();

jButton7 = new javax.swing.JButton();

jRadioButton1 = new javax.swing.JRadioButton();

jRadioButton2 = new javax.swing.JRadioButton();

jTextField2 = new javax.swing.JTextField();

jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(null,

"DECOMPRESSION", javax.swing.border.TitledBorder.CENTER,

javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Agency

FB", 1, 36))); // NOI18N

jButton3.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

(22)

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3jButton1ActionPerformed(evt);

}

});

jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null,

"RESULT", javax.swing.border.TitledBorder.LEFT,

javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Agency

FB", 0, 18))); // NOI18N

jLabel7.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel7.setText("FLBE");

jLabel8.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel8.setText("SEQUITUR");

jTextArea2.setColumns(20);

jTextArea2.setRows(5);

jScrollPane8.setViewportView(jTextArea2);

jTextArea1.setColumns(20);

jTextArea1.setRows(5);

jScrollPane9.setViewportView(jTextArea1);

javax.swing.GroupLayout jPanel5Layout = new

javax.swing.GroupLayout(jPanel5);

jPanel5.setLayout(jPanel5Layout);

jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel5Layout.createSequentialGroup()

(23)

.addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE,

289, Short.MAX_VALUE)

.addGap(68, 68, 68)

.addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE,

290, Short.MAX_VALUE)

.addGap(20, 20, 20))

.addGroup(jPanel5Layout.createSequentialGroup()

.addGap(158, 158, 158)

.addComponent(jLabel7)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel8)

.addGap(139, 139, 139))

);

jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel5Layout.createSequentialGroup()

.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

LEADING)

.addComponent(jLabel7,

javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(jLabel8,

javax.swing.GroupLayout.Alignment.TRAILING))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.

(24)

.addComponent(jScrollPane8,

javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)

.addComponent(jScrollPane9))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jTextField1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jTextField1ActionPerformed(evt);

}

});

jLabel1.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel1.setText("Open (*.flb or *.sqr)");

jButton4.setText("..");

jButton4.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton4jButton3ActionPerformed(evt);

}

});

jLabel2.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N

jLabel2.setText("Save As:");

jTextField3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField3ActionPerformed(evt);

}

(25)

jButton8.setText("..");

jButton8.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton8jButton5ActionPerformed(evt);

}

});

private void jButton3jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

if(algorithm==null){

JOptionPane.showMessageDialog(rootPane,"Please choose your algorithm

first!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField1.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"No Input File

Found!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField2.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"No Header File (*.h)

Found!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField3.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"Please Set Directory For Output

File !","Error",JOptionPane.WARNING_MESSAGE);

}

else {

starttime = System.currentTimeMillis();

algorithms alg = new algorithms();

bitstr = alg.Decode(content.toString());

if(algorithm=="flbe"){

dstr=alg.flbedecompress(bitstr,flbecode,character);

}

(26)

dstr=alg.sqrdecompress(content.toString(),rule);

}

String namafile = jTextField1.getText().toLowerCase();

if(namafile.substring(namafile.length()-8, namafile.length()-4).equals(".txt")){

File newTextFile = new File(file1.getAbsolutePath().toString()+".txt");

try (FileWriter fw = new FileWriter(newTextFile)) {

fw.write(dstr);

fw.flush();

fw.close();

endtime = System.currentTimeMillis();

}

catch (IOException ex) {

JOptionPane.showMessageDialog(null, ex.toString(), "Error",

JOptionPane.ERROR);

}

}

else if(namafile.substring(namafile.length()-8,

namafile.length()-4).equals(".doc")){

try{

InputStream systemResource =

ClassLoader.getSystemResourceAsStream("program/skripsi/template.doc");

POIFSFileSystem poi = new POIFSFileSystem(systemResource);

HWPFDocument doc = new HWPFDocument(poi);

Range range = doc.getRange();

StringBuilder bucket = new StringBuilder();

bucket.append(dstr);

range.insertBefore(bucket.toString());

bucket = null;

FileOutputStream fos = new

FileOutputStream(file1.getAbsolutePath().toString()+".doc");

(27)

fos.close();

fos=null;

endtime = System.currentTimeMillis();

}

catch(IOException ex){

JOptionPane.showMessageDialog(null, ex.toString(), "Error",

JOptionPane.ERROR);

}

}

uncompressed_bits = dstr.length()*8;

double completeness = (double)uncompressed_bits/(double)text_bits * 100;

Long totaltime = endtime- starttime;

if(algorithm == "flbe"){

jTextArea1.append("---\n"

+"Decompression Time: "+totaltime+" ms\n"

+"Completeness: "+completeness+" %\n"

+"---\n\n");

}

else{

jTextArea2.append("---\n"

+"Decompression Time: "+totaltime+" ms\n"

+"Completeness: "+completeness+" %\n"

+"---\n\n");

(28)

LAMPIRAN B: CURRICULUM VITAE

DATA PRIBADI

Nama : Pahara Siagian

Tempat / Tgl lahir : Bagansiapiapi/ 27 Juli 1991

Jenis Kelamin : Laki-laki

Umur : 23 Tahun

Tinggi, Berat Badan : 167 cm, 67 Kg

Agama : Katolik

Alamat : Jl. Teh 1 no. 25 A

Status : Belum Menikah

No. Telepon : 0852610100075

Email : [email protected]

PENDIDIKAN

Formal

- SD Bintang Laut Bagansiapiapi ( 1997-2003 )

- SMP Bintang Laut Bagansiapiapi ( 2003-2006 )

- SMA Advent Siantar ( 2006-2009 )

- D3 Manajemen Informatika

Politeknik Unggul LP3M Medan ( 2009-2011 )

Hormat Saya

Referensi

Dokumen terkait

* To change this template file, choose Tools | Templates * and open the template in the

* To change this license header, choose License Headers in Project Properties.. * To change this template file, choose Tools

Kondisi lingkungan yang panas dapat menyebabkan cekaman pada tubuh sapi potong yang salah satunya akan berdampak pada peningkatan suhu rektal, frekuensi pernapasan, denyut

Kira-kira begitulah cara perhitungan rangka atap baja ringan yang bisa di gunakan sebagai referensi untuk anda yang ingin menggunakan pemasangan rangka atap baja ringan. Sekali

dahulu  sehingga  memudahkan  para  cendekiawan untuk mencarikan pengobatannya  dan  pemberantasannya,  akan  tetapi  bagaimanapun  juga  dengan 

Perilaku permintaan konsumen terhadap barang dan jasa akan dipengaruhi oleh beberapa faktor, diantaranya: pendapatan, selera konsumen, dan harga barang, disaat

UPAYA PENEGAKAN HUKUM APARAT KEPOLISIAN DALAM TINDAK PIDANA PERDAGANGAN..

Penelitian ini bertujuan mendeskripsikan penerapan model pembelajaran Problem-Based Learning berbantuan media Flipchart pada materi penyajian dan pengolahan data