Closed MichaelErichsen closed 4 years ago
Stack trace:
java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Clob at org.historyresearchenvironment.databaseadmin.parts.H2TableNavigator.exportCsv(H2TableNavigator.java:246) at org.historyresearchenvironment.databaseadmin.parts.H2TableNavigator.exportTable(H2TableNavigator.java:279) at org.historyresearchenvironment.databaseadmin.parts.H2TableNavigator.access$2(H2TableNavigator.java:269) at org.historyresearchenvironment.databaseadmin.parts.H2TableNavigator$3.widgetSelected(H2TableNavigator.java:155) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4428) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4238) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3817) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:162) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1499) at org.eclipse.equinox.launcher.Main.main(Main.java:1472)
Code:
final H2TableProvider provider = new H2TableProvider(tableName);
final List<H2TableModel> modelList = provider.getModelList();
final List<List<Object>> rows = provider.selectAll();
final SimpleResultSet rs = new SimpleResultSet();
for (int i = 0; i < provider.getCount(); i++) {
switch (modelList.get(i).getNumericType()) {
case HreConstants.DOUBLE:
case HreConstants.VARBINARY:
case HreConstants.SMALLINT:
case HreConstants.INTEGER:
case HreConstants.BIGINT:
rs.addColumn(modelList.get(i).getName(), modelList.get(i).getNumericType(),
modelList.get(i).getPrecision(), modelList.get(i).getScale());
break;
case HreConstants.VARCHAR:
rs.addColumn(modelList.get(i).getName(), modelList.get(i).getNumericType(), 0,
modelList.get(i).getScale());
break;
default:
rs.addColumn(modelList.get(i).getName(), modelList.get(i).getNumericType(), 0, 0);
break;
}
}
Object[] oa;
for (int i = 0; i < rows.size(); i++) {
oa = new Object[provider.getCount()];
for (int j = 0; j < oa.length; j++) {
LOGGER.info("Column " + i + ", column " + j + ", type " + modelList.get(j).getType() + ", value "
+ rows.get(i).get(j));
if (modelList.get(j).getType().equals("CLOB")) {
oa[j] = (Clob) rows.get(i).get(j);
} else
oa[j] = rows.get(i).get(j);
}
rs.addRow(oa);
}
final Csv csvFile = new Csv();
csvFile.setFieldSeparatorWrite(",");
csvFile.write(fileName, rs, "UTF-8");
Closed - no longer relevant to current Build of HRE
Exporting a table with a CLOB complains that a String cannot be cast to a CLOB. Occurs in H2TableLNavigator Surfaces in table DIGITALS