/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package potoxml; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.io.StringReader; import java.net.URISyntaxException; import java.net.URLDecoder; import java.security.CodeSource; import java.util.List; import java.util.Stack; import java.util.logging.Level; import java.util.logging.Logger; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import org.ini4j.Ini; /** * * @author ivanov.i */ public class NewJFrame extends javax.swing.JFrame { /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); setTitle("GettextDB"); jTable1.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); try { String jarDir=""; CodeSource codeSource = NewJFrame.class.getProtectionDomain().getCodeSource(); File jarFile=null; try { jarFile = new File(codeSource.getLocation().toURI().getPath()); } catch (URISyntaxException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); } if(jarFile!=null){ jarDir = jarFile.getParentFile().getPath()+"\\"; } textArea1.append("JAR file path: " + jarDir + "\n"); File file = new File(jarDir + "settings.ini"); if(file.exists()){ Ini ini = new Ini(file); jTFDBURL.setText(ini.get("main", "db_url")); jTFDBUser.setText(ini.get("main", "db_user")); jTFDBPassword.setText(ini.get("main", "db_password")); DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); for(int i=0;i<100;i++){ if(ini.get("path"+i)!=null){ String path = ini.get("path"+i, "path"); String check = ini.get("path"+i, "check"); String extensions = ini.get("path"+i, "extensions"); String pattern = ini.get("path"+i, "pattern"); String type = ini.get("path"+i, "type"); model.addRow(new Object[]{path, extensions, check, pattern, type }); System.out.print(path); } } //ini.store(); } } catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); } } /** * 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") // //GEN-BEGIN:initComponents private void initComponents() { jPanel4 = new javax.swing.JPanel(); jPanel5 = new javax.swing.JPanel(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel3 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); jTFDBURL = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jTFDBUser = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); jTFDBPassword = new javax.swing.JTextField(); jButton5 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jBSaveSettings = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); textArea1 = new java.awt.TextArea(); jCheckBox1 = new javax.swing.JCheckBox(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowActivated(java.awt.event.WindowEvent evt) { formWindowActivated(evt); } }); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Файл/Путь", "Расширения файлов", "Название функции (", "Шаблон проверки", "ID типа слов" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } }); jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 915, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE) ); jTabbedPane1.addTab("Настройки путей сканирования", jPanel2); jLabel4.setText("Строка соединения"); jLabel5.setText("Пользователь"); jLabel6.setText("Пароль"); 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) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTFDBPassword) .addComponent(jTFDBUser) .addComponent(jTFDBURL, javax.swing.GroupLayout.DEFAULT_SIZE, 790, Short.MAX_VALUE))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jButton5))) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTFDBURL, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTFDBUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTFDBPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton5) .addContainerGap(66, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Настройки соединения с базой", jPanel3); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 915, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 179, Short.MAX_VALUE) ); jTabbedPane1.addTab("Настройки экспорта PO или XML файлов", jPanel1); jBSaveSettings.setText("Сохранить настройки"); jBSaveSettings.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBSaveSettingsActionPerformed(evt); } }); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1) .addGroup(jPanel5Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jBSaveSettings))) .addContainerGap()) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addComponent(jTabbedPane1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBSaveSettings) .addContainerGap()) ); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); jButton1.setText("Сканировать"); jButton1.setName(""); // NOI18N jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jCheckBox1.setText("Экспортировать в базу при сканировании"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(textArea1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jCheckBox1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1)) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textArea1, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1) .addComponent(jCheckBox1)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// //GEN-END:initComponents private void parse(Connection conn, String rootDir, String extensions, String check, String pattern, String type) { // Просматриваем каталоги FileFinder finder = new FileFinder(); try { // Буферный файл для записи идентификаторов //FileWriter fileWriter = new FileWriter(file); //BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); //bufferedWriter.write("=0) { from=s+check.length(); String bracket=")"; if(check.charAt(check.length() - 1)=='[') bracket="]"; //Если открывающая скобка квадратная to=line.indexOf(bracket, from); //int e=-1; //if(line.charAt(s+check.length()) == '"') { e=line.indexOf("\")", from); } //if(line.charAt(s+check.length()) == '\'') { e = line.indexOf("')", from); } if(to>=0) { String text = line.substring(from, to); if(text.indexOf("\"")>=0){ //Если строка с " int pos1 = text.indexOf("\""); int pos2 = text.indexOf("\"",pos1+1); if(pos2>pos1+1){ text = text.substring(pos1+1, pos2); }else{ text=""; } } else if(text.indexOf("'")>=0){ //Если строка с ' int pos1 = text.indexOf("'"); int pos2 = text.indexOf("'",pos1+1); if(pos2>pos1+1){ text = text.substring(pos1+1, pos2); }else{ text=""; } }else{ text=""; } if(text.length()>0){ //if(text.matches("[0-9|a-z|A-Z|_]+")){ if(text.matches(pattern)){ textArea1.append(text+"\n"); //Обновляю в базе if(conn!=null){ try (Statement stmt = conn.createStatement()) { ResultSet rs = stmt.executeQuery("select main._update_translation_identifier('"+text+"',"+type+");"); } catch (SQLException e) { textArea1.append("Error write to DB\n "+e.getMessage()); } } }else{ textArea1.append("NO VALUD = "+text+"\n"); } } from+=to-from; } from+=1; }else { break; } //line=line.substring(to); //Остатки строки на обработку } } bufferedReader.close(); } } //System.out.println("Найдено " + finder.getFilesNumber() + " файлов и " + finder.getDirectoriesNumber() + " папок."); textArea1.append("Найдено " + finder.getFilesNumber() + " файлов и " + finder.getDirectoriesNumber() + " папок.\n"); //bufferedWriter.write("?>\n"); //bufferedWriter.close(); } catch (Exception err) { System.out.println(err.getMessage()); } } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jButton1ActionPerformed {//GEN-HEADEREND:event_jButton1ActionPerformed //Подключаюсь к базе данных Connection conn = null; if(jCheckBox1.isSelected()){ String url = jTFDBURL.getText(); //"jdbc:postgresql://10.1.7.74:5432/pilot"; String user = jTFDBUser.getText(); //"translate"; String password = jTFDBUser.getText(); //"translate"; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); System.out.println("Connected to the PostgreSQL server successfully."); }catch(ClassNotFoundException | SQLException e){ System.out.println(e.getMessage()); } } //Перебираю значения таблицы и пускаю на сканирование каждое поле DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); for(int row=0;row /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ 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(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jBSaveSettings; private javax.swing.JButton jButton1; private javax.swing.JButton jButton5; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTFDBPassword; private javax.swing.JTextField jTFDBURL; private javax.swing.JTextField jTFDBUser; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTable jTable1; private java.awt.TextArea textArea1; // End of variables declaration//GEN-END:variables }