use of org.codice.ddf.spatial.ogc.csw.catalog.common.CswRecordCollection in project ddf by codice.
the class TestCswEndpoint method testPostRetrieveProductGetRecordById.
@Test
public void testPostRetrieveProductGetRecordById() throws IOException, ResourceNotFoundException, ResourceNotSupportedException, CswException {
final GetRecordByIdType getRecordByIdType = new GetRecordByIdType();
getRecordByIdType.setOutputFormat(MediaType.APPLICATION_OCTET_STREAM);
getRecordByIdType.setOutputSchema(OCTET_STREAM_OUTPUT_SCHEMA);
getRecordByIdType.setId(Collections.singletonList("123"));
setUpMocksForProductRetrieval(true);
CswRecordCollection cswRecordCollection = csw.getRecordById(getRecordByIdType, null);
assertThat(cswRecordCollection.getResource(), is(notNullValue()));
}
use of org.codice.ddf.spatial.ogc.csw.catalog.common.CswRecordCollection in project ddf by codice.
the class TestCswEndpoint method testRetrieveProductGetRecordByIdWithRange.
@Test
public void testRetrieveProductGetRecordByIdWithRange() throws IOException, ResourceNotFoundException, ResourceNotSupportedException, CswException {
final GetRecordByIdRequest getRecordByIdRequest = new GetRecordByIdRequest();
getRecordByIdRequest.setId("123");
getRecordByIdRequest.setOutputFormat(MediaType.APPLICATION_OCTET_STREAM);
getRecordByIdRequest.setOutputSchema(OCTET_STREAM_OUTPUT_SCHEMA);
setUpMocksForProductRetrieval(true);
CswRecordCollection cswRecordCollection = csw.getRecordById(getRecordByIdRequest, RANGE_VALUE);
assertThat(cswRecordCollection.getResource(), is(notNullValue()));
}
use of org.codice.ddf.spatial.ogc.csw.catalog.common.CswRecordCollection in project ddf by codice.
the class TestCswEndpoint method testRetrieveProductGetRecordById.
@Test
public void testRetrieveProductGetRecordById() throws IOException, ResourceNotFoundException, ResourceNotSupportedException, CswException {
final GetRecordByIdRequest getRecordByIdRequest = new GetRecordByIdRequest();
getRecordByIdRequest.setId("123");
getRecordByIdRequest.setOutputFormat(MediaType.APPLICATION_OCTET_STREAM);
getRecordByIdRequest.setOutputSchema(OCTET_STREAM_OUTPUT_SCHEMA);
setUpMocksForProductRetrieval(true);
CswRecordCollection cswRecordCollection = csw.getRecordById(getRecordByIdRequest, null);
assertThat(cswRecordCollection.getResource(), is(notNullValue()));
}
use of org.codice.ddf.spatial.ogc.csw.catalog.common.CswRecordCollection in project ddf by codice.
the class CswQueryResponseTransformer method buildCollection.
private CswRecordCollection buildCollection(SourceResponse sourceResponse, Map<String, Serializable> arguments) {
CswRecordCollection recordCollection = new CswRecordCollection();
recordCollection.setNumberOfRecordsMatched(sourceResponse.getHits());
recordCollection.setNumberOfRecordsReturned(sourceResponse.getResults().size());
recordCollection.setStartPosition(sourceResponse.getRequest().getQuery().getStartIndex());
Object elementSetTypeArg = arguments.get(CswConstants.ELEMENT_SET_TYPE);
if (elementSetTypeArg instanceof ElementSetType) {
ElementSetType elementSetType = (ElementSetType) elementSetTypeArg;
recordCollection.setElementSetType(elementSetType);
}
Object elementNamesArg = arguments.get(CswConstants.ELEMENT_NAMES);
if (elementNamesArg instanceof QName[]) {
QName[] qnames = (QName[]) elementNamesArg;
if (qnames.length > 0) {
List<QName> elementNames = new ArrayList();
for (QName entry : qnames) {
elementNames.add(entry);
}
recordCollection.setElementName(elementNames);
}
}
Object isByIdQuery = arguments.get(CswConstants.IS_BY_ID_QUERY);
if (isByIdQuery != null) {
recordCollection.setById((Boolean) isByIdQuery);
}
Object arg = arguments.get((CswConstants.GET_RECORDS));
if (arg != null && arg instanceof GetRecordsType) {
recordCollection.setRequest((GetRecordsType) arg);
}
Object resultType = arguments.get(CswConstants.RESULT_TYPE_PARAMETER);
if (resultType instanceof ResultType) {
recordCollection.setResultType((ResultType) resultType);
}
Object outputSchema = arguments.get(CswConstants.OUTPUT_SCHEMA_PARAMETER);
if (outputSchema instanceof String) {
recordCollection.setOutputSchema((String) outputSchema);
} else {
recordCollection.setOutputSchema(CswConstants.CSW_OUTPUT_SCHEMA);
}
Object doWriteNamespaces = arguments.get(CswConstants.WRITE_NAMESPACES);
if (doWriteNamespaces instanceof Boolean) {
recordCollection.setDoWriteNamespaces((Boolean) doWriteNamespaces);
}
return recordCollection;
}
use of org.codice.ddf.spatial.ogc.csw.catalog.common.CswRecordCollection in project ddf by codice.
the class GetRecordsResponseConverter method unmarshal.
/**
* Parses GetRecordsResponse XML of this form:
* <p>
* <pre>
* {@code
* <csw:GetRecordsResponse xmlns:csw="http://www.opengis.net/cat/csw">
* <csw:SearchStatus status="subset" timestamp="2013-05-01T02:13:36+0200"/>
* <csw:SearchResults elementSet="full" nextRecord="11"
* numberOfRecordsMatched="479" numberOfRecordsReturned="10"
* recordSchema="csw:Record">
* <csw:Record xmlns:csw="http://www.opengis.net/cat/csw">
* ...
* </csw:Record>
* <csw:Record xmlns:csw="http://www.opengis.net/cat/csw">
* ...
* </csw:Record>
* }
* </pre>
*/
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
if (transformProvider == null) {
throw new ConversionException("Unable to locate Converter for outputSchema: " + CswConstants.CSW_OUTPUT_SCHEMA);
}
CswRecordCollection cswRecords = new CswRecordCollection();
List<Metacard> metacards = cswRecords.getCswRecords();
XStreamAttributeCopier.copyXmlNamespaceDeclarationsIntoContext(reader, context);
while (reader.hasMoreChildren()) {
reader.moveDown();
if (reader.getNodeName().contains("SearchResults")) {
setSearchResults(reader, cswRecords);
// <csw:Record> into a Metacard
while (reader.hasMoreChildren()) {
// move down to the <csw:Record> tag
reader.moveDown();
String name = reader.getNodeName();
LOGGER.debug("node name = {}", name);
Metacard metacard = (Metacard) context.convertAnother(null, MetacardImpl.class, transformProvider);
metacards.add(metacard);
// move back up to the <SearchResults> parent of the
// <csw:Record> tags
reader.moveUp();
}
}
reader.moveUp();
}
LOGGER.debug("Unmarshalled {} metacards", metacards.size());
if (LOGGER.isTraceEnabled()) {
int index = 1;
for (Metacard m : metacards) {
LOGGER.trace("metacard {}: ", index);
LOGGER.trace(" id = {}", m.getId());
LOGGER.trace(" title = {}", m.getTitle());
// Some CSW services return an empty bounding box, i.e., no lower
// and/or upper corner positions
Attribute boundingBoxAttr = m.getAttribute("BoundingBox");
if (boundingBoxAttr != null) {
LOGGER.trace(" bounding box = {}", boundingBoxAttr.getValue());
}
index++;
}
}
return cswRecords;
}
Aggregations