Aplikasi Java Mencari dan Merubah Kode dalam Banyak File


Dalam membangun website dengan PHP dari nol, adakalanya diperlukan penggantian syntax yang sama dalam beberapa file.

Misalnya untuk keperluan authentifikasi admin, yang semula menggunakan variable id harus sama dengan 1, karena pertimbangan keamanan, authentifikasinya harus diubah menjadi suatu kode tertentu yang disematkan dalam tiap halaman.

Contohnya diganti dengan kode 'A2136578', sebagaimana Gambar di atas.

Jika filenya cuma satu, mungkin tidak apa-apa dengan mengeditnya langsung, tidak butuh usaha yang tinggi. Namun jika jumlah file yang perlu diedit telah banyak, akan membutuhkan waktu dan kejelian editing yang lumayan memakan waktu.

Salah satu solusinya adalah dengan membuat aplikasi dekstop, yang dapat dijalankan secara offline, untuk mencari kode yang lama dalam file, lalu mengganti (replace) ke kode yang baru.

Pilihan penulis adalah membuat aplikasi dekstopnya menggunakan Java.

Selain karena Java bersifat free, kode aplikasinya cukup singkat seperti ditunjukkan kode di bawah ini:
package findreplace; 
 
import java.awt.Component; 
import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ComponentAdapter; 
import java.awt.event.ComponentEvent; 
import java.io.File; 
import java.io.IOException; 
import java.nio.charset.Charset; 
import java.nio.charset.StandardCharsets; 
import java.nio.file.Files; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
 
/** 
 * 
 * @author Edugameapp 
 */ 
public class FindReplace extends JFrame 
{ 
    JTextField text1=new JTextField(""); 
    JTextField text2=new JTextField(""); 
    JTextArea text3=new JTextArea(10, 50); 

    private void working() 
    { 
        if(text1.getText().isEmpty()){ 
            text3.setText("Source is empty!"); 
            return; 
        } 
        text3.setText(""); 
        String currentDir = System.getProperty("user.dir"); 
        text3.append(currentDir+"\n"); 

        File f = new File(currentDir); 
        File[] pathnames = f.listFiles(); 
        for (File pathname : pathnames) { 
            if(!pathname.isDirectory()){ 
                text3.append(pathname.getName()); 
                Charset charset = StandardCharsets.UTF_8; 
 
                String content; 
                try { 
                    content = new String(Files.readAllBytes(pathname.toPath()), charset); 
                    if(content.contains(text1.getText())){ 
                        text3.append(" -> Found"); 
                        content = content.replace(text1.getText(),text2.getText()); 
                        Files.write(pathname.toPath(),content.getBytes(charset)); 
                    } 
                    text3.append("\n"); 
                } catch (IOException ex) { 
                    text3.append(ex.toString()+"\n"); 
                } 
            } 
        } 
    } 

    public void init() 
    { 
        setTitle("Find and Replace"); 
        JPanel panel = new JPanel(); 
        GridBagConstraints c = new GridBagConstraints(); 
        c.fill = GridBagConstraints.BOTH; 
        c.weightx = 1.0; 
        c.weighty = 0.0; 
        panel.setLayout(new GridBagLayout()); 
        JLabel label = new JLabel("source"); 
        c.gridx = 0; 
        c.gridy = 0; 
        panel.add(label,c); 
        c.gridy++; 
        panel.add(text1,c); 
        label = new JLabel("replace"); 
        c.gridy++; 
        panel.add(label,c); 
        c.gridy++; 
        panel.add(text2,c); 
        JButton button = new JButton(); 
        button.setText("Button"); 
        button.addActionListener(new ActionListener(){ 
            public void actionPerformed(ActionEvent e) { 
                new Thread(new Runnable() { 
                    @Override 
                    public void run() { 
                       working(); 
                    } 
                }).start(); 
            } 
        }); 
        c.gridy++; 
        JPanel subpanel=new JPanel(); 
        subpanel.add(button); 
        panel.add(subpanel,c); 
        c.weighty=1.0; 
        c.gridy++; 
        text3.setLineWrap(true); 
        text3.setWrapStyleWord(true); 
        JScrollPane scroll = new JScrollPane (text3,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
        panel.add(scroll,c); 
        add(panel); 
        addComponentListener(new ComponentAdapter() 
        { 
            public void componentResized(ComponentEvent evt) { 
                Component c = (Component)evt.getSource(); 
                validate(); 
            } 
        }); 
        setSize(400, 200); 
        panel.setMinimumSize(new Dimension(400, 200)); 
        setLocationRelativeTo(null); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        pack(); 
        setVisible(true); 
    } 

    public static void main(String[] args) { 
        FindReplace main=new FindReplace(); 
        main.init(); 
    } 

} 
Gambar paling atas adalah tampilan JFrame kode di atas.

Dimana cara kerjanya adalah aplikasi 'Find and Replace' akan mencari kode source dalam file-file yang terdapat dalam satu folder tersebut. Lalu jika ditemukan, aplikasi akan melakukan penggantian dengan kode replace-nya.

Contoh penggunaan aplikasi Java di atas, adalah seperti video di bawah ini:


Catatan:
Seharusnya fungsi intval pada kode replace tidak digunakan.

Komentar



Postingan populer dari blog ini

Kumpulan Source Code Greenfoot

Game TicTacToe dengan Greenfoot

Algorithma Coretan Abstrak dengan HTML5 Canvas

Cara Membuat Halaman HTML Sederhana

Honeycomb Style Wallpaper dengan HTML5 Canvas

Ganti Kartu ATM BNI yang Rusak

Mencoba Submit Theme di Wordpress.org

Cara Menentukan Arah Kiblat Menggunakan Google Maps

Selamatan Latar Glundengan Bubuk Banyuwangi

Kode Greenfoot Game Snake Sederhana