Бета версия

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

@ -31,8 +31,7 @@
<Group type="103" groupAlignment="0" attributes="0">
<Component id="textArea1" alignment="0" max="32767" attributes="0"/>
<Group type="102" alignment="1" attributes="0">
<Component id="jButton3" min="-2" pref="298" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
<Component id="jCheckBox1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jButton1" min="-2" max="-2" attributes="0"/>
@ -52,7 +51,6 @@
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jButton3" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jCheckBox1" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
@ -131,7 +129,7 @@
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="149" max="32767" attributes="0"/>
<Component id="jScrollPane1" alignment="0" pref="179" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
@ -149,7 +147,7 @@
<Table columnCount="5" rowCount="0">
<Column editable="true" title="&#x424;&#x430;&#x439;&#x43b;/&#x41f;&#x443;&#x442;&#x44c;" type="java.lang.String"/>
<Column editable="true" title="&#x420;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43d;&#x438;&#x44f; &#x444;&#x430;&#x439;&#x43b;&#x43e;&#x432;" type="java.lang.String"/>
<Column editable="true" title="&#x428;&#x430;&#x431;&#x43b;&#x43e;&#x43d; &#x43f;&#x43e;&#x438;&#x441;&#x43a;&#x430;" type="java.lang.String"/>
<Column editable="true" title="&#x41d;&#x430;&#x437;&#x432;&#x430;&#x43d;&#x438;&#x435; &#x444;&#x443;&#x43d;&#x43a;&#x446;&#x438;&#x438; (" type="java.lang.String"/>
<Column editable="true" title="&#x428;&#x430;&#x431;&#x43b;&#x43e;&#x43d; &#x43f;&#x440;&#x43e;&#x432;&#x435;&#x440;&#x43a;&#x438;" type="java.lang.String"/>
<Column editable="true" title="ID &#x442;&#x438;&#x43f;&#x430; &#x441;&#x43b;&#x43e;&#x432;" type="java.lang.Integer"/>
</Table>
@ -217,7 +215,7 @@
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jButton5" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="36" max="32767" attributes="0"/>
<EmptySpace pref="66" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -229,9 +227,6 @@
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="jTFDBURL">
<Properties>
<Property name="text" type="java.lang.String" value="jdbc:postgresql://10.1.7.74:5432/pilot"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
@ -239,9 +234,6 @@
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="jTFDBUser">
<Properties>
<Property name="text" type="java.lang.String" value="translate"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
@ -249,17 +241,39 @@
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="jTFDBPassword">
<Properties>
<Property name="text" type="java.lang.String" value="translate"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="jButton5">
<Properties>
<Property name="text" type="java.lang.String" value="&#x41f;&#x440;&#x43e;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44c; &#x441;&#x43e;&#x435;&#x434;&#x438;&#x43d;&#x435;&#x43d;&#x438;&#x435;"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton5ActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="&#x41d;&#x430;&#x441;&#x442;&#x440;&#x43e;&#x439;&#x43a;&#x438; &#x44d;&#x43a;&#x441;&#x43f;&#x43e;&#x440;&#x442;&#x430; PO &#x438;&#x43b;&#x438; XML &#x444;&#x430;&#x439;&#x43b;&#x43e;&#x432;">
<Property name="tabTitle" type="java.lang.String" value="&#x41d;&#x430;&#x441;&#x442;&#x440;&#x43e;&#x439;&#x43a;&#x438; &#x44d;&#x43a;&#x441;&#x43f;&#x43e;&#x440;&#x442;&#x430; PO &#x438;&#x43b;&#x438; XML &#x444;&#x430;&#x439;&#x43b;&#x43e;&#x432;"/>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="915" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="179" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Container>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="jBSaveSettings">
@ -285,14 +299,6 @@
</Component>
<Component class="java.awt.TextArea" name="textArea1">
</Component>
<Component class="javax.swing.JButton" name="jButton3">
<Properties>
<Property name="text" type="java.lang.String" value="&#x42d;&#x43a;&#x441;&#x43f;&#x43e;&#x440;&#x442; PO &#x438;&#x43b;&#x438; XML &#x444;&#x430;&#x439;&#x43b;&#x430;"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="jCheckBox1">
<Properties>
<Property name="text" type="java.lang.String" value="&#x42d;&#x43a;&#x441;&#x43f;&#x43e;&#x440;&#x442;&#x438;&#x440;&#x43e;&#x432;&#x430;&#x442;&#x44c; &#x432; &#x431;&#x430;&#x437;&#x443; &#x43f;&#x440;&#x438; &#x441;&#x43a;&#x430;&#x43d;&#x438;&#x440;&#x43e;&#x432;&#x430;&#x43d;&#x438;&#x438;"/>

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;