private void set(DatasourceConnection dc) { if (dc != null) { datasource = dc.getDatasource(); try { DatabaseMetaData md = dc.getConnection().getMetaData(); md.getDatabaseProductName(); setAdditional(KeyImpl.init("DatabaseName"), md.getDatabaseProductName()); setAdditional(KeyImpl.init("DatabaseVersion"), md.getDatabaseProductVersion()); setAdditional(KeyImpl.init("DriverName"), md.getDriverName()); setAdditional(KeyImpl.init("DriverVersion"), md.getDriverVersion()); // setAdditional("url",md.getURL()); setAdditional(KeyConstants._Datasource, dc.getDatasource().getName()); } catch (SQLException e) { } } }
private static Struct checkTable(DatasourceConnection dc, String tableName, ORMEngine engine) throws PageException { String dbName = dc.getDatasource().getDatabase(); try { DatabaseMetaData md = dc.getConnection().getMetaData(); Struct rows = checkTableFill(md, dbName, tableName); if (rows.size() == 0) { String tableName2 = checkTableValidate(md, dbName, tableName); if (tableName2 != null) rows = checkTableFill(md, dbName, tableName2); } if (rows.size() == 0) { // ORMUtil.printError("there is no table with name ["+tableName+"] defined", engine); return null; } return rows; } catch (SQLException e) { throw Caster.toPageException(e); } }
private synchronized SessionFactory getSessionFactory(PageContext pc, boolean init) throws PageException { ApplicationContextPro appContext = ((ApplicationContextPro) pc.getApplicationContext()); if (!appContext.isORMEnabled()) throw new ORMException(this, "ORM is not enabled in application.cfc/cfapplication"); this.hash = hash(appContext); // datasource String dsn = appContext.getORMDatasource(); if (StringUtil.isEmpty(dsn)) throw new ORMException(this, "missing datasource defintion in application.cfc/cfapplication"); if (!dsn.equalsIgnoreCase(datasource)) { configuration = null; if (_factory != null) _factory.close(); _factory = null; datasource = dsn.toLowerCase(); } // config ormConf = appContext.getORMConfiguration(); // List<Component> arr = null; arr = null; if (init) { if (ormConf.autogenmap()) { arr = HibernateSessionFactory.loadComponents(pc, this, ormConf); cfcs.clear(); } else throw new HibernateException(this, "orm setting autogenmap=false is not supported yet"); } // load entities if (!ArrayUtil.isEmpty(arr)) { loadNamingStrategy(ormConf); DatasourceConnectionPool pool = ((ConfigWebImpl) pc.getConfig()).getDatasourceConnectionPool(); DatasourceConnection dc = pool.getDatasourceConnection(pc, pc.getConfig().getDataSource(dsn), null, null); // DataSourceManager manager = pc.getDataSourceManager(); // DatasourceConnection dc=manager.getConnection(pc,dsn, null, null); this.ds = dc.getDatasource(); try { Iterator<ComponentPro> it = arr.iterator(); while (it.hasNext()) { createMapping(pc, it.next(), dc, ormConf); } } finally { pool.releaseDatasourceConnection(dc); // manager.releaseConnection(pc,dc); } if (arr.size() != cfcs.size()) { ComponentPro cfc; String name, lcName; Map<String, String> names = new HashMap<String, String>(); Iterator<ComponentPro> it = arr.iterator(); while (it.hasNext()) { cfc = it.next(); name = HibernateCaster.getEntityName(cfc); lcName = name.toLowerCase(); if (names.containsKey(lcName)) throw new ORMException( this, "Entity Name [" + name + "] is ambigous, [" + names.get(lcName) + "] and [" + cfc.getPageSource().getDisplayPath() + "] use the same entity name."); names.put(lcName, cfc.getPageSource().getDisplayPath()); } } } arr = null; if (configuration != null) return _factory; // MUST // cacheconfig // cacheprovider // ... String mappings = HibernateSessionFactory.createMappings(this, cfcs); DatasourceConnectionPool pool = ((ConfigWebImpl) pc.getConfig()).getDatasourceConnectionPool(); DatasourceConnection dc = pool.getDatasourceConnection(pc, pc.getConfig().getDataSource(dsn), null, null); try { configuration = HibernateSessionFactory.createConfiguration(this, mappings, dc, ormConf); } catch (Exception e) { throw Caster.toPageException(e); } finally { pool.releaseDatasourceConnection(dc); } addEventListeners(pc, configuration, ormConf, cfcs); EntityTuplizerFactory tuplizerFactory = configuration.getEntityTuplizerFactory(); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, CFCEntityTuplizer.class); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, MapEntityTuplizer.class); tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, AbstractEntityTuplizerImpl.class); tuplizerFactory.registerDefaultTuplizerClass(EntityMode.POJO, AbstractEntityTuplizerImpl.class); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.POJO, // AbstractEntityTuplizerImpl.class); // configuration.setEntityResolver(new CFCEntityResolver()); // configuration.setEntityNotFoundDelegate(new EntityNotFoundDelegate()); return _factory = configuration.buildSessionFactory(); }