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
} 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);
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);
}
}
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();
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">
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);
});
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,
.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.
.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);
}
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,
.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))
);
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);
}
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)
.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,
.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
}
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
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();
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;
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();
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.
@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
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()
.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.
.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);
}
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);
}
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");
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");
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