use of org.jkiss.dbeaver.model.data.DBDContent in project dbeaver by serge-rider.
the class DataExporterHTML method exportRow.
@Override
public void exportRow(DBCSession session, Object[] row) throws DBException, IOException {
out.write("<tr" + (rowCount++ % 2 == 0 ? " class=\"odd\"" : "") + ">");
for (int i = 0; i < row.length; i++) {
DBDAttributeBinding column = columns.get(i);
if (DBUtils.isNullValue(row[i])) {
writeTextCell(null, false);
} else if (row[i] instanceof DBDContent) {
// Content
// Inline textual content and handle binaries in some special way
DBDContent content = (DBDContent) row[i];
try {
DBDContentStorage cs = content.getContents(session.getProgressMonitor());
out.write("<td>");
if (cs != null) {
if (ContentUtils.isTextContent(content)) {
writeCellValue(cs.getContentReader());
} else {
getSite().writeBinaryData(cs);
}
}
out.write("</td>");
} finally {
content.release();
}
} else {
String stringValue = super.getValueDisplayString(column, row[i]);
boolean isImage = row[i] instanceof File && stringValue != null && stringValue.endsWith(".jpg");
if (isImage) {
writeImageCell((File) row[i]);
} else {
writeTextCell(stringValue, false);
}
}
}
out.write("</tr>\n");
}
use of org.jkiss.dbeaver.model.data.DBDContent in project dbeaver by serge-rider.
the class DataExporterXML method exportRow.
@Override
public void exportRow(DBCSession session, Object[] row) throws DBException, IOException {
out.write(" <DATA_RECORD>\n");
for (int i = 0; i < row.length; i++) {
DBDAttributeBinding column = columns.get(i);
String columnName = escapeXmlElementName(column.getName());
out.write(" <" + columnName + ">");
if (DBUtils.isNullValue(row[i])) {
writeTextCell(null);
} else if (row[i] instanceof DBDContent) {
// Content
// Inline textual content and handle binaries in some special way
DBDContent content = (DBDContent) row[i];
try {
DBDContentStorage cs = content.getContents(session.getProgressMonitor());
if (cs != null) {
if (ContentUtils.isTextContent(content)) {
try (Reader reader = cs.getContentReader()) {
writeCellValue(reader);
}
} else {
getSite().writeBinaryData(cs);
}
}
} finally {
content.release();
}
} else {
writeTextCell(super.getValueDisplayString(column, row[i]));
}
out.write("</" + columnName + ">\n");
}
out.write(" </DATA_RECORD>\n");
}
use of org.jkiss.dbeaver.model.data.DBDContent in project dbeaver by serge-rider.
the class DialogUtils method loadFromFile.
public static boolean loadFromFile(final IValueController controller) {
if (!(controller.getValue() instanceof DBDContent)) {
log.error(CoreMessages.model_jdbc_bad_content_value_ + controller.getValue());
return false;
}
Shell shell = UIUtils.getShell(controller.getValueSite());
final File openFile = openFile(shell);
if (openFile == null) {
return false;
}
final DBDContent value = (DBDContent) controller.getValue();
DBeaverUI.runInUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), new DBRRunnableWithProgress() {
@Override
public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
DBDContentStorage storage;
if (ContentUtils.isTextContent(value)) {
storage = new ExternalContentStorage(DBeaverCore.getInstance(), openFile, GeneralUtils.UTF8_ENCODING);
} else {
storage = new ExternalContentStorage(DBeaverCore.getInstance(), openFile);
}
value.updateContents(monitor, storage);
controller.updateValue(value, true);
} catch (Exception e) {
throw new InvocationTargetException(e);
}
}
});
return true;
}
use of org.jkiss.dbeaver.model.data.DBDContent in project dbeaver by dbeaver.
the class DataExporterXLSX method exportRow.
@Override
public void exportRow(DBCSession session, Object[] row) throws DBException, IOException {
Worksheet wsh = getWsh(row);
Row rowX = wsh.getSh().createRow(wsh.getCurrentRow());
int startCol = 0;
if (rowNumber) {
Cell cell = rowX.createCell(startCol, CellType.NUMERIC);
cell.setCellStyle(style);
cell.setCellValue(String.valueOf(wsh.getCurrentRow()));
startCol++;
}
for (int i = 0; i < row.length; i++) {
DBDAttributeBinding column = columns.get(i);
Cell cell = rowX.createCell(i + startCol, getCellType(column));
cell.setCellStyle(style);
if (DBUtils.isNullValue(row[i])) {
if (!CommonUtils.isEmpty(nullString)) {
cell.setCellValue(nullString);
} else {
cell.setCellValue("");
}
} else if (row[i] instanceof DBDContent) {
DBDContent content = (DBDContent) row[i];
try {
DBDContentStorage cs = content.getContents(session.getProgressMonitor());
if (cs == null) {
cell.setCellValue(DBConstants.NULL_VALUE_LABEL);
} else if (ContentUtils.isTextContent(content)) {
writeCellValue(cell, cs.getContentReader());
} else {
cell.setCellValue(BINARY_FIXED);
}
} finally {
content.release();
}
} else if (row[i] instanceof Boolean) {
cell.setCellValue((Boolean) row[i]);
} else if (row[i] instanceof Number) {
cell.setCellValue(((Number) row[i]).doubleValue());
} else {
String stringValue = super.getValueDisplayString(column, row[i]);
cell.setCellValue(stringValue);
}
}
wsh.incRow();
}
use of org.jkiss.dbeaver.model.data.DBDContent in project dbeaver by dbeaver.
the class ContentEditorInput method updateContentFromFile.
public void updateContentFromFile(IProgressMonitor monitor) throws DBException {
if (valueController.isReadOnly()) {
throw new DBCException("Can't update read-only value");
}
DBRProgressMonitor localMonitor = RuntimeUtils.makeMonitor(monitor);
Object value = getValue();
if (value instanceof DBDContent) {
DBDContent content = (DBDContent) value;
DBDContentStorage storage = content.getContents(localMonitor);
if (storage instanceof DBDContentStorageLocal) {
// Nothing to update - we user content's storage
contentDetached = true;
} else if (storage instanceof DBDContentCached) {
// Create new storage and pass it to content
try (FileInputStream is = new FileInputStream(contentFile)) {
if (storage instanceof StringContentStorage) {
try (Reader reader = new InputStreamReader(is, fileCharset)) {
storage = StringContentStorage.createFromReader(reader);
}
} else {
storage = BytesContentStorage.createFromStream(is, contentFile.length(), fileCharset);
}
// StringContentStorage.
contentDetached = content.updateContents(localMonitor, storage);
} catch (IOException e) {
throw new DBException("Error reading content from file", e);
}
} else {
// Create new storage and pass it to content
storage = new TemporaryContentStorage(DBeaverCore.getInstance(), contentFile, fileCharset);
contentDetached = content.updateContents(localMonitor, storage);
}
} else {
// Just read as string
updateStringValueFromFile(contentFile);
contentDetached = true;
}
}
Aggregations