+ oid.toString());
// Need to set up diagnostic in here
retval.which = Records_type.nonsurrogatediagnostic_CID;
DefaultDiagFormat_type default_diag = new DefaultDiagFormat_type();
retval.o = default_diag;
default_diag.diagnosticSetId = reg.oidByName("diag-1");
default_diag.condition = BigInteger.valueOf(239);
default_diag.addinfo = new addinfo_inline14_type();
default_diag.addinfo.which = addinfo_inline14_type.v2addinfo_CID;
default_diag.addinfo.o = (Object) (oid.toString());
return retval;
}
LOGGER.finer("requested_syntax=" + requested_syntax);
requested_syntax_name = requested_syntax.getName();
if (requested_syntax_name.equals("usmarc")) {
//HACK! USMARC not yet supported...
requested_syntax_name = "sutrs";
}
LOGGER.finer("requested_syntax_name=" + requested_syntax_name);
} else {
requested_syntax_name = "sutrs"; //REVISIT: should this be
//default? We're sure to have it...
requested_syntax = reg.lookupByName(requested_syntax_name);
}
st.setRequestedSyntax(requested_syntax);
st.setRequestedSyntaxName(requested_syntax_name);
InformationFragment[] raw_records;
RecordFormatSpecification rfSpec = new RecordFormatSpecification(requested_syntax_name,
null, recordFormatSetname);
LOGGER.finer("calling getFragment(" + (start) + "," + count + ")");
raw_records = st.getTaskResultSet().getFragment(start, count, rfSpec);
if (raw_records == null) {
throw new PresentException("Error retrieving records", "30");
}
for (int i = 0; i < raw_records.length; i++) {
LOGGER.finer("Adding record " + i + " to result");
NamePlusRecord_type npr = new NamePlusRecord_type();
npr.name = raw_records[i].getSourceCollectionName();
npr.record = new record_inline13_type();
npr.record.which = record_inline13_type.retrievalrecord_CID;
EXTERNAL_type rec = new EXTERNAL_type();
npr.record.o = rec;
if (requested_syntax_name.equals(Z3950Constants.RECSYN_HTML)
|| requested_syntax_name.equals("sgml")) {
LOGGER.finer("Returning OctetAligned record for "
+ requested_syntax_name);
rec.direct_reference = reg.oidByName(requested_syntax_name);
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.octet_aligned_CID;
String raw_string = (String) raw_records[i]
.getOriginalObject();
rec.encoding.o = raw_string.getBytes();
if (raw_string.length() == 0) {
// can't make a html record
retval.which = Records_type.nonsurrogatediagnostic_CID;
DefaultDiagFormat_type default_diag = new DefaultDiagFormat_type();
retval.o = default_diag;
default_diag.diagnosticSetId = reg.oidByName("diag-1");
default_diag.condition = BigInteger.valueOf(227);
default_diag.addinfo = new addinfo_inline14_type();
default_diag.addinfo.which = addinfo_inline14_type.v2addinfo_CID;
default_diag.addinfo.o = (Object) "1.2.840.10003.5.109.3";
return retval;
}
} else if (requested_syntax_name.equals(
Z3950Constants.RECSYN_XML)) {
// Since XML is our canonical internal schema,
//all realisations of InformationFragment
// are capable of providing an XML representation of
//themselves, so just use the
// Fragments getDocument method.
LOGGER.finer("Returning OctetAligned XML");
java.io.StringWriter sw = new java.io.StringWriter();
try {
OutputFormat format = new OutputFormat(raw_records[i]
.getDocument());
XMLSerializer serial = new XMLSerializer(sw, format);
serial.asDOMSerializer();
serial.serialize(raw_records[i].getDocument()
.getDocumentElement());
} catch (Exception e) {
LOGGER.severe("Problem serializing dom tree to"
+ " result record" + e.getMessage());
}
rec.direct_reference = reg.oidByName(requested_syntax_name);
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.octet_aligned_CID;
rec.encoding.o = sw.toString().getBytes();
} else { //if ( requested_syntax_name.equals
// (Z3950Constants.RECSYN_SUTRS)){
rec.direct_reference = reg.oidByName(requested_syntax_name);
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.single_asn1_type_CID;
rec.encoding.o = ((String) (raw_records[i]
.getOriginalObject()));
}
v.add(npr);
}
} catch (PresentException pe) {
LOGGER.warning("Processing present exception: " + pe.toString());
// Need to set up diagnostic in here
retval.which = Records_type.nonsurrogatediagnostic_CID;
DefaultDiagFormat_type default_diag = new DefaultDiagFormat_type();
retval.o = default_diag;
default_diag.diagnosticSetId = reg.oidByName("diag-1");
if (pe.additional != null) {