types = new TreeSet<>();
+ DBPDataTypeProvider dataTypeProvider = DBUtils.getParentOfType(DBPDataTypeProvider.class, settings.getContainer());
+ if (dataTypeProvider != null) {
+ for (DBSDataType type : dataTypeProvider.getLocalDataTypes()) {
+ types.add(type.getName());
}
- types.add(attrMapping.getTargetType(settings.getTargetDataSource(attrMapping), true));
-
- return new CustomComboBoxCellEditor(mappingViewer, mappingViewer.getTable(), types.toArray(new String[0]), SWT.BORDER);
- }
- @Override
- protected boolean canEdit(Object element)
- {
- return true;
- }
- @Override
- protected Object getValue(Object element)
- {
- DatabaseMappingAttribute attrMapping = (DatabaseMappingAttribute) element;
- return attrMapping.getTargetType(settings.getTargetDataSource(attrMapping), true);
- }
- @Override
- protected void setValue(Object element, Object value)
- {
- DatabaseMappingAttribute attrMapping = (DatabaseMappingAttribute) element;
- attrMapping.setTargetType(CommonUtils.toString(value));
- mappingViewer.refresh(element);
}
- });
- }
+ types.add(attrMapping.getTargetType(settings.getTargetDataSource(attrMapping), true));
- {
- TableViewerColumn columnType = new TableViewerColumn(mappingViewer, SWT.LEFT);
- columnType.setLabelProvider(new CellLabelProvider() {
- @Override
- public void update(ViewerCell cell)
- {
- DatabaseMappingAttribute mapping = (DatabaseMappingAttribute) cell.getElement();
- String text = "";
- switch (mapping.getMappingType()) {
- case unspecified: text = "?"; break;
- case existing: text = DTUIMessages.columns_mapping_dialog_cell_text_existing; break;
- case create: text = DTUIMessages.columns_mapping_dialog_cell_text_new; break;
- case skip: text = DTUIMessages.columns_mapping_dialog_cell_text_skip; break;
- }
- cell.setText(text);
+ return new CustomComboBoxCellEditor(mappingViewer, mappingViewer.getTable(), types.toArray(new String[0]), SWT.BORDER);
+ }
+ @Override
+ protected boolean canEdit(Object element)
+ {
+ return true;
+ }
+ @Override
+ protected Object getValue(Object element)
+ {
+ DatabaseMappingAttribute attrMapping = (DatabaseMappingAttribute) element;
+ return attrMapping.getTargetType(settings.getTargetDataSource(attrMapping), true);
+ }
+ @Override
+ protected void setValue(Object element, Object value)
+ {
+ DatabaseMappingAttribute attrMapping = (DatabaseMappingAttribute) element;
+ attrMapping.setTargetType(CommonUtils.toString(value));
+ mappingViewer.refresh(element);
+ }
+ });
+
+ columnController.addColumn(DTUIMessages.columns_mapping_dialog_column_type_text_mapping, null, SWT.LEFT, true, false, new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ DatabaseMappingAttribute mapping = (DatabaseMappingAttribute) element;
+ switch (mapping.getMappingType()) {
+ case existing:
+ return DTUIMessages.columns_mapping_dialog_cell_text_existing;
+ case create:
+ return DTUIMessages.columns_mapping_dialog_cell_text_new;
+ case skip:
+ return DTUIMessages.columns_mapping_dialog_cell_text_skip;
+ default:
+ return "?";
}
- });
- columnType.getColumn().setText(DTUIMessages.columns_mapping_dialog_column_type_text_mapping);
- columnType.getColumn().setWidth(60);
- }
+ }
+ });
+
+ columnController.createColumns();
mappingViewer.setInput(attributeMappings);
diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterHTML.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterHTML.java
index 1cd858f70eb6bff55f9de10df88ec4cd55495e17..a5b739313cf288e99b046d82b7b298c23a39dd65 100644
--- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterHTML.java
+++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/exporter/DataExporterHTML.java
@@ -31,10 +31,7 @@ import org.jkiss.utils.CommonUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Reader;
+import java.io.*;
import java.util.Map;
/**
@@ -164,24 +161,14 @@ public class DataExporterHTML extends StreamExporterAbstract {
private void writeTableTitle(String value, int columns) {
PrintWriter out = getWriter();
out.write(String.format("", columns));
- if (value == null) {
- out.write(" ");
- } else {
- value = value.replace("&", "&").replace("<", "<").replace(">", ">");
- out.write(value);
- }
+ out.write(CommonUtils.escapeHtml(value));
out.write(" | ");
}
private void writeTextCell(String value, boolean header) {
PrintWriter out = getWriter();
out.write(header ? "" : " | ");
- if (value == null) {
- out.write(" ");
- } else {
- value = value.replace("&", "&").replace("<", "<").replace(">", ">");
- out.write(value);
- }
+ out.write(CommonUtils.escapeHtml(value));
out.write(header ? "" : " | ");
}
@@ -228,33 +215,16 @@ public class DataExporterHTML extends StreamExporterAbstract {
}
private void writeCellValue(Reader reader) throws IOException {
- try {
+ try (BufferedReader bufferedReader = new BufferedReader(reader)) {
PrintWriter out = getWriter();
- // Copy reader
- char[] buffer = new char[2000];
- for (; ; ) {
- int count = reader.read(buffer);
- if (count <= 0) {
- break;
- }
- for (int i = 0; i < count; i++) {
- if (buffer[i] == '<') {
- out.write("<");
- } else if (buffer[i] == '>') {
- out.write(">");
- }
- if (buffer[i] == '&') {
- out.write("&");
- }
- out.write(buffer[i]);
+ String line = bufferedReader.readLine();
+ while (line != null) {
+ out.write(CommonUtils.escapeHtml(line));
+ line = bufferedReader.readLine();
+ if (line != null) {
+ out.write("
");
}
}
- } finally {
- ContentUtils.close(reader);
}
}
-
- public boolean saveBinariesAsImages() {
- return true;
- }
}
diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
index 7385e4d257b55073a10962e92b6bc9b7a84e1f26..0a23df0c81641001d167c0bd1d0e88d63beff7ce 100644
--- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
+++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
@@ -1084,11 +1084,11 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe
"i.OWNER,i.INDEX_NAME,i.INDEX_TYPE,i.TABLE_OWNER,i.TABLE_NAME,i.UNIQUENESS,i.TABLESPACE_NAME,i.STATUS,i.NUM_ROWS,i.SAMPLE_SIZE,\n" +
"ic.COLUMN_NAME,ic.COLUMN_POSITION,ic.COLUMN_LENGTH,ic.DESCEND,iex.COLUMN_EXPRESSION\n" +
"FROM " + OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), getDataSource(), "INDEXES") + " i\n" +
- ", " + OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), getDataSource(), "IND_COLUMNS") + " ic, " +
- OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), getDataSource(), "IND_EXPRESSIONS") + " iex " +
- "WHERE ic.INDEX_OWNER=i.OWNER AND ic.INDEX_NAME=i.INDEX_NAME \n" +
- "AND iex.INDEX_OWNER(+)=i.OWNER AND iex.INDEX_NAME(+)=i.INDEX_NAME AND iex.COLUMN_POSITION(+)=ic.COLUMN_POSITION\n" +
- "AND ");
+ "JOIN " + OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), getDataSource(), "IND_COLUMNS") + " ic " +
+ "ON i.owner = ic.index_owner AND i.index_name = ic.index_name\n" +
+ "LEFT JOIN " + OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), getDataSource(), "IND_EXPRESSIONS") + " iex " +
+ "ON iex.index_owner = i.owner AND iex.INDEX_NAME = i.INDEX_NAME AND iex.COLUMN_POSITION = ic.COLUMN_POSITION\n" +
+ "WHERE ");
if (forTable == null) {
sql.append("i.OWNER=?");
} else {
diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
index c93ab320388e3de171323c2bc84b4a75fa6ccb01..41c3b8eff3e4709978268997a3386d371b5098ba 100644
--- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
+++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
@@ -157,9 +157,9 @@ public class OracleStructureAssistant implements DBSStructureAssistant'R'" : "") +
- (schema != null ? " AND OWNER=?" : ""))) {
- dbStat.setString(1, params.getMask().toUpperCase());
+ "WHERE" + (params.isCaseSensitive() ? " CONSTRAINT_NAME " : " UPPER(CONSTRAINT_NAME) ") +
+ "LIKE ?" + (!hasFK ? " AND CONSTRAINT_TYPE<>'R'" : "") + (schema != null ? " AND OWNER=?" : ""))) {
+ dbStat.setString(1, params.isCaseSensitive() ? params.getMask() : params.getMask().toUpperCase());
if (schema != null) {
dbStat.setString(2, schema.getName());
}
@@ -250,13 +250,25 @@ public class OracleStructureAssistant implements DBSStructureAssistant