From a16ede117b9a75276c667ea82e10e9b2e006902d Mon Sep 17 00:00:00 2001 From: Scott Yeadon Date: Tue, 18 Oct 2005 22:55:45 +0000 Subject: [PATCH] Fix to handle SQLException as a result of performance improvement fix git-svn-id: http://scm.dspace.org/svn/repo/trunk@1340 9c30dcfa-912a-0410-8fc2-9e0234be79fd --- .../src/org/dspace/app/oai/DIDLCrosswalk.java | 151 ++++++++++-------- 1 file changed, 81 insertions(+), 70 deletions(-) diff --git a/dspace/src/org/dspace/app/oai/DIDLCrosswalk.java b/dspace/src/org/dspace/app/oai/DIDLCrosswalk.java index 2b5960532c..57c97c360e 100644 --- a/dspace/src/org/dspace/app/oai/DIDLCrosswalk.java +++ b/dspace/src/org/dspace/app/oai/DIDLCrosswalk.java @@ -62,6 +62,7 @@ import java.util.Properties; import java.util.Date; import java.io.*; import java.lang.*; +import java.sql.SQLException; import ORG.oclc.oai.server.crosswalk.Crosswalk; import ORG.oclc.oai.server.verb.CannotDisseminateFormatException; import org.dspace.content.DCDate; @@ -186,78 +187,88 @@ public class DIDLCrosswalk extends Crosswalk /**putfirst item here**/ - //**CYCLE HERE!!!!**// - Bundle[] bundles= item.getBundles("ORIGINAL"); - - if (bundles.length == 0) + //**CYCLE HERE!!!!**// + + try { - metadata.append("

There are no files associated with this item.

"); - } - else - { - -/**cycle bundles**/ - for (int i = 0; i < bundles.length; i++) - { - int flag=0; - Bitstream[] bitstreams = bundles[i].getBitstreams(); - /**cycle bitstreams**/ - for (int k = 0; k < bitstreams.length ; k++) - { - // Skip internal types - if (!bitstreams[k].getFormat().isInternal()) - { - if (flag==0) - { - flag=1; - } - metadata.append(""); - metadata.append(""); - metadata.append(""); - - if (bitstreams[k].getSize()< maxsize){ - - metadata.append(""); - try - { - - byte[] buffer = new byte[bitstreams[k].getSize()]; - - //BufferedInputStream bis=new BufferedInputStream(bitstreams[k].retrieve()); - Context contextl= new Context(); - BufferedInputStream bis=new BufferedInputStream(BitstreamStorageManager.retrieve(contextl,bitstreams[k].getID())); - int size=bis.read(buffer); - contextl.complete(); - - sun.misc.BASE64Encoder encoder=(sun.misc.BASE64Encoder) Class.forName("sun.misc.BASE64Encoder").newInstance(); - String encoding = encoder.encodeBuffer(buffer); - metadata.append(encoding); - } - catch (Exception ex) - { - System.err.println("Caught exception:"+ex.getCause()); - ex.printStackTrace(); - metadata.append("http://retrieve/"+ new Integer(bitstreams[k].getID()).toString() +"bitstream=" + k +"/" ); - - } + Bundle[] bundles= item.getBundles("ORIGINAL"); - - metadata.append(""); - } - metadata.append(""); - - } - /*end bitstream cycle*/ - } - /*end bundle cycle*/ - - } - } + if (bundles.length == 0) + { + metadata.append("

There are no files associated with this item.

"); + } + else + { + + /**cycle bundles**/ + for (int i = 0; i < bundles.length; i++) + { + int flag=0; + Bitstream[] bitstreams = bundles[i].getBitstreams(); + /**cycle bitstreams**/ + for (int k = 0; k < bitstreams.length ; k++) + { + // Skip internal types + if (!bitstreams[k].getFormat().isInternal()) + { + if (flag==0) + { + flag=1; + } + metadata.append(""); + metadata.append(""); + metadata.append(""); + + if (bitstreams[k].getSize()< maxsize){ + + metadata.append(""); + try + { + + byte[] buffer = new byte[bitstreams[k].getSize()]; + + //BufferedInputStream bis=new BufferedInputStream(bitstreams[k].retrieve()); + Context contextl= new Context(); + BufferedInputStream bis=new BufferedInputStream(BitstreamStorageManager.retrieve(contextl,bitstreams[k].getID())); + int size=bis.read(buffer); + contextl.complete(); + + sun.misc.BASE64Encoder encoder=(sun.misc.BASE64Encoder) Class.forName("sun.misc.BASE64Encoder").newInstance(); + String encoding = encoder.encodeBuffer(buffer); + metadata.append(encoding); + } + catch (Exception ex) + { + System.err.println("Caught exception:"+ex.getCause()); + ex.printStackTrace(); + metadata.append("http://retrieve/"+ new Integer(bitstreams[k].getID()).toString() +"bitstream=" + k +"/" ); + + } + + + metadata.append(""); + } + metadata.append(""); + + } + /*end bitstream cycle*/ + } + /*end bundle cycle*/ + } + + } + } + catch (SQLException sqle) + { + System.err.println("Caught exception:"+sqle.getCause()); + sqle.printStackTrace(); + } + //**END CYCLE HERE **//