Search in sources :

Example 36 with MetacardTypeImpl

use of ddf.catalog.data.impl.MetacardTypeImpl in project ddf by codice.

the class PdfInputTransformer method initializeMetacard.

private MetacardImpl initializeMetacard(String id, String contentInput) {
    MetacardImpl metacard;
    if (StringUtils.isNotBlank(contentInput)) {
        Set<AttributeDescriptor> attributes = contentMetadataExtractors.values().stream().map(ContentMetadataExtractor::getMetacardAttributes).flatMap(Collection::stream).collect(Collectors.toSet());
        metacard = new MetacardImpl(new MetacardTypeImpl(metacardType.getName(), metacardType, attributes));
        for (ContentMetadataExtractor contentMetadataExtractor : contentMetadataExtractors.values()) {
            contentMetadataExtractor.process(contentInput, metacard);
        }
    } else {
        metacard = new MetacardImpl(metacardType);
    }
    metacard.setId(id);
    metacard.setContentTypeName(MediaType.PDF.toString());
    metacard.setAttribute(Media.TYPE, MediaType.PDF.toString());
    metacard.setAttribute(Core.DATATYPE, DataType.DOCUMENT.toString());
    return metacard;
}
Also used : AttributeDescriptor(ddf.catalog.data.AttributeDescriptor) ContentMetadataExtractor(ddf.catalog.content.operation.ContentMetadataExtractor) MetacardTypeImpl(ddf.catalog.data.impl.MetacardTypeImpl) MetacardImpl(ddf.catalog.data.impl.MetacardImpl)

Example 37 with MetacardTypeImpl

use of ddf.catalog.data.impl.MetacardTypeImpl in project ddf by codice.

the class SolrProviderTest method testExtensibleMetacards.

@Test
public void testExtensibleMetacards() throws IngestException, UnsupportedQueryException {
    deleteAllIn(provider);
    String brandNewField1 = "description";
    String brandNewFieldValue1 = "myDescription";
    /* BASIC STRINGS */
    Set<AttributeDescriptor> descriptors = new HashSet<AttributeDescriptor>();
    descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE));
    descriptors.add(new AttributeDescriptorImpl(brandNewField1, true, true, true, false, BasicTypes.STRING_TYPE));
    MetacardTypeImpl mType = new MetacardTypeImpl("custom1", descriptors);
    MetacardImpl customMetacard = new MetacardImpl(mType);
    // customMetacard.setAttribute("id", "44567880");
    customMetacard.setAttribute(brandNewField1, brandNewFieldValue1);
    create(customMetacard);
    // search id
    Query query = new QueryImpl(filterBuilder.attribute("id").like().text("*"));
    QueryRequest request = new QueryRequestImpl(query);
    SourceResponse response = provider.query(request);
    assertEquals(1, response.getResults().size());
    assertEquals("custom1", response.getResults().get(0).getMetacard().getMetacardType().getName());
    assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors));
    // search title - *
    query = new QueryImpl(filterBuilder.attribute(brandNewField1).like().text("*"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    assertEquals("custom1", response.getResults().get(0).getMetacard().getMetacardType().getName());
    assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors));
    // search title - exact
    query = new QueryImpl(filterBuilder.attribute(brandNewField1).equalTo().text(brandNewFieldValue1));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    // search negative
    query = new QueryImpl(filterBuilder.attribute(brandNewField1).like().text("no"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(0, response.getResults().size());
    // NEW TYPE
    String brandNewXmlField1 = "author";
    String brandNewXmlFieldValue1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<author>john doe</author>";
    descriptors = new HashSet<AttributeDescriptor>();
    descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE));
    descriptors.add(new AttributeDescriptorImpl(brandNewXmlField1, true, true, true, false, BasicTypes.XML_TYPE));
    mType = new MetacardTypeImpl("34ga$^TGHfg:/", descriptors);
    customMetacard = new MetacardImpl(mType);
    // customMetacard.setAttribute(Metacard.ID, "44567880");
    customMetacard.setAttribute(brandNewXmlField1, brandNewXmlFieldValue1);
    create(customMetacard);
    // Two Ids
    query = new QueryImpl(filterBuilder.attribute(Metacard.ID).like().text("*"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(2, response.getResults().size());
    // search xml
    query = new QueryImpl(filterBuilder.attribute(brandNewXmlField1).like().caseSensitiveText("doe"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    assertEquals("34ga$^TGHfg:/", response.getResults().get(0).getMetacard().getMetacardType().getName());
    assertThat(response.getResults().get(0).getMetacard().getMetacardType().getAttributeDescriptors(), equalTo(descriptors));
    // search xml - negative
    query = new QueryImpl(filterBuilder.attribute(brandNewXmlField1).like().text("author"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(0, response.getResults().size());
    // EVERYTHING ELSE type
    String doubleField = "hertz";
    double doubleFieldValue = 16065.435;
    String floatField = "inches";
    float floatFieldValue = 4.435f;
    String intField = "count";
    int intFieldValue = 4;
    String longField = "milliseconds";
    long longFieldValue = 987654322111L;
    String byteField = "bytes";
    byte[] byteFieldValue = { 86 };
    String booleanField = "expected";
    boolean booleanFieldValue = true;
    String dateField = "lost";
    Date dateFieldValue = new Date();
    String geoField = "geo";
    String geoFieldValue = GULF_OF_GUINEA_POINT_WKT;
    String shortField = "daysOfTheWeek";
    short shortFieldValue = 1;
    String objectField = "payload";
    BevelBorder objectFieldValue = new BevelBorder(BevelBorder.RAISED);
    descriptors = new HashSet<AttributeDescriptor>();
    descriptors.add(new AttributeDescriptorImpl(Metacard.ID, true, true, true, false, BasicTypes.STRING_TYPE));
    descriptors.add(new AttributeDescriptorImpl(doubleField, true, true, false, false, BasicTypes.DOUBLE_TYPE));
    descriptors.add(new AttributeDescriptorImpl(floatField, true, true, false, false, BasicTypes.FLOAT_TYPE));
    descriptors.add(new AttributeDescriptorImpl(intField, true, true, false, false, BasicTypes.INTEGER_TYPE));
    descriptors.add(new AttributeDescriptorImpl(longField, true, true, false, false, BasicTypes.LONG_TYPE));
    descriptors.add(new AttributeDescriptorImpl(byteField, false, true, false, false, BasicTypes.BINARY_TYPE));
    descriptors.add(new AttributeDescriptorImpl(booleanField, true, true, false, false, BasicTypes.BOOLEAN_TYPE));
    descriptors.add(new AttributeDescriptorImpl(dateField, true, true, false, false, BasicTypes.DATE_TYPE));
    descriptors.add(new AttributeDescriptorImpl(geoField, true, true, false, false, BasicTypes.GEO_TYPE));
    descriptors.add(new AttributeDescriptorImpl(shortField, true, true, false, false, BasicTypes.SHORT_TYPE));
    descriptors.add(new AttributeDescriptorImpl(objectField, false, true, false, false, BasicTypes.OBJECT_TYPE));
    mType = new MetacardTypeImpl("numbersMT", descriptors);
    customMetacard = new MetacardImpl(mType);
    // customMetacard.setAttribute(Metacard.ID, "245gasg324");
    customMetacard.setAttribute(doubleField, doubleFieldValue);
    customMetacard.setAttribute(floatField, floatFieldValue);
    customMetacard.setAttribute(intField, intFieldValue);
    customMetacard.setAttribute(longField, longFieldValue);
    customMetacard.setAttribute(byteField, byteFieldValue);
    customMetacard.setAttribute(booleanField, booleanFieldValue);
    customMetacard.setAttribute(dateField, dateFieldValue);
    customMetacard.setAttribute(geoField, geoFieldValue);
    customMetacard.setAttribute(shortField, shortFieldValue);
    customMetacard.setAttribute(objectField, objectFieldValue);
    create(customMetacard);
    // Three Ids
    query = new QueryImpl(filterBuilder.attribute(Metacard.ID).like().text("*"));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(3, response.getResults().size());
    // search double
    query = new QueryImpl(filterBuilder.attribute(doubleField).greaterThan().number(doubleFieldValue - 1.0));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    // search int
    query = new QueryImpl(filterBuilder.attribute(intField).greaterThan().number(intFieldValue - 1));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    Metacard resultMetacard = response.getResults().get(0).getMetacard();
    assertThat(resultMetacard.getAttribute(Metacard.ID), notNullValue());
    assertThat((Double) (resultMetacard.getAttribute(doubleField).getValue()), equalTo(doubleFieldValue));
    assertThat((Integer) (resultMetacard.getAttribute(intField).getValue()), equalTo(intFieldValue));
    assertThat((Float) (resultMetacard.getAttribute(floatField).getValue()), equalTo(floatFieldValue));
    assertThat((Long) (resultMetacard.getAttribute(longField).getValue()), equalTo(longFieldValue));
    assertThat((byte[]) (resultMetacard.getAttribute(byteField).getValue()), equalTo(byteFieldValue));
    assertThat((Boolean) (resultMetacard.getAttribute(booleanField).getValue()), equalTo(booleanFieldValue));
    assertThat((Date) (resultMetacard.getAttribute(dateField).getValue()), equalTo(dateFieldValue));
    assertThat((String) (resultMetacard.getAttribute(geoField).getValue()), equalTo(geoFieldValue));
    assertThat((Short) (resultMetacard.getAttribute(shortField).getValue()), equalTo(shortFieldValue));
    assertThat((BevelBorder) (resultMetacard.getAttribute(objectField).getValue()), instanceOf(BevelBorder.class));
    /*
         * Going to use the XMLEncoder. If it writes out the objects the same way in xml, then they
         * are the same.
         */
    ByteArrayOutputStream beveledBytesStreamFromSolr = new ByteArrayOutputStream();
    XMLEncoder solrXMLEncoder = new XMLEncoder(new BufferedOutputStream(beveledBytesStreamFromSolr));
    solrXMLEncoder.writeObject((resultMetacard.getAttribute(objectField).getValue()));
    solrXMLEncoder.close();
    ByteArrayOutputStream beveledBytesStreamOriginal = new ByteArrayOutputStream();
    XMLEncoder currendEncoder = new XMLEncoder(new BufferedOutputStream(beveledBytesStreamOriginal));
    currendEncoder.writeObject(objectFieldValue);
    currendEncoder.close();
    assertThat(beveledBytesStreamFromSolr.toByteArray(), equalTo(beveledBytesStreamOriginal.toByteArray()));
    // search short
    query = new QueryImpl(filterBuilder.attribute(shortField).greaterThanOrEqualTo().number(shortFieldValue));
    request = new QueryRequestImpl(query);
    response = provider.query(request);
    assertEquals(1, response.getResults().size());
    resultMetacard = response.getResults().get(0).getMetacard();
}
Also used : Query(ddf.catalog.operation.Query) BevelBorder(javax.swing.border.BevelBorder) AttributeDescriptor(ddf.catalog.data.AttributeDescriptor) Matchers.containsString(org.hamcrest.Matchers.containsString) QueryImpl(ddf.catalog.operation.impl.QueryImpl) BufferedOutputStream(java.io.BufferedOutputStream) HashSet(java.util.HashSet) QueryRequest(ddf.catalog.operation.QueryRequest) SourceResponse(ddf.catalog.operation.SourceResponse) MetacardTypeImpl(ddf.catalog.data.impl.MetacardTypeImpl) AttributeDescriptorImpl(ddf.catalog.data.impl.AttributeDescriptorImpl) ByteArrayOutputStream(org.apache.commons.io.output.ByteArrayOutputStream) MetacardImpl(ddf.catalog.data.impl.MetacardImpl) Date(java.util.Date) Metacard(ddf.catalog.data.Metacard) XMLEncoder(java.beans.XMLEncoder) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) Test(org.junit.Test)

Example 38 with MetacardTypeImpl

use of ddf.catalog.data.impl.MetacardTypeImpl in project ddf by codice.

the class CatalogFrameworkImplTest method stubMetacardInjection.

/****************************
     * utility methods
     ******************************/
private void stubMetacardInjection(AttributeDescriptor... injectedAttributes) {
    doAnswer(invocationOnMock -> {
        Metacard original = (Metacard) invocationOnMock.getArguments()[0];
        MetacardType originalMetacardType = original.getMetacardType();
        MetacardType newMetacardType = new MetacardTypeImpl(originalMetacardType.getName(), originalMetacardType, Sets.newHashSet(injectedAttributes));
        MetacardImpl newMetacard = new MetacardImpl(original);
        newMetacard.setType(newMetacardType);
        newMetacard.setSourceId(original.getSourceId());
        return newMetacard;
    }).when(attributeInjector).injectAttributes(any(Metacard.class));
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTypeImpl(ddf.catalog.data.impl.MetacardTypeImpl) MetacardType(ddf.catalog.data.MetacardType) MetacardImpl(ddf.catalog.data.impl.MetacardImpl)

Example 39 with MetacardTypeImpl

use of ddf.catalog.data.impl.MetacardTypeImpl in project ddf by codice.

the class OverrideAttributesSupportTest method testOverrideMetacard.

@Test
public void testOverrideMetacard() throws URISyntaxException {
    MetacardImpl metacard = new MetacardImpl();
    metacard.setMetadata("original");
    metacard.setTitle("original");
    metacard.setId("original");
    metacard.setResourceURI(new URI("content:stuff"));
    MetacardImpl overrideMetacard = new MetacardImpl(new MetacardTypeImpl("other", metacard.getMetacardType().getAttributeDescriptors()));
    overrideMetacard.setTitle("updated");
    overrideMetacard.setId("updated");
    overrideMetacard.setMetadata("updated");
    overrideMetacard.setResourceURI(new URI("content:newstuff"));
    Metacard updatedMetacard = OverrideAttributesSupport.overrideMetacard(metacard, overrideMetacard, false, false);
    assertThat(updatedMetacard.getMetadata(), is("updated"));
    assertThat(updatedMetacard.getTitle(), is("updated"));
    assertThat(updatedMetacard.getResourceURI().toString(), is("content:newstuff"));
    assertThat(updatedMetacard.getId(), is("original"));
    assertThat(updatedMetacard.getMetacardType().getName(), is("other"));
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTypeImpl(ddf.catalog.data.impl.MetacardTypeImpl) URI(java.net.URI) MetacardImpl(ddf.catalog.data.impl.MetacardImpl) Test(org.junit.Test)

Example 40 with MetacardTypeImpl

use of ddf.catalog.data.impl.MetacardTypeImpl in project ddf by codice.

the class OverrideAttributesSupportTest method testOverrideMetacardIgnoreType.

@Test
public void testOverrideMetacardIgnoreType() throws URISyntaxException {
    MetacardImpl metacard = new MetacardImpl();
    metacard.setMetadata("original");
    metacard.setTitle("original");
    metacard.setId("original");
    metacard.setResourceURI(new URI("content:stuff"));
    MetacardImpl overrideMetacard = new MetacardImpl(new MetacardTypeImpl("other", metacard.getMetacardType().getAttributeDescriptors()));
    overrideMetacard.setTitle("updated");
    overrideMetacard.setId("updated");
    overrideMetacard.setMetadata("updated");
    overrideMetacard.setResourceURI(new URI("content:newstuff"));
    Metacard updatedMetacard = OverrideAttributesSupport.overrideMetacard(metacard, overrideMetacard, true, false);
    assertThat(updatedMetacard.getMetadata(), is("updated"));
    assertThat(updatedMetacard.getTitle(), is("updated"));
    assertThat(updatedMetacard.getResourceURI().toString(), is("content:newstuff"));
    assertThat(updatedMetacard.getId(), is("original"));
    assertThat(updatedMetacard.getMetacardType().getName(), is("ddf.metacard"));
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTypeImpl(ddf.catalog.data.impl.MetacardTypeImpl) URI(java.net.URI) MetacardImpl(ddf.catalog.data.impl.MetacardImpl) Test(org.junit.Test)

Aggregations

MetacardTypeImpl (ddf.catalog.data.impl.MetacardTypeImpl)40 MetacardImpl (ddf.catalog.data.impl.MetacardImpl)22 AttributeDescriptor (ddf.catalog.data.AttributeDescriptor)21 Test (org.junit.Test)21 Metacard (ddf.catalog.data.Metacard)20 HashSet (java.util.HashSet)16 ArrayList (java.util.ArrayList)15 MetacardType (ddf.catalog.data.MetacardType)14 AttributeDescriptorImpl (ddf.catalog.data.impl.AttributeDescriptorImpl)10 URI (java.net.URI)9 HashMap (java.util.HashMap)6 List (java.util.List)6 Metadata (org.apache.tika.metadata.Metadata)6 URISyntaxException (java.net.URISyntaxException)5 SourceResponse (ddf.catalog.operation.SourceResponse)4 QueryImpl (ddf.catalog.operation.impl.QueryImpl)3 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)3 MetacardTypeAdapter (ddf.catalog.transformer.xml.adapter.MetacardTypeAdapter)3 Matchers.containsString (org.hamcrest.Matchers.containsString)3 ContentItem (ddf.catalog.content.data.ContentItem)2