use of org.jkiss.dbeaver.model.data.DBDContentCached in project dbeaver by serge-rider.
the class TextViewDialog method primeEditorValue.
@Override
public void primeEditorValue(@Nullable Object value) {
if (value instanceof DBDContentCached) {
value = ((DBDContentCached) value).getCachedValue();
}
if (value instanceof byte[]) {
// Binary
byte[] bytes = (byte[]) value;
textEdit.setText(GeneralUtils.convertToString(bytes, 0, bytes.length));
if (hexEditControl != null) {
hexEditControl.setContent(bytes, getDefaultCharset());
}
} else {
// Should be string
final IValueController valueController = getValueController();
final String strValue = valueController.getValueHandler().getValueDisplayString(valueController.getValueType(), value, DBDDisplayFormat.EDIT);
textEdit.setText(strValue);
if (hexEditControl != null) {
setBinaryContent(strValue);
}
}
}
use of org.jkiss.dbeaver.model.data.DBDContentCached 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;
}
}
use of org.jkiss.dbeaver.model.data.DBDContentCached in project dbeaver by dbeaver.
the class TextViewDialog method primeEditorValue.
@Override
public void primeEditorValue(@Nullable Object value) {
if (value instanceof DBDContentCached) {
value = ((DBDContentCached) value).getCachedValue();
}
if (value instanceof byte[]) {
// Binary
byte[] bytes = (byte[]) value;
textEdit.setText(GeneralUtils.convertToString(bytes, 0, bytes.length));
if (hexEditControl != null) {
hexEditControl.setContent(bytes, getDefaultCharset());
}
} else {
// Should be string
final IValueController valueController = getValueController();
final String strValue = valueController.getValueHandler().getValueDisplayString(valueController.getValueType(), value, DBDDisplayFormat.EDIT);
textEdit.setText(strValue);
if (hexEditControl != null) {
setBinaryContent(strValue);
}
}
}
use of org.jkiss.dbeaver.model.data.DBDContentCached in project dbeaver by serge-rider.
the class ContentEditorInput method updateContentFromFile.
public void updateContentFromFile(DBRProgressMonitor monitor, Object value) throws DBException {
if (valueController.isReadOnly()) {
throw new DBCException("Can't update read-only value");
}
if (value instanceof DBDContent) {
DBDContent content = (DBDContent) value;
DBDContentStorage storage = content.getContents(monitor);
if (storage instanceof DBDContentStorageLocal) {
// Nothing to update - we use content's storage
content.updateContents(monitor, storage);
contentDetached = true;
} else if (storage instanceof DBDContentCached) {
// Create new storage and pass it to content
try (FileInputStream is = new FileInputStream(contentFile)) {
if (ContentUtils.isTextContent(content)) {
try (Reader reader = new InputStreamReader(is, fileCharset)) {
storage = StringContentStorage.createFromReader(reader);
}
} else {
storage = BytesContentStorage.createFromStream(is, contentFile.length(), fileCharset);
}
// StringContentStorage.
contentDetached = content.updateContents(monitor, 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(DBWorkbench.getPlatform(), contentFile, fileCharset);
contentDetached = content.updateContents(monitor, storage);
}
} else if (stringStorage != null) {
// Just read as string
valueController.updateValue(stringStorage.getString(), false);
contentDetached = true;
}
}
use of org.jkiss.dbeaver.model.data.DBDContentCached in project dbeaver by serge-rider.
the class ContentInlineEditor method primeEditorValue.
@Override
public void primeEditorValue(@Nullable Object value) throws DBException {
if (value instanceof DBDContentCached) {
DBDContentCached newValue = (DBDContentCached) value;
Object cachedValue = newValue.getCachedValue();
String stringValue;
if (cachedValue == null) {
// $NON-NLS-1$
stringValue = "";
} else if (cachedValue instanceof byte[]) {
byte[] bytes = (byte[]) cachedValue;
stringValue = DBValueFormatting.getBinaryPresentation(valueController.getExecutionContext().getDataSource()).toString(bytes, 0, bytes.length);
} else if (cachedValue instanceof ByteBuffer) {
byte[] bytes = ((ByteBuffer) cachedValue).array();
stringValue = DBValueFormatting.getBinaryPresentation(valueController.getExecutionContext().getDataSource()).toString(bytes, 0, bytes.length);
} else {
stringValue = cachedValue.toString();
}
control.setText(stringValue);
control.selectAll();
}
}
Aggregations