1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
========== licence begin GPL
Copyright (C) 2002-2003 SAP AG
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
========== licence end
*/
package com.sap.dbtech.util;
import com.sap.dbtech.jdbc.packet.RequestPacket;
import com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB;
import java.util.Hashtable;
/**
* Title: SAP DB JDBC Driver 3.0
* Description: Implementation of a JDBC Driver for SAP DB witch fulfill the JDBC 3.0 Standard
* Copyright: Copyright (c) 2001
* Company: SAP AG
* @author
* @version 1.0
*/
public class GarbageCursor extends GarbageCan {
private Hashtable garbage;
public GarbageCursor() {
super(1);
this.garbage = new Hashtable();
}
public void throwIntoGarbageCan (Object obj) {
this.garbage.put(obj,obj);
}
protected int getGarbageSize(){
return this.garbage.size();
}
public synchronized boolean emptyCan(com.sap.dbtech.jdbc.packet.RequestPacket requestPacket)
{
if(currentEmptyRun2)
return false;
currentEmptyRun2=true;
boolean packetActionFailed=false;
java.util.Enumeration cn = this.garbage.keys();
while(cn.hasMoreElements() &&
!packetActionFailed) {
Object o=this.garbage.remove(cn.nextElement());
packetActionFailed = ! packetAction(requestPacket, o);
if(packetActionFailed) {
this.garbage.put(o,o);
}
}
currentEmptyRun2=false;
return !packetActionFailed;
}
public void emptyCan () {
this.garbage.clear();
}
public boolean packetAction(RequestPacket requestPacket, Object obj) {
try {
return requestPacket.initDbsCommand("CLOSE \"" + ((String) obj)
+ "\"", false, false, java.sql.ResultSet.TYPE_FORWARD_ONLY);
} catch (Exception e) {
return false;
}
}
public boolean restoreFromGarbageCan (Object obj){
boolean erg = (this.garbage.remove(obj) != null)?true:false;
return erg;
}
}
|