Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.j256.ormlite.db;
  
  import java.util.List;
 
 
Derby database type information used to create the tables, etc.. This is for an embedded Derby database. For client connections to a remote Derby server, you should use DerbyClientServerDatabaseType.

Author(s):
graywatson
 
 public class DerbyEmbeddedDatabaseType extends BaseDatabaseType implements DatabaseType {
 
 	protected final static String DATABASE_URL_PORTION = "derby";
 	private final static String DRIVER_CLASS_NAME = "org.apache.derby.jdbc.EmbeddedDriver";
 	private final static String DATABASE_NAME = "Derby";
 
 	private static FieldConverter objectConverter;
 	private static FieldConverter booleanConverter;
 	private static FieldConverter charConverter;
 
 	public boolean isDatabaseUrlThisType(String urlString dbTypePart) {
 		if (!.equals(dbTypePart)) {
 			return false;
 		}
 		// jdbc:derby:sample;
 		String[] parts = url.split(":");
 		return (parts.length >= 3 && !parts[2].startsWith("//"));
 	}
 
 	protected String getDriverClassName() {
 	}
 
 	public String getDatabaseName() {
 		return ;
 	}
 
 		// we are only overriding certain types
 		switch (dataType.getSqlType()) {
 			case  :
 				if ( == null) {
 				}
 				return ;
 			case  :
 				if ( == null) {
 				}
 				return ;
 			case  :
 				if ( == null) {
 				}
 				return ;
 			default :
 				return super.getFieldConverter(dataType);
 		}
 	}
 
 	protected void appendLongStringType(StringBuilder sbint fieldWidth) {
 		sb.append("LONG VARCHAR");
 	}
 
 	public void appendOffsetValue(StringBuilder sblong offset) {
 		// I love the required ROWS prefix. Hilarious.
 		sb.append("OFFSET ").append(offset).append(" ROWS ");
 	}
 
 	protected void appendBooleanType(StringBuilder sbint fieldWidth) {
 		// I tried "char for bit data" and "char(1)" with no luck
 		sb.append("SMALLINT");
 	}
 
 	protected void appendCharType(StringBuilder sbint fieldWidth) {
 		sb.append("SMALLINT");
 	}
	protected void appendByteType(StringBuilder sbint fieldWidth) {
		sb.append("SMALLINT");
	}
	protected void appendByteArrayType(StringBuilder sbint fieldWidth) {
		sb.append("LONG VARCHAR FOR BIT DATA");
	}
	protected void configureGeneratedId(String tableNameStringBuilder sbFieldType fieldType,
			List<StringstatementsBeforeList<StringstatementsAfterList<StringadditionalArgs,
			List<StringqueriesAfter) {
		sb.append("GENERATED BY DEFAULT AS IDENTITY ");
		configureId(sbfieldTypestatementsBeforeadditionalArgsqueriesAfter);
	}
	public void appendEscapedEntityName(StringBuilder sbString name) {
		sb.append('\"').append(name).append('\"');
	}
	public boolean isLimitSqlSupported() {
		return false;
	}
		return "SELECT 1 FROM SYSIBM.SYSDUMMY1";
	}
	public boolean isEntityNamesMustBeUpCase() {
		return true;
	}
		/*
		 * This is unfortunate but Derby does not allow me to insert a null into a generated-id field. Everyone else
		 * does of course.
		 */
		return false;
	}

Conversion from the Object Java field to the BLOB Jdbc type because the varbinary needs a size otherwise.
	private static class ObjectFieldConverter extends BaseFieldConverter implements FieldConverter {
		public SqlType getSqlType() {
			return .;
		}
		public Object parseDefaultString(FieldType fieldTypeString defaultStrthrows SQLException {
			throw new SQLException("Default values for serializable types are not supported");
		}
		public Object resultToSqlArg(FieldType fieldTypeDatabaseResults resultsint columnPosthrows SQLException {
			return results.getBlobStream(columnPos);
		}
		public Object sqlArgToJava(FieldType fieldTypeObject sqlArgint columnPosthrows SQLException {
			InputStream stream = (InputStreamsqlArg;
			try {
				ObjectInputStream objInStream = new ObjectInputStream(stream);
				return objInStream.readObject();
catch (Exception e) {
				throw SqlExceptionUtil.create("Could not read serialized object from result blob"e);
finally {
				try {
					stream.close();
catch (IOException e) {
					// ignore close exception
				}
			}
		}
		public Object javaToSqlArg(FieldType fieldTypeObject javaObjectthrows SQLException {
			try {
				ObjectOutputStream objOutStream = new ObjectOutputStream(outStream);
				objOutStream.writeObject(javaObject);
catch (Exception e) {
				throw SqlExceptionUtil.create("Could not write serialized object to output stream"e);
			}
			return new SerialBlob(outStream.toByteArray());
		}
		public boolean isStreamType() {
			return true;
		}
	}

Conversion from the char Java field because Derby can't convert Character to type char. Jesus.
	private static class CharFieldConverter extends BaseFieldConverter implements FieldConverter {
		public SqlType getSqlType() {
		}
		public Object javaToSqlArg(FieldType fieldTypeObject javaObject) {
			char character = (char) (CharacterjavaObject;
			return (intcharacter;
		}
		public Object parseDefaultString(FieldType fieldTypeString defaultStrthrows SQLException {
			if (defaultStr.length() != 1) {
				throw new SQLException("Problems with field " + fieldType + ", default string to long: '" + defaultStr
"'");
			}
			return (intdefaultStr.charAt(0);
		}
		public Object resultToSqlArg(FieldType fieldTypeDatabaseResults resultsint columnPosthrows SQLException {
			return results.getInt(columnPos);
		}
		public Object sqlArgToJava(FieldType fieldTypeObject sqlArgint columnPos) {
			int intVal = (IntegersqlArg;
			return (charintVal;
		}
	}
New to GrepCode? Check out our FAQ X