org.benow.repository.mapping
Class JSQLClassMapping
java.lang.Object
org.benow.java.mapping.ClassMappingImpl
org.benow.repository.mapping.JSQLClassMapping
- All Implemented Interfaces:
- org.benow.java.mapping.ClassMapping
public class JSQLClassMapping
- extends org.benow.java.mapping.ClassMappingImpl
Wrapper representing sql entry in castor mapping. NOTE could have async notification for run-time
modification
- Author:
- andy
| Nested classes/interfaces inherited from class org.benow.java.mapping.ClassMappingImpl |
org.benow.java.mapping.ClassMappingImpl.Flatten |
| Fields inherited from class org.benow.java.mapping.ClassMappingImpl |
fieldMappingByName, fields, forClass, mapTo, pkgMapping, superClass |
|
Constructor Summary |
protected |
JSQLClassMapping(org.benow.java.mapping.PackageMapping pkgMapping,
java.lang.Class forClass)
|
| Methods inherited from class org.benow.java.mapping.ClassMappingImpl |
addFieldMapping, afterCreateFieldMapping, compare, getCollectionTypeOverride, getFieldMapping, getFieldMappingQuiet, getFieldMappings, getFieldPaths, getForClass, getForClassAsString, getMapTo, getShortName, toString, validateSuperClass |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
COMMENT_CLASS_SCHEMA_START
public static final java.lang.String COMMENT_CLASS_SCHEMA_START
- See Also:
- Constant Field Values
table
public ca.reachable.sql.schema.Table table
JSQLClassMapping
protected JSQLClassMapping(org.benow.java.mapping.PackageMapping pkgMapping,
java.lang.Class forClass)
getTableName
public java.lang.String getTableName()
createInstance
public java.lang.Object createInstance()
throws java.lang.InstantiationException
- Specified by:
createInstance in interface org.benow.java.mapping.ClassMapping- Overrides:
createInstance in class org.benow.java.mapping.ClassMappingImpl
- Throws:
java.lang.InstantiationException
getCollectionFieldMappings
public java.util.List<org.benow.java.mapping.FieldMapping> getCollectionFieldMappings()
init
public void init()
- Overrides:
init in class org.benow.java.mapping.ClassMappingImpl
acceptField
protected boolean acceptField(java.lang.reflect.Field curr)
- in ClassSchemaInfo Create a diff between current schema and in db schema.
requires:
- create schema objects from class
- load schema objects from db
- compare schema objects
- generate diff sql
private void applySQL(ClassSchemaInfo info, String sql) throws IOException { File outFile =
File.createTempFile(getForClass().getSimpleName() + "." + info.version + ".to." + version, ".sql");
Util.copy(new StringReader(sql), new FileWriter(outFile));
System.out.println("Generated sql for: " + forClass.getName() + " in " + outFile.getAbsolutePath()); try
{ File databaseFile = JDBCRepository.getDatabaseFile(); log.info("Applying sql to database: " +
databaseFile.getAbsolutePath()); // NOTE could do remote databases // NOTE should be delegate. should
handle mysql, etc ISQL isql = new ISQL(databaseFile.getAbsolutePath(), "localhost", "" +
JDBCRepository.CFG_USER.getValue(), "" + JDBCRepository.CFG_PASSWORD.getValue()); isql.exec(outFile);
log.info("Integrated schema into database for: " + getForClass().getName() + " from:" +
outFile.getAbsolutePath()); outFile.delete(); return; } catch (ObjectRepositoryException e1) {
log.warn("Database must be local"); } catch (InterruptedException e1) { log.warn("Error running isql",
e1); } catch (IOException e1) { log.warn("Error running isql", e1); } log.info("Failed sql is in: " +
outFile.getAbsolutePath()); }
- Overrides:
acceptField in class org.benow.java.mapping.ClassMappingImpl
getFieldMappings
public java.util.Collection<org.benow.java.mapping.FieldMapping> getFieldMappings()
- Specified by:
getFieldMappings in interface org.benow.java.mapping.ClassMapping- Overrides:
getFieldMappings in class org.benow.java.mapping.ClassMappingImpl
createFieldMapping
public org.benow.java.mapping.FieldMapping createFieldMapping(java.lang.reflect.Field forField)
- Specified by:
createFieldMapping in interface org.benow.java.mapping.ClassMapping- Overrides:
createFieldMapping in class org.benow.java.mapping.ClassMappingImpl
beforeFieldLoad
protected void beforeFieldLoad()
- Overrides:
beforeFieldLoad in class org.benow.java.mapping.ClassMappingImpl
afterFieldLoad
protected void afterFieldLoad()
- Overrides:
afterFieldLoad in class org.benow.java.mapping.ClassMappingImpl
constructFieldMapping
protected org.benow.java.mapping.FieldMappingImpl constructFieldMapping(java.lang.reflect.Field forField)
- Specified by:
constructFieldMapping in class org.benow.java.mapping.ClassMappingImpl
getFieldByMethod
public JSQLFieldMapping getFieldByMethod(java.lang.reflect.Method method)
getSQLTableAbbreviation
public java.lang.String getSQLTableAbbreviation()
- Note that two classes with same starting letter with return same abbreviation. Manually create the query
using getTableName() in such cases.
- Returns:
getSQLGetFieldsSnippet
public java.lang.String getSQLGetFieldsSnippet()
getSQLGetFieldsSnippet
public java.lang.String getSQLGetFieldsSnippet(java.lang.String tableAbbreviation)
getSQLColumn
public java.lang.String getSQLColumn(java.lang.String javaFieldName)
getSQLTableSnippet
public java.lang.String getSQLTableSnippet()
getSchema
public ca.reachable.sql.schema.Schema getSchema()
validateSchema
public void validateSchema(Transaction tx)
- Validates the schema required to store objects of specified class. Should be called before persisting,
once called, will be skipped in future calls.
- Parameters:
transaction -
getJSQLFieldMapping
public JSQLFieldMapping getJSQLFieldMapping(java.lang.String name)
getJSQLFieldMappings
public java.util.List<JSQLFieldMapping> getJSQLFieldMappings()
getKeyFieldMapping
public JSQLFieldMapping getKeyFieldMapping()
getFieldValueByPath
public java.lang.Object getFieldValueByPath(java.lang.Object instance,
java.lang.String currPath)
- Gets a value from an instance by the given path. Path may span
objects, if fetching is implemented.
Paths are in xpath-like format,
field1, field1/field2, etc
- Parameters:
instance - currPath -
- Returns: