/** * Returns a opened connection resource. If a previous close connection resource already exists, * this already existing connection resource is returned. * * @return opened connection resource */ public ConnectionResource getConnectionResource() throws EFapsException { ConnectionResource con = null; if (this.connectionStack.isEmpty()) { try { con = new ConnectionResource(this, getDataSource().getConnection()); } catch (SQLException e) { e.printStackTrace(); throw new EFapsException(getClass(), "getConnectionResource.SQLException", e); } this.connectionStore.add(con); } else { con = this.connectionStack.pop(); } con.open(); // System.out.println("getConnectionResource.con="+con); return con; }
/** * The method tests if all resources (JDBC connection and store resources) are closed, that means * that the resources are freeed and returned for reuse. * * @return <i>true</i> if all resources are closed, otherwise <i>false</i> is returned * @see #connectionStore * @see #storeStore */ public boolean allConnectionClosed() { boolean closed = true; for (ConnectionResource con : this.connectionStore) { if (con.isOpened()) { closed = false; break; } } if (closed) { for (StoreResource store : this.storeStore) { if (store.isOpened()) { closed = false; break; } } } return closed; }
/** * The executes is done without calling triggers and check of access rights. The method executes * the delete. For the object, a delete is made in all SQL tables from the type (if the SQL table * is not read only!). If a store is defined for the type, the checked in file is also deleted * (with the help of the store resource implementation; if the store resource implementation has * not implemented the delete, the file is not deleted!).<br> * It is not checked if the current context user has access to delete the eFaps object defined in * {@link #instance}. * * @see SQLTable#readOnly * @throws EFapsException on error */ public void executeWithoutTrigger() throws EFapsException { final Context context = Context.getThreadContext(); ConnectionResource con = null; try { con = context.getConnectionResource(); Statement stmt = null; try { stmt = con.getConnection().createStatement(); final SQLTable mainTable = getInstance().getType().getMainTable(); for (final SQLTable curTable : getInstance().getType().getTables()) { if ((curTable != mainTable) && !curTable.isReadOnly()) { final StringBuilder buf = new StringBuilder(); buf.append("delete from ").append(curTable.getSqlTable()).append(" "); buf.append("where ") .append(curTable.getSqlColId()) .append("=") .append(getInstance().getId()) .append(""); if (LOG.isTraceEnabled()) { LOG.trace(buf.toString()); } stmt.addBatch(buf.toString()); } } final StringBuilder buf = new StringBuilder(); buf.append("delete from ").append(mainTable.getSqlTable()).append(" "); buf.append("where ") .append(mainTable.getSqlColId()) .append("=") .append(getInstance().getId()) .append(""); if (LOG.isTraceEnabled()) { LOG.trace(buf.toString()); } stmt.addBatch(buf.toString()); stmt.executeBatch(); } catch (final SQLException e) { throw new EFapsException( getClass(), "executeWithoutAccessCheck.SQLException", e, this.instance); } finally { try { if (stmt != null) { stmt.close(); } } catch (final java.sql.SQLException e) { LOG.warn("Catched SQLException in class:" + Delete.class); } } con.commit(); } finally { if ((con != null) && con.isOpened()) { con.abort(); } } Resource storeRsrc = null; try { if (getInstance().getType().hasStore()) { storeRsrc = context.getStoreResource(getInstance()); storeRsrc.delete(); storeRsrc.commit(); } } finally { if ((storeRsrc != null) && storeRsrc.isOpened()) { storeRsrc.abort(); } } }
public void close() { System.out.println("--------------------------------- context.close"); try { getConnection().close(); } catch (Exception e) { } setConnection(null); if ((threadContext.get() != null) && (threadContext.get() == this)) { threadContext.set(null); } // check if all JDBC connection are close... for (ConnectionResource con : this.connectionStore) { try { // TODO: write in log-file... if ((con.getConnection() != null) && !con.getConnection().isClosed()) { con.getConnection().close(); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println(""); System.out.println(""); System.out.println("connection not closed"); System.out.println(""); System.out.println(""); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); } } catch (SQLException e) { System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println(""); System.out.println(""); System.out.println( "SQLException is thrown while trying to get close status of connection or while trying to close"); System.out.println(""); System.out.println(""); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); System.out.println("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); } } }