use of net.heartsome.cat.database.DBOperator in project translationstudio8 by heartsome.
the class Utils method convertFile2TbModel.
public static Map<DatabaseModelBean, String> convertFile2TbModel(File f, boolean loadLang) throws Exception {
String path = f.getParent();
String name = f.getName();
System.out.println(path + " " + name);
DatabaseModelBean selectedVal = new DatabaseModelBean();
selectedVal.setDbName(name);
selectedVal.setDbType(Constants.DBTYPE_SQLITE);
selectedVal.setItlDBLocation(path);
String lang = "";
DBOperator dbOp = DatabaseService.getDBOperator(selectedVal.toDbMetaData());
Statement stmt = null;
ResultSet rs = null;
try {
dbOp.start();
stmt = dbOp.getConnection().createStatement();
rs = stmt.executeQuery("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name");
List<String> tables = new ArrayList<String>();
while (rs.next()) {
String tname = rs.getString(1);
if (tname.toUpperCase().startsWith("MATRIX_")) {
continue;
} else {
tables.add(tname);
}
}
List<String> l = Arrays.asList("BATTRIBUTE", "BMARTIFHEADER", "BNODE", "BREFOBJECTLIST", "BTERMENTRY", "LANG", "MEXTRA", "MHEADER", "MHEADERNODE", "MNOTE", "MPROP", "MTU", "TEXTDATA");
if (!tables.containsAll(l)) {
String message = Messages.getString("tb.dialog.addFileTb.error.msg1");
throw new Exception(message);
}
if (loadLang) {
List<String> langs = dbOp.getLanguages();
for (int j = 0; j < langs.size(); j++) {
lang += langs.get(j);
if (j != langs.size() - 1) {
lang += ",";
}
}
}
Map<DatabaseModelBean, String> result = new HashMap<DatabaseModelBean, String>();
result.put(selectedVal, lang);
return result;
} catch (Exception ex) {
LOGGER.error("", ex);
String message = Messages.getString("tb.dialog.addFileTb.error.msg2");
message = MessageFormat.format(message, name);
throw new Exception(message);
} finally {
try {
if (dbOp != null) {
dbOp.end();
}
} catch (SQLException ex) {
LOGGER.error("", ex);
}
}
}
use of net.heartsome.cat.database.DBOperator in project translationstudio8 by heartsome.
the class Utils method convertFile2TmModel.
public static Map<DatabaseModelBean, String> convertFile2TmModel(File f, boolean loadLang) throws Exception {
String path = f.getParent();
String name = f.getName();
DatabaseModelBean selectedVal = new DatabaseModelBean();
selectedVal.setDbName(name);
selectedVal.setDbType(Constants.DBTYPE_SQLITE);
selectedVal.setItlDBLocation(path);
DBOperator dbOp = DatabaseService.getDBOperator(selectedVal.toDbMetaData());
String lang = "";
try {
dbOp.start();
Statement stmt = dbOp.getConnection().createStatement();
ResultSet rs = stmt.executeQuery("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name");
List<String> tables = new ArrayList<String>();
while (rs.next()) {
String tname = rs.getString(1);
if (tname.toUpperCase().startsWith("MATRIX_")) {
continue;
} else {
tables.add(tname);
}
}
List<String> l = Arrays.asList("BATTRIBUTE", "BMARTIFHEADER", "BNODE", "BREFOBJECTLIST", "BTERMENTRY", "LANG", "MEXTRA", "MHEADER", "MHEADERNODE", "MNOTE", "MPROP", "MTU", "TEXTDATA");
if (!tables.containsAll(l)) {
throw new Exception(Messages.getString("tm.dialog.addFileTm.error.msg1"));
}
if (loadLang) {
List<String> langs = dbOp.getLanguages();
for (int j = 0; j < langs.size(); j++) {
lang += langs.get(j);
if (j != langs.size() - 1) {
lang += ",";
}
}
}
Map<DatabaseModelBean, String> result = new HashMap<DatabaseModelBean, String>();
result.put(selectedVal, lang);
return result;
} catch (Exception ex) {
LOGGER.error("", ex);
String message = Messages.getString("tm.dialog.addFileTm.error.msg2");
message = MessageFormat.format(message, name);
throw new Exception(message);
} finally {
try {
if (dbOp != null) {
dbOp.end();
}
} catch (SQLException ex) {
LOGGER.error("", ex);
}
}
}
use of net.heartsome.cat.database.DBOperator in project translationstudio8 by heartsome.
the class ConcordanceSearchDialog method initLanguageMenu.
/**
* 初始化语言菜单 ;
*/
private void initLanguageMenu() {
Set<String> set = new HashSet<String>();
for (DatabaseModelBean model : lstDatabase) {
MetaData metaData = model.toDbMetaData();
DBOperator dbop = DatabaseService.getDBOperator(metaData);
if (null == dbop) {
continue;
}
try {
dbop.start();
set.addAll(dbop.getLanguages());
} catch (SQLException e) {
LOGGER.error(Messages.getString("dialog.ConcordanceSearchDialog.logger1"), e);
} catch (ClassNotFoundException e) {
LOGGER.error(Messages.getString("dialog.ConcordanceSearchDialog.logger1"), e);
} finally {
try {
if (dbop != null) {
dbop.end();
}
} catch (SQLException e) {
LOGGER.error("", e);
}
}
}
set.remove(strSrcLang);
set.remove(strTgtLang);
lstLangs = new ArrayList<String>(set);
Collections.sort(lstLangs);
// cmbLang.setItems((String[]) langs.toArray(new String[langs.size()]));
menu = new Menu(getShell(), SWT.POP_UP);
if (strTgtLang != null) {
MenuItem itemTgt = new MenuItem(menu, SWT.CHECK);
itemTgt.setText(strTgtLang);
itemTgt.setSelection(true);
itemTgt.setEnabled(false);
}
for (final String lang : lstLangs) {
final MenuItem itemLang = new MenuItem(menu, SWT.CHECK);
itemLang.setText(lang);
itemLang.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
ArrayList<IColumn> lstShowColumn = new ArrayList<IColumn>();
// }
if (itemLang.getSelection()) {
// int totalWidth = 0;
boolean blnIsResetWidth = false;
// tableModel.getColumnCount()
for (int index = 1; index < tableModel.getColumnCount(); index++) {
IColumn column = tableModel.getColumn(index);
int width = jTable.getTableViewState().getColumnWidth(column);
if (column.getHeaderLabel().equals(lang) && width == 0) {
jTable.getTableViewState().setColumnVisible(column, true);
jTable.updateColumnList();
jTable.redraw();
// jTable.getTableViewState().setColumnWidth(column, width0);
lstShowColumn.add(column);
blnIsResetWidth = true;
} else if (width > 0) {
// totalWidth += width;
lstShowColumn.add(column);
// jTable.columnWidthChanged(column, width0);
}
}
if (blnIsResetWidth) {
int width = totalWidth / lstShowColumn.size() + 1;
for (int colNum = 1; colNum < jTable.getColumnCount(); colNum++) {
jTable.getTableViewState().setColumnWidth(jTable.getColumn(colNum), width);
}
// for (IColumn column : lstShowColumn) {
// // jTable.getTableViewState().setColumnVisible(column, true);
// jTable.getTableViewState().setColumnWidth(column, width);
// }
}
// initGroupIdAndSearch();
} else {
// int totalWidth = 0;
IColumn deleteColumn = null;
for (int index = 1; index < jTable.getColumnCount(); index++) {
IColumn column = jTable.getColumn(index);
int width = jTable.getTableViewState().getColumnWidth(column);
if (width > 0) {
// totalWidth += width;
lstShowColumn.add(column);
}
if (column.getHeaderLabel().equals(lang)) {
deleteColumn = column;
// 将删除列中的数据清空,以保证行高正常调整
// for (GridItem item : tableModel.getRowCount()) {
// item.setText(index, "");
// }
}
}
// int width = (jTable.getTableViewState().getColumnWidth(deleteColumn) * lstShowColumn.size() -
// 100)
// / (lstShowColumn.size() - 1);
int width = totalWidth / (lstShowColumn.size() - 1) + 1;
jTable.getTableViewState().setColumnWidth(deleteColumn, 0);
jTable.getTableViewState().setColumnVisible(deleteColumn, false);
lstShowColumn.remove(deleteColumn);
for (IColumn column : lstShowColumn) {
jTable.getTableViewState().setColumnWidth(column, width);
}
// initGroupIdAndSearch();
}
}
});
}
btnSelectLang.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
Rectangle rect = btnSelectLang.getBounds();
Point pt = btnSelectLang.toDisplay(new Point(event.x, event.y + rect.height));
// Point pt = btnSelectLang.toDisplay(new Point(event.x + rect.width, event.y + rect.height));
menu.setOrientation(getShell().getOrientation());
menu.setLocation(pt.x, pt.y);
menu.setVisible(true);
}
});
}
use of net.heartsome.cat.database.DBOperator in project translationstudio8 by heartsome.
the class TermDbManagerDialog method searchCurrServerDatabase.
private List<DatabaseManagerDbListBean> searchCurrServerDatabase(SystemDBOperator sysDbOp, DatabaseModelBean currServer) {
List<DatabaseManagerDbListBean> temp = new ArrayList<DatabaseManagerDbListBean>();
// 检查是否创建了系统库
if (!sysDbOp.checkSysDb()) {
// MessageDialog.openInformation(getShell(), "提示信息",
// "当前服务器上没有创建任何库");
setLastSelectedServer(null);
return null;
}
// 检查是否创建了库
List<String> dbNames = sysDbOp.getSysDbNames(Constants.DB_TYPE_TB);
if (dbNames.size() == 0) {
// MessageDialog.openInformation(getShell(), "提示信息",
// "当前服务器上没有创建任何库");
setLastSelectedServer(null);
return null;
}
// 获取数据库相关资料,封装了库名称和语言
MetaData metaData = currServer.toDbMetaData();
DBOperator dbop = DatabaseService.getDBOperator(metaData);
for (int i = 0; i < dbNames.size(); i++) {
DatabaseManagerDbListBean bean = new DatabaseManagerDbListBean();
String dbName = dbNames.get(i);
bean.setIndex(i + 1 + "");
bean.setDbName(dbName);
metaData.setDatabaseName(dbName);
dbop.setMetaData(metaData);
String lang = "";
try {
dbop.start();
List<String> langs = dbop.getLanguages();
for (int j = 0; j < langs.size(); j++) {
lang += langs.get(j);
if (j != langs.size() - 1) {
lang += ", ";
}
}
} catch (Exception e1) {
logger.error("", e1);
continue;
} finally {
try {
if (dbop != null) {
dbop.end();
}
} catch (SQLException e) {
logger.error("", e);
}
}
if (lang.equals("")) {
bean.setLangs(Messages.getString("dialog.TermDbManagerDialog.msg10"));
} else {
bean.setLangs(lang);
}
temp.add(bean);
}
return temp;
}
use of net.heartsome.cat.database.DBOperator in project translationstudio8 by heartsome.
the class ConcordanceSearchDialog method search.
/**
* 搜索记忆库 ;
*/
private boolean search() {
String searchText = cmbSearch.getText();
if (searchText == null || searchText.trim().equals("")) {
txtPage.setText("");
MessageDialog.openInformation(getShell(), Messages.getString("dialog.ConcordanceSearchDialog.msgTitle"), Messages.getString("dialog.ConcordanceSearchDialog.msg2"));
return false;
}
StringBuffer searchTextBf = new StringBuffer(searchText);
TreeMap<String, InnerTagBean> tags = InnerTagUtil.parseXmlToDisplayValue(searchTextBf, TagStyle.getDefault(false));
searchText = InnerTagUtil.resolveTag(searchTextBf.toString());
searchText = InnerTagUtil.escapeTag(searchText);
searchText = InnerTagUtil.parseDisplayToXmlValue(tags, searchText);
// 此处的判断已加在 ConcordanceSearchHandler 中
// if (lstDatabase.size() == 0) {
// txtPage.setText("");
// MessageDialog.openInformation(getShell(), "提示", "请为项目指定翻译记忆库");
// return false;
// }
ArrayList<String> lstSelLangs = new ArrayList<String>();
lstSelLangs.add(strSrcLang);
for (MenuItem item : menu.getItems()) {
if (item.getSelection()) {
lstSelLangs.add(item.getText());
}
}
LinkedHashMap<MetaData, List<Integer>> mapSub = getCurPageMap();
LinkedHashMap<MetaData, List<ConcordanceBean>> mapResult = new LinkedHashMap<MetaData, List<ConcordanceBean>>();
Iterator<Entry<MetaData, List<Integer>>> iterator = mapSub.entrySet().iterator();
while (iterator.hasNext()) {
Entry<MetaData, List<Integer>> entry = (Entry<MetaData, List<Integer>>) iterator.next();
MetaData metaData = entry.getKey();
DBOperator dbop = DatabaseService.getDBOperator(metaData);
try {
dbop.start();
List<ConcordanceBean> lstConcordance = dbop.getConcordanceSearchResult(cmbSearch.getText(), btnIsCaseSensitive.getSelection(), btnApplyRegularExpression.getSelection(), btnIsIgnoreMark.getSelection(), strSrcLang, lstSelLangs, entry.getValue());
if (lstConcordance != null && lstConcordance.size() > 0) {
mapResult.put(metaData, lstConcordance);
}
} catch (SQLException e1) {
LOGGER.error(Messages.getString("dialog.ConcordanceSearchDialog.logger2"), e1);
} catch (ClassNotFoundException e1) {
LOGGER.error(Messages.getString("dialog.ConcordanceSearchDialog.logger3"), e1);
} finally {
try {
if (dbop != null) {
dbop.end();
}
} catch (SQLException e) {
LOGGER.error("", e);
}
}
}
if (mapResult.size() == 0) {
clearTable();
MessageDialog.openInformation(getShell(), Messages.getString("dialog.ConcordanceSearchDialog.msgTitle"), Messages.getString("dialog.ConcordanceSearchDialog.msg1"));
txtPage.setText("");
return false;
}
// 当有多个数据库的数据时要对所有数据按 changedate 重新排序,然后取前 spiResultCount.getSelection() 数量的记录
int rowNum = 0;
HashMap<IRow, ArrayList<int[]>> mapStyle = new HashMap<IRow, ArrayList<int[]>>();
if (mapResult.size() > 1) {
LinkedHashMap<String, Object[]> map = sortMap(mapResult);
Iterator<Entry<String, Object[]>> it = map.entrySet().iterator();
while (it.hasNext()) {
Entry<String, Object[]> entry = it.next();
Object[] arrObj = entry.getValue();
createItem((MetaData) arrObj[0], (ConcordanceBean) arrObj[1], rowNum++, mapStyle);
}
} else {
Iterator<Entry<MetaData, List<ConcordanceBean>>> it = mapResult.entrySet().iterator();
while (it.hasNext()) {
Entry<MetaData, List<ConcordanceBean>> entry = it.next();
MetaData metaData2 = entry.getKey();
List<ConcordanceBean> lstBean = entry.getValue();
for (ConcordanceBean bean : lstBean) {
createItem(metaData2, bean, rowNum++, mapStyle);
}
if (lstBean.size() < rowNumPerPage) {
for (int row = lstBean.size(); row < rowNumPerPage; row++) {
if (rowNum < tableModel.getRowCount() && tableModel.getRow(rowNum) != null) {
tableModel.remRow(tableModel.getRow(rowNum));
}
}
}
}
}
jTable.registerCellRenderer(tableModel.getColumn(1), new StyleTextCellRenderer(searchText, btnIsCaseSensitive.getSelection(), btnApplyRegularExpression.getSelection(), createResultsStyle()));
jTable.registerCellRenderer(tableModel.getColumn(tableModel.getColumnCount() - 1), new AttributeTextCellRenderer(mapStyle, style));
jTable.setTableModel(tableModel);
return true;
}
Aggregations