mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-15 05:53:08 +00:00
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:
@@ -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 **//
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user