IDEMPIERE-5149 Database lock in Translation Import/Export (#1127)
This commit is contained in:
parent
e9f85bd985
commit
5cebb50f58
|
@ -122,7 +122,6 @@ public class Translation implements IApplication
|
||||||
/** Properties */
|
/** Properties */
|
||||||
private Properties m_ctx = null;
|
private Properties m_ctx = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import Translation.
|
* Import Translation.
|
||||||
* Uses TranslationHandler to update translation
|
* Uses TranslationHandler to update translation
|
||||||
|
@ -133,6 +132,21 @@ public class Translation implements IApplication
|
||||||
* @return status message
|
* @return status message
|
||||||
*/
|
*/
|
||||||
public String importTrl (String directory, int AD_Client_ID, String AD_Language, String Trl_Table)
|
public String importTrl (String directory, int AD_Client_ID, String AD_Language, String Trl_Table)
|
||||||
|
{
|
||||||
|
return importTrl(directory, AD_Client_ID, AD_Language, Trl_Table, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Import Translation.
|
||||||
|
* Uses TranslationHandler to update translation
|
||||||
|
* @param directory file directory
|
||||||
|
* @param AD_Client_ID only certain client if id >= 0
|
||||||
|
* @param AD_Language language
|
||||||
|
* @param Trl_Table table
|
||||||
|
* @param trxName Transaction
|
||||||
|
* @return status message
|
||||||
|
*/
|
||||||
|
public String importTrl (String directory, int AD_Client_ID, String AD_Language, String Trl_Table, String trxName)
|
||||||
{
|
{
|
||||||
String fileName = directory + File.separator + Trl_Table + "_" + AD_Language + ".xml";
|
String fileName = directory + File.separator + Trl_Table + "_" + AD_Language + ".xml";
|
||||||
log.info(fileName);
|
log.info(fileName);
|
||||||
|
@ -146,7 +160,7 @@ public class Translation implements IApplication
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TranslationHandler handler = new TranslationHandler(AD_Client_ID);
|
TranslationHandler handler = new TranslationHandler(AD_Client_ID, trxName);
|
||||||
SAXParserFactory factory = SAXParserFactory.newInstance();
|
SAXParserFactory factory = SAXParserFactory.newInstance();
|
||||||
// factory.setValidating(true);
|
// factory.setValidating(true);
|
||||||
SAXParser parser = factory.newSAXParser();
|
SAXParser parser = factory.newSAXParser();
|
||||||
|
|
|
@ -34,17 +34,31 @@ import org.xml.sax.helpers.DefaultHandler;
|
||||||
*/
|
*/
|
||||||
public class TranslationHandler extends DefaultHandler
|
public class TranslationHandler extends DefaultHandler
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Translation Handler
|
* Translation Handler
|
||||||
* @param AD_Client_ID only certain client if id >= 0
|
* @param AD_Client_ID only certain client if id >= 0
|
||||||
*/
|
*/
|
||||||
public TranslationHandler (int AD_Client_ID)
|
public TranslationHandler (int AD_Client_ID)
|
||||||
|
{
|
||||||
|
this(AD_Client_ID, null);
|
||||||
|
} // TranslationHandler
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translation Handler
|
||||||
|
* @param AD_Client_ID only certain client if id >= 0
|
||||||
|
* @param trxName Transaction
|
||||||
|
*/
|
||||||
|
public TranslationHandler (int AD_Client_ID, String trxName)
|
||||||
{
|
{
|
||||||
m_AD_Client_ID = AD_Client_ID;
|
m_AD_Client_ID = AD_Client_ID;
|
||||||
|
m_trxName = trxName;
|
||||||
} // TranslationHandler
|
} // TranslationHandler
|
||||||
|
|
||||||
/** Client */
|
/** Client */
|
||||||
private int m_AD_Client_ID = -1;
|
private int m_AD_Client_ID = -1;
|
||||||
|
/** Transaction */
|
||||||
|
private String m_trxName = null;
|
||||||
/** Language */
|
/** Language */
|
||||||
private String m_AD_Language = null;
|
private String m_AD_Language = null;
|
||||||
/** Is Base Language */
|
/** Is Base Language */
|
||||||
|
@ -174,7 +188,7 @@ public class TranslationHandler extends DefaultHandler
|
||||||
m_sql.insert(0, m_updateSQL);
|
m_sql.insert(0, m_updateSQL);
|
||||||
|
|
||||||
// Execute
|
// Execute
|
||||||
int no = DB.executeUpdate(m_sql.toString(), null);
|
int no = DB.executeUpdate(m_sql.toString(), m_trxName);
|
||||||
if (no == 1)
|
if (no == 1)
|
||||||
{
|
{
|
||||||
if (log.isLoggable(Level.FINE)) log.fine(m_sql.toString());
|
if (log.isLoggable(Level.FINE)) log.fine(m_sql.toString());
|
||||||
|
|
|
@ -152,7 +152,7 @@ public class TranslationImpExp extends SvrProcess {
|
||||||
String tableName = table.getTableName();
|
String tableName = table.getTableName();
|
||||||
if ("import".equals(p_ImportOrExport)) {
|
if ("import".equals(p_ImportOrExport)) {
|
||||||
statusUpdate(Msg.parseTranslation(getCtx(), "@Import@ " + tableName + " ..."));
|
statusUpdate(Msg.parseTranslation(getCtx(), "@Import@ " + tableName + " ..."));
|
||||||
msgProc = translation.importTrl(p_Folder, p_AD_Client_ID, p_AD_Language, tableName);
|
msgProc = translation.importTrl(p_Folder, p_AD_Client_ID, p_AD_Language, tableName, get_TrxName());
|
||||||
} else {
|
} else {
|
||||||
statusUpdate(Msg.parseTranslation(getCtx(), "@Export@ " + tableName + " ..."));
|
statusUpdate(Msg.parseTranslation(getCtx(), "@Export@ " + tableName + " ..."));
|
||||||
msgProc = translation.exportTrl(p_Folder, p_AD_Client_ID, p_AD_Language, tableName, p_IsOnlyCentralizedData);
|
msgProc = translation.exportTrl(p_Folder, p_AD_Client_ID, p_AD_Language, tableName, p_IsOnlyCentralizedData);
|
||||||
|
|
Loading…
Reference in New Issue