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
This commit is contained in:
Scott Yeadon
2005-10-18 22:55:45 +00:00
parent df5035d72f
commit a16ede117b

View File

@@ -62,6 +62,7 @@ import java.util.Properties;
import java.util.Date; import java.util.Date;
import java.io.*; import java.io.*;
import java.lang.*; import java.lang.*;
import java.sql.SQLException;
import ORG.oclc.oai.server.crosswalk.Crosswalk; import ORG.oclc.oai.server.crosswalk.Crosswalk;
import ORG.oclc.oai.server.verb.CannotDisseminateFormatException; import ORG.oclc.oai.server.verb.CannotDisseminateFormatException;
import org.dspace.content.DCDate; import org.dspace.content.DCDate;
@@ -187,77 +188,87 @@ public class DIDLCrosswalk extends Crosswalk
//**CYCLE HERE!!!!**// //**CYCLE HERE!!!!**//
Bundle[] bundles= item.getBundles("ORIGINAL");
if (bundles.length == 0) try
{
metadata.append("<P>There are no files associated with this item.</P>");
}
else
{ {
Bundle[] bundles= item.getBundles("ORIGINAL");
/**cycle bundles**/ if (bundles.length == 0)
for (int i = 0; i < bundles.length; i++) {
{ metadata.append("<P>There are no files associated with this item.</P>");
int flag=0; }
Bitstream[] bitstreams = bundles[i].getBitstreams(); else
/**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("<didl:Component id=" + "\"uuid-"+ UUIDFactory.generateUUID().toString() + "\">");
metadata.append("<didl:Resource ref=\""+ConfigurationManager.getProperty("dspace.url")+"/bitstream/"+itemhandle+"/"+bitstreams[k].getSequenceID()+"/"+bitstreams[k].getName() );
metadata.append("\" mimeType=\"");
metadata.append(bitstreams[k].getFormat().getMIMEType());
metadata.append("\">");
metadata.append("</didl:Resource>");
if (bitstreams[k].getSize()< maxsize){ /**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("<didl:Component id=" + "\"uuid-"+ UUIDFactory.generateUUID().toString() + "\">");
metadata.append("<didl:Resource ref=\""+ConfigurationManager.getProperty("dspace.url")+"/bitstream/"+itemhandle+"/"+bitstreams[k].getSequenceID()+"/"+bitstreams[k].getName() );
metadata.append("\" mimeType=\"");
metadata.append(bitstreams[k].getFormat().getMIMEType());
metadata.append("\">");
metadata.append("</didl:Resource>");
metadata.append("<didl:Resource mimeType=\""); if (bitstreams[k].getSize()< maxsize){
metadata.append(bitstreams[k].getFormat().getMIMEType());
metadata.append("\" encoding=\"base64\">");
try
{
byte[] buffer = new byte[bitstreams[k].getSize()]; metadata.append("<didl:Resource mimeType=\"");
metadata.append(bitstreams[k].getFormat().getMIMEType());
metadata.append("\" encoding=\"base64\">");
try
{
//BufferedInputStream bis=new BufferedInputStream(bitstreams[k].retrieve()); byte[] buffer = new byte[bitstreams[k].getSize()];
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(); //BufferedInputStream bis=new BufferedInputStream(bitstreams[k].retrieve());
String encoding = encoder.encodeBuffer(buffer); Context contextl= new Context();
metadata.append(encoding); BufferedInputStream bis=new BufferedInputStream(BitstreamStorageManager.retrieve(contextl,bitstreams[k].getID()));
} int size=bis.read(buffer);
catch (Exception ex) contextl.complete();
{
System.err.println("Caught exception:"+ex.getCause());
ex.printStackTrace();
metadata.append("http://retrieve/"+ new Integer(bitstreams[k].getID()).toString() +"bitstream=" + k +"/" );
} 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("</didl:Resource>"); metadata.append("</didl:Resource>");
} }
metadata.append("</didl:Component>"); metadata.append("</didl:Component>");
} }
/*end bitstream cycle*/ /*end bitstream cycle*/
} }
/*end bundle cycle*/ /*end bundle cycle*/
}
}
}
catch (SQLException sqle)
{
System.err.println("Caught exception:"+sqle.getCause());
sqle.printStackTrace();
}
}
}
//**END CYCLE HERE **// //**END CYCLE HERE **//