Бета версия

This commit is contained in:
2023-05-04 09:53:04 +06:00
parent a68593fb4d
commit af02be6a6d
10 changed files with 164 additions and 95 deletions

View File

@ -13,13 +13,19 @@ 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;
@ -38,9 +44,23 @@ public class NewJFrame extends javax.swing.JFrame
initComponents();
setTitle("GettextDB");
jTable1.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
try {
File file = new File("settings.ini");
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"));
@ -55,7 +75,7 @@ public class NewJFrame extends javax.swing.JFrame
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, pattern, check, type });
model.addRow(new Object[]{path, extensions, check, pattern, type });
System.out.print(path);
}
}
@ -89,10 +109,10 @@ public class NewJFrame extends javax.swing.JFrame
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();
jButton3 = new javax.swing.JButton();
jCheckBox1 = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
@ -107,7 +127,7 @@ public class NewJFrame extends javax.swing.JFrame
},
new String [] {
"Файл/Путь", "Расширения файлов", "Шаблон поиска", "Шаблон проверки", "ID типа слов"
"Файл/Путь", "Расширения файлов", "Название функции (", "Шаблон проверки", "ID типа слов"
}
) {
Class[] types = new Class [] {
@ -128,24 +148,23 @@ public class NewJFrame extends javax.swing.JFrame
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE)
);
jTabbedPane1.addTab("Настройки путей сканирования", jPanel2);
jLabel4.setText("Строка соединения");
jTFDBURL.setText("jdbc:postgresql://10.1.7.74:5432/pilot");
jLabel5.setText("Пользователь");
jTFDBUser.setText("translate");
jLabel6.setText("Пароль");
jTFDBPassword.setText("translate");
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);
@ -186,11 +205,24 @@ public class NewJFrame extends javax.swing.JFrame
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addContainerGap(36, Short.MAX_VALUE))
.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) {
@ -242,13 +274,6 @@ public class NewJFrame extends javax.swing.JFrame
}
});
jButton3.setText("Экспорт PO или XML файла");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jCheckBox1.setText("Экспортировать в базу при сканировании");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
@ -260,8 +285,7 @@ public class NewJFrame extends javax.swing.JFrame
.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()
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 298, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jCheckBox1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1))
@ -277,7 +301,6 @@ public class NewJFrame extends javax.swing.JFrame
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton3)
.addComponent(jCheckBox1))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
@ -285,7 +308,7 @@ public class NewJFrame extends javax.swing.JFrame
pack();
}// </editor-fold>//GEN-END:initComponents
private void parse(String rootDir,String extensions,String pattern,String check,String type)
private void parse(Connection conn, String rootDir, String extensions, String check, String pattern, String type)
{
// Просматриваем каталоги
FileFinder finder = new FileFinder();
@ -297,8 +320,7 @@ public class NewJFrame extends javax.swing.JFrame
//bufferedWriter.write("<?\n");
List searchRes = null;
//searchRes = finder.findAll(rootDir,"(.*\\.as$)||(.*\\.mxml$)||(.*\\.xml$)");
searchRes = finder.findAll(rootDir,"(.*\\.php$)||(.*\\.html$)||(.*\\.xml$)||(.*\\.js$)");
searchRes = finder.findAll(rootDir,extensions); // (.*\\.as$)||(.*\\.mxml$)||(.*\\.xml$)
//выводим результаты
for (int i = 0; i < searchRes.size(); i++)
@ -325,14 +347,14 @@ public class NewJFrame extends javax.swing.JFrame
int to=0;
while(true) //Если несколько значений в строке
{
int s=line.indexOf(pattern, from);
int s=line.indexOf(check, from);
if(s>=0)
{
from=s+pattern.length();
from=s+check.length();
to=line.indexOf(")", from);
//int e=-1;
//if(line.charAt(s+pattern.length()) == '"') { e=line.indexOf("\")", from); }
//if(line.charAt(s+pattern.length()) == '\'') { e = line.indexOf("')", from); }
//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);
@ -358,8 +380,18 @@ public class NewJFrame extends javax.swing.JFrame
}
if(text.length()>0){
if(text.matches("[0-9|a-z|A-Z|_]+")){
//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");
}
}
}else{
textArea1.append("NO VALUD = "+text+"\n");
}
@ -389,22 +421,25 @@ public class NewJFrame extends javax.swing.JFrame
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jButton1ActionPerformed
{//GEN-HEADEREND:event_jButton1ActionPerformed
//Подключаюсь к базе данных
String url = jTFDBURL.getText(); //"jdbc:postgresql://10.1.7.74:5432/pilot";
String user = jTFDBUser.getText(); //"translate";
String password = jTFDBUser.getText(); //"translate";
Connection conn = null;
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());
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<model.getRowCount();row++){
parse(
conn,
model.getValueAt(row,0).toString(),
model.getValueAt(row,1).toString(),
model.getValueAt(row,2).toString(),
@ -418,25 +453,32 @@ public class NewJFrame extends javax.swing.JFrame
private void jBSaveSettingsActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jBSaveSettingsActionPerformed
{//GEN-HEADEREND:event_jBSaveSettingsActionPerformed
jTable1.requestFocus();
try
{
Ini ini = new Ini(new File("settings.ini"));
ini.put("main", "db_url", jTFDBURL.getText());
ini.put("main", "db_user", jTFDBUser.getText());
ini.put("main", "db_password", jTFDBPassword.getText());
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
for(int row=0;row<model.getRowCount();row++){
ini.put("path"+row, "path", model.getValueAt(row,0).toString());
ini.put("path"+row, "extensions", model.getValueAt(row,1).toString());
ini.put("path"+row, "check", model.getValueAt(row,2).toString());
ini.put("path"+row, "pattern", model.getValueAt(row,3).toString());
String type = model.getValueAt(row,4).toString();
ini.put("path"+row, "type", type);
}
ini.store();
} catch (IOException ex)
{
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_jBSaveSettingsActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
new AssemblyJFrame().setVisible(true);
}//GEN-LAST:event_jButton3ActionPerformed
private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
@ -444,6 +486,29 @@ public class NewJFrame extends javax.swing.JFrame
}//GEN-LAST:event_formWindowActivated
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
String text = "";
//Подключаюсь к базе данных
String url = jTFDBURL.getText(); //"jdbc:postgresql://10.1.7.74:5432/pilot";
String user = jTFDBUser.getText(); //"translate";
String password = jTFDBUser.getText(); //"translate";
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, user, password);
}catch(ClassNotFoundException | SQLException e){
text = e.getMessage();
}
if(conn==null){
JOptionPane.showMessageDialog(null, "Ошибка: " +text);
}else{
JOptionPane.showMessageDialog(null, "Успех");
}
}//GEN-LAST:event_jButton5ActionPerformed
/**
* @param args the command line arguments
*/
@ -491,12 +556,12 @@ public class NewJFrame extends javax.swing.JFrame
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jBSaveSettings;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton3;
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;