1 14 package org.compiere.install; 15 16 import java.sql.*; 17 import java.util.*; 18 19 import org.xml.sax.helpers.*; 20 import org.xml.sax.*; 21 22 import org.compiere.util.*; 23 24 30 public class TranslationHandler extends DefaultHandler 31 { 32 36 public TranslationHandler (int AD_Client_ID) 37 { 38 m_AD_Client_ID = AD_Client_ID; 39 } 41 42 private int m_AD_Client_ID = -1; 43 44 private String m_AD_Language = null; 45 46 private boolean m_isBaseLanguage = false; 47 48 private String m_TableName = null; 49 50 private String m_updateSQL = null; 51 52 private String m_curID = null; 53 54 private String m_curColumnName = null; 55 56 private StringBuffer m_curValue = null; 57 58 private StringBuffer m_sql = null; 59 60 private Timestamp m_time = new Timestamp(System.currentTimeMillis()); 61 private int m_updateCount = 0; 62 63 private Logger log = Logger.getCLogger(getClass()); 64 65 66 67 76 public void startElement (String uri, String localName, String qName, Attributes attributes) 77 throws org.xml.sax.SAXException 78 { 79 if (qName.equals(Translation.XML_TAG)) 81 { 82 m_AD_Language = attributes.getValue(Translation.XML_ATTRIBUTE_LANGUAGE); 83 m_isBaseLanguage = Language.isBaseLanguage(m_AD_Language); 84 m_TableName = attributes.getValue(Translation.XML_ATTRIBUTE_TABLE); 85 m_updateSQL = "UPDATE " + m_TableName; 86 if (!m_isBaseLanguage) 87 m_updateSQL += "_Trl"; 88 m_updateSQL += " SET "; 89 log.debug("AD_Language=" + m_AD_Language + ", Base=" + m_isBaseLanguage + ", TableName=" + m_TableName); 90 } 91 else if (qName.equals(Translation.XML_ROW_TAG)) 92 { 93 m_curID = attributes.getValue(Translation.XML_ROW_ATTRIBUTE_ID); 94 m_sql = new StringBuffer (); 96 } 97 else if (qName.equals(Translation.XML_VALUE_TAG)) 98 { 99 m_curColumnName = attributes.getValue(Translation.XML_VALUE_ATTRIBUTE_COLUMN); 100 } 102 else 103 log.error ("startElement - UNKNOWN TAG: " + qName); 104 m_curValue = new StringBuffer (); 105 } 107 115 public void characters (char ch[], int start, int length) 116 throws SAXException 117 { 118 m_curValue.append(ch, start, length); 119 } 122 129 public void endElement (String uri, String localName, String qName) 130 throws SAXException 131 { 132 if (qName.equals(Translation.XML_TAG)) 134 { 135 } 136 else if (qName.equals(Translation.XML_ROW_TAG)) 137 { 138 if (m_sql.length() > 0) 140 m_sql.append(","); 141 m_sql.append("Updated=").append(DB.TO_DATE(m_time, false)); 142 if (!m_isBaseLanguage) 143 m_sql.append(",IsTranslated='Y'"); 144 m_sql.append(" WHERE ") 146 .append(m_TableName).append("_ID=").append(m_curID); 147 if (!m_isBaseLanguage) 148 m_sql.append(" AND AD_Language='").append(m_AD_Language).append("'"); 149 if (m_AD_Client_ID >= 0) 150 m_sql.append(" AND AD_Client_ID=").append(m_AD_Client_ID); 151 m_sql.insert(0, m_updateSQL); 153 154 int no = DB.executeUpdate(m_sql.toString()); 156 if (no == 1) 157 { 158 if (Log.isTraceLevel(10)) 159 log.debug(m_sql.toString()); 160 m_updateCount++; 161 } 162 else if (no == 0) 163 log.warn ("Not Found - " + m_sql.toString()); 164 else 165 log.error ("Update Rows=" + no + " (Should be 1) - " + m_sql.toString()); 166 } 167 else if (qName.equals(Translation.XML_VALUE_TAG)) 168 { 169 if (m_sql.length() > 0) 170 m_sql.append(","); 171 m_sql.append(m_curColumnName).append("=").append(DB.TO_STRING(m_curValue.toString())); 172 } 173 } 175 176 180 public int getUpdateCount() 181 { 182 return m_updateCount; 183 } 185 } | Popular Tags |