protected void updateStorageDataSource() throws InvalidSyntaxException, MException { Collection<ServiceReference<DataSource>> refs = context.getServiceReferences(DataSource.class, "(osgi.jndi.service.name="+storageDsName+")"); if (refs.size() == 0) throw new MException("datasource not found",storageDsName); storageDataSource = context.getService(refs.iterator().next()); storageDsProvider.setDataSource(storageDataSource); try { String driver = storageDataSource.getConnection().getMetaData().getDriverName(); Dialect dialect = Dialect.findDialect(driver); storageDsProvider.setDialect(dialect); } catch (Exception e) { log().e(e); } }
/** * Create a database structure from configuration. * * @param data * @param db * @param caoMeta * @param cleanup * @throws Exception */ public void createStructure(IConfig data, DbConnection db,MetadataBundle caoMeta, boolean cleanup) throws Exception { createTables(data,db,caoMeta, cleanup); createIndexes(data,db,caoMeta, cleanup); createData(data,db); }
protected String getFieldConfig(IConfig f) { String type = getDbType(f); String ret = normalizeColumnName(f.getString("name",null)) + " " + type; String def = f.getExtracted("default"); if (def != null) { def = getDbDef(def); ret = ret + " DEFAULT " + def; } boolean notNull = f.getBoolean("notnull", false); if (notNull) ret = ret + " NOT NULL"; else ret = ret + " NULL"; return ret; }
public void init() { try { URL url = MSystem.locateResource(this, "SqlDbStorage.xml"); DbConnection con = pool.getConnection(); XmlConfigFile data = new XmlConfigFile(url.openStream()); data.setString("prefix", prefix); pool.getDialect().createStructure(data, con, null, false); con.close(); } catch (Exception e) { log().e(e); } }
DbPrepared(DbPool pool, String queryString, String language) throws MException { this.original = queryString; this.pool = pool; query = pool.getDialect().getQueryParser(language).compileString(queryString); // query = new SimpleQueryParser().compileString(queryString); // query = new SqlCompiler().compileString(queryString); }
/** * Return a database specific type for the normalized type from configuration. * @param f * @return x */ public String getDbType(IConfig f) { return getDbType(f.getString("type","string"),f.getString("size", "100")); }
/** {@inheritDoc} */ @Override public DbStatement createStatement(String sql) throws MException { return createStatement(sql, provider.getDialect().detectLanguage(sql)); }
@Override public <T> String toQualification(AQuery<T> qualification) { StringBuilder buffer = new StringBuilder(); qualification.setContext(new SqlDialectCreateContext(this, buffer)); getPool().getDialect().createQuery(qualification, qualification); return buffer.toString(); }
manager.getPool().getDialect().createStructure(cstr, con, manager.getCaoMetadata(), cleanup);
/** {@inheritDoc} */ @Override public Parser createQueryCompiler(String language) throws MException { if (pool != null) return pool.getDialect().getQueryParser(language); return new SimpleQueryCompiler(); }
/** {@inheritDoc} */ @Override public Dialect getDialect() { if (dialect == null) { // default is mysql, can ignore sync! if (dataSource == null) return null; String driverName = null; try { Connection con = dataSource.getConnection(); driverName = con.getMetaData().getDriverName(); con.close(); } catch (Throwable t) { log().d(t); } dialect = Dialect.findDialect(driverName); log().i("found dialect", getName(), driverName, dialect); } return dialect; }
@Override public synchronized Dialect getDialect() { if (dialect == null) { // ResourceNode concon = config.getNode("connection"); String dialectName = config.getExtracted("dialect"); if (dialectName != null) { try { dialect = (Dialect)activator.getObject(dialectName); } catch (Exception e) { log().t(dialect,e); } } if (dialect == null) { dialectName = config.getExtracted("driver"); if (dialectName != null) { dialect = Dialect.findDialect(dialectName); } } log().i("found dialect",getName(), dialectName, dialect); } return dialect; }