/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: org_apache_derby_jdbc_EmbeddedDriver.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.cmf.dam.contentstores.textstoredrivers; import com.uwyn.rife.config.RifeConfig; import com.uwyn.rife.database.Datasource; import com.uwyn.rife.database.queries.CreateTable; import java.io.IOException; import java.io.OutputStream; import java.io.Reader; import java.sql.Clob; import java.sql.ResultSet; import java.sql.SQLException; public class org_apache_derby_jdbc_EmbeddedDriver extends generic { public org_apache_derby_jdbc_EmbeddedDriver(Datasource datasource) { super(datasource); mCreateTableContent = new CreateTable(getDatasource()) .table(RifeConfig.Cmf.getTableContentStoreText()) .column("contentId", int.class, CreateTable.NOTNULL) .column(getContentSizeColumnName(), int.class, CreateTable.NOTNULL) .column("content", Clob.class) .primaryKey("PK_CONTENTTEXT", "contentId") .foreignKey("FK_CONTENTTEXT", RifeConfig.Cmf.getTableContentInfo(), "contentId", "contentId"); } protected void outputContentColumn(ResultSet resultSet, OutputStream os) throws SQLException { Clob clob = resultSet.getClob("content"); Reader text_reader = clob.getCharacterStream(); char[] buffer = new char[512]; int size = 0; try { while ((size = text_reader.read(buffer)) != -1) { os.write(new String(buffer).getBytes("UTF-8"), 0, size); } os.flush(); } catch (IOException e) { // don't do anything, the client has probably disconnected } } }