Search in sources :

Example 76 with CreateResponse

use of ddf.catalog.operation.CreateResponse in project alliance by codice.

the class CatalogRolloverAction method doAction.

@Override
public MetacardImpl doAction(MetacardImpl metacard, File tempFile) throws RolloverActionException {
    return context.modifyParentOrChild(isParentDirty -> {
        Subject subject = context.getUdpStreamProcessor().getSubject();
        if (subject == null) {
            LOGGER.debug("no security subject available, cannot upload video chunk");
            return metacard;
        }
        return subject.execute(() -> {
            String fileName = generateFilename();
            enforceRequiredMetacardFields(metacard, fileName);
            ContentItem contentItem = createContentItem(metacard, fileName, Files.asByteSource(tempFile));
            CreateStorageRequest createStorageRequest = createStorageRequest(contentItem);
            CreateResponse createResponse = submitStorageCreateRequest(createStorageRequest);
            for (Metacard childMetacard : createResponse.getCreatedMetacards()) {
                LOGGER.trace("created catalog content with id={}", childMetacard.getId());
                linkChildToParent(childMetacard);
                updateParentWithChildMetadata(childMetacard);
            }
            isParentDirty.set(true);
            return metacard;
        });
    });
}
Also used : Metacard(ddf.catalog.data.Metacard) CreateResponse(ddf.catalog.operation.CreateResponse) Subject(ddf.security.Subject) ContentItem(ddf.catalog.content.data.ContentItem) CreateStorageRequest(ddf.catalog.content.operation.CreateStorageRequest)

Example 77 with CreateResponse

use of ddf.catalog.operation.CreateResponse in project ddf by codice.

the class CatalogComponentFrameworkTest method testCreateWithWrongTypeOperation.

@Test
public /**
 * Operation: CREATE Body contains: Metacard
 */
void testCreateWithWrongTypeOperation() throws Exception {
    resetMocks();
    // Setup expectations to verify
    final MockEndpoint mockVerifierEndpoint = getMockEndpoint("mock:result");
    mockVerifierEndpoint.expectedMessageCount(1);
    final List<Metacard> metacards = new ArrayList<Metacard>();
    metacards.add(metacard1);
    // Mock catalog framework
    final CreateRequest createRequest = new CreateRequestImpl(metacards);
    final CreateResponse createResponse = new CreateResponseImpl(createRequest, new HashMap(), metacards);
    when(catalogFramework.create(any(CreateRequest.class))).thenReturn(createResponse);
    // Exercise the route with a CREATE operation
    template.sendBodyAndHeader("direct:sampleInput", metacard1, "Operation", new Boolean("CREATE"));
    // Verify that the number of metacards in the exchange after the records
    // is identical to the input
    assertListSize(mockVerifierEndpoint.getExchanges(), 1);
    final Exchange exchange = mockVerifierEndpoint.getExchanges().get(0);
    final List<Metacard> cardsCreated = (List<Metacard>) exchange.getIn().getBody();
    assertListSize(cardsCreated, 0);
    mockVerifierEndpoint.assertIsSatisfied();
}
Also used : Exchange(org.apache.camel.Exchange) Metacard(ddf.catalog.data.Metacard) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) HashMap(java.util.HashMap) CreateRequest(ddf.catalog.operation.CreateRequest) CreateResponse(ddf.catalog.operation.CreateResponse) ArrayList(java.util.ArrayList) CreateRequestImpl(ddf.catalog.operation.impl.CreateRequestImpl) ArrayList(java.util.ArrayList) List(java.util.List) CreateResponseImpl(ddf.catalog.operation.impl.CreateResponseImpl) Test(org.junit.Test)

Example 78 with CreateResponse

use of ddf.catalog.operation.CreateResponse in project ddf by codice.

the class CatalogComponentFrameworkTest method testCreateWithListOfMetacards.

@Test
public /**
 * Operation: CREATE Body contains: List<Metacard>
 */
void testCreateWithListOfMetacards() throws Exception {
    resetMocks();
    // Setup expectations to verify
    final MockEndpoint mockVerifierEndpoint = getMockEndpoint("mock:result");
    mockVerifierEndpoint.expectedMessageCount(1);
    final List<Metacard> metacards = new ArrayList<Metacard>();
    metacards.add(metacard1);
    metacards.add(metacard2);
    // Mock catalog framework
    final CreateRequest createRequest = new CreateRequestImpl(metacards);
    final CreateResponse createResponse = new CreateResponseImpl(createRequest, new HashMap(), metacards);
    when(catalogFramework.create(any(CreateRequest.class))).thenReturn(createResponse);
    // Exercise the route with a CREATE operation
    template.sendBodyAndHeader("direct:sampleInput", metacards, "Operation", "CREATE");
    // Verify that the number of metacards in the exchange after the records
    // is identical to the input
    assertListSize(mockVerifierEndpoint.getExchanges(), 1);
    final Exchange exchange = mockVerifierEndpoint.getExchanges().get(0);
    final List<Metacard> cardsCreated = (List<Metacard>) exchange.getIn().getBody();
    assertListSize(cardsCreated, 2);
    mockVerifierEndpoint.assertIsSatisfied();
}
Also used : Exchange(org.apache.camel.Exchange) Metacard(ddf.catalog.data.Metacard) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) HashMap(java.util.HashMap) CreateRequest(ddf.catalog.operation.CreateRequest) CreateResponse(ddf.catalog.operation.CreateResponse) ArrayList(java.util.ArrayList) CreateRequestImpl(ddf.catalog.operation.impl.CreateRequestImpl) ArrayList(java.util.ArrayList) List(java.util.List) CreateResponseImpl(ddf.catalog.operation.impl.CreateResponseImpl) Test(org.junit.Test)

Example 79 with CreateResponse

use of ddf.catalog.operation.CreateResponse in project ddf by codice.

the class CatalogComponentFrameworkTest method testCreateWithSingleMetacard.

@Test
public /**
 * Operation: CREATE Body contains: Metacard
 */
void testCreateWithSingleMetacard() throws Exception {
    resetMocks();
    // Setup expectations to verify
    final MockEndpoint mockVerifierEndpoint = getMockEndpoint("mock:result");
    mockVerifierEndpoint.expectedMessageCount(1);
    final List<Metacard> metacards = new ArrayList<Metacard>();
    metacards.add(metacard1);
    // Mock catalog framework
    final CreateRequest createRequest = new CreateRequestImpl(metacards);
    final CreateResponse createResponse = new CreateResponseImpl(createRequest, new HashMap(), metacards);
    when(catalogFramework.create(any(CreateRequest.class))).thenReturn(createResponse);
    // Exercise the route with a CREATE operation
    template.sendBodyAndHeader("direct:sampleInput", metacard1, "Operation", "CREATE");
    // Verify that the number of metacards in the exchange after the records
    // is identical to the input
    assertListSize(mockVerifierEndpoint.getExchanges(), 1);
    final Exchange exchange = mockVerifierEndpoint.getExchanges().get(0);
    final List<Metacard> cardsCreated = (List<Metacard>) exchange.getIn().getBody();
    assertListSize(cardsCreated, 1);
    mockVerifierEndpoint.assertIsSatisfied();
}
Also used : Exchange(org.apache.camel.Exchange) Metacard(ddf.catalog.data.Metacard) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) HashMap(java.util.HashMap) CreateRequest(ddf.catalog.operation.CreateRequest) CreateResponse(ddf.catalog.operation.CreateResponse) ArrayList(java.util.ArrayList) CreateRequestImpl(ddf.catalog.operation.impl.CreateRequestImpl) ArrayList(java.util.ArrayList) List(java.util.List) CreateResponseImpl(ddf.catalog.operation.impl.CreateResponseImpl) Test(org.junit.Test)

Example 80 with CreateResponse

use of ddf.catalog.operation.CreateResponse in project ddf by codice.

the class FrameworkProducer method create.

/**
 * Creates metacard(s) in the catalog using the Catalog Framework.
 *
 * @param exchange The {@link org.apache.camel.Exchange} can contain a {@link
 *     org.apache.camel.Message} with a body of type {@link java.util.List} of Metacard or a
 *     single Metacard.
 * @throws ddf.catalog.source.SourceUnavailableException
 * @throws ddf.catalog.source.IngestException
 * @throws ddf.camel.component.catalog.framework.FrameworkProducerException
 */
private void create(final Exchange exchange) throws SourceUnavailableException, IngestException, FrameworkProducerException {
    CreateResponse createResponse = null;
    // read in data
    final List<Metacard> metacardsToBeCreated = readBodyDataAsMetacards(exchange);
    if (!validateList(metacardsToBeCreated, Metacard.class)) {
        processCatalogResponse(createResponse, exchange);
        throw new FrameworkProducerException("Validation of Metacard list failed");
    }
    LOGGER.debug("Validation of Metacard list passed...");
    final CreateRequest createRequest = new CreateRequestImpl(metacardsToBeCreated);
    int expectedNumberOfCreatedMetacards = metacardsToBeCreated.size();
    if (expectedNumberOfCreatedMetacards < 1) {
        LOGGER.debug("Empty list of Metacards...nothing to process");
        processCatalogResponse(createResponse, exchange);
        return;
    }
    LOGGER.debug("Making CREATE call to Catalog Framework...");
    createResponse = catalogFramework.create(createRequest);
    if (createResponse == null) {
        LOGGER.debug("CreateResponse is null from catalog framework");
        processCatalogResponse(createResponse, exchange);
        return;
    }
    final List<Metacard> createdMetacards = createResponse.getCreatedMetacards();
    if (createdMetacards == null) {
        LOGGER.debug("CreateResponse returned null metacards list");
        processCatalogResponse(createResponse, exchange);
        return;
    }
    final int numberOfCreatedMetacards = createdMetacards.size();
    if (numberOfCreatedMetacards != expectedNumberOfCreatedMetacards) {
        LOGGER.debug("Expected {} metacards created but only {} were successfully created", expectedNumberOfCreatedMetacards, numberOfCreatedMetacards);
        processCatalogResponse(createResponse, exchange);
        return;
    }
    LOGGER.debug("Created {} metacards", numberOfCreatedMetacards);
    processCatalogResponse(createResponse, exchange);
}
Also used : Metacard(ddf.catalog.data.Metacard) CreateResponse(ddf.catalog.operation.CreateResponse) CreateRequest(ddf.catalog.operation.CreateRequest) CreateRequestImpl(ddf.catalog.operation.impl.CreateRequestImpl) Endpoint(org.apache.camel.Endpoint)

Aggregations

CreateResponse (ddf.catalog.operation.CreateResponse)111 Test (org.junit.Test)82 Metacard (ddf.catalog.data.Metacard)76 CreateRequestImpl (ddf.catalog.operation.impl.CreateRequestImpl)44 ArrayList (java.util.ArrayList)42 CreateRequest (ddf.catalog.operation.CreateRequest)36 QueryImpl (ddf.catalog.operation.impl.QueryImpl)29 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)29 CreateResponseImpl (ddf.catalog.operation.impl.CreateResponseImpl)27 HashMap (java.util.HashMap)25 Serializable (java.io.Serializable)23 List (java.util.List)23 MetacardImpl (ddf.catalog.data.impl.MetacardImpl)22 DeleteResponse (ddf.catalog.operation.DeleteResponse)22 UpdateResponse (ddf.catalog.operation.UpdateResponse)21 Filter (org.opengis.filter.Filter)21 IngestException (ddf.catalog.source.IngestException)20 SourceResponse (ddf.catalog.operation.SourceResponse)18 QueryRequest (ddf.catalog.operation.QueryRequest)17 MetacardType (ddf.catalog.data.MetacardType)16