Search in sources :

Example 96 with Schema

use of edu.uci.ics.textdb.api.schema.Schema in project textdb by TextDB.

the class Join method open.

@Override
public void open() throws TextDBException {
    if (cursor != CLOSED) {
        return;
    }
    if (innerOperator == null) {
        throw new DataFlowException("Inner Input Operator is not set.");
    }
    if (outerOperator == null) {
        throw new DataFlowException("Outer Input Operator is not set.");
    }
    // generate output schema from schema of inner and outer operator
    innerOperator.open();
    Schema innerOperatorSchema = innerOperator.getOutputSchema();
    outerOperator.open();
    Schema outerOperatorSchema = outerOperator.getOutputSchema();
    this.outputSchema = joinPredicate.generateOutputSchema(innerOperatorSchema, outerOperatorSchema);
    cursor = OPENED;
}
Also used : Schema(edu.uci.ics.textdb.api.schema.Schema) DataFlowException(edu.uci.ics.textdb.api.exception.DataFlowException)

Example 97 with Schema

use of edu.uci.ics.textdb.api.schema.Schema in project textdb by TextDB.

the class TupleSourceOperatorTest method test1.

@Test
public void test1() throws TextDBException {
    TupleSourceOperator tupleSource = new TupleSourceOperator(TestConstants.getSamplePeopleTuples(), TestConstants.SCHEMA_PEOPLE);
    tupleSource.open();
    Tuple tuple;
    List<Tuple> results = new ArrayList<>();
    Schema outputSchema = tupleSource.getOutputSchema();
    while ((tuple = tupleSource.getNextTuple()) != null) {
        results.add(tuple);
    }
    tupleSource.close();
    // assert result is equal to input
    Assert.assertTrue(TestUtils.equals(TestConstants.getSamplePeopleTuples(), results));
    // assert _id is added to schema
    Assert.assertTrue(outputSchema.equals(Utils.getSchemaWithID(TestConstants.SCHEMA_PEOPLE)));
    // assert all tuples contain _id field
    for (Tuple resultTuple : results) {
        Assert.assertTrue(resultTuple.getField(SchemaConstants._ID).getClass().equals(IDField.class));
    }
}
Also used : IDField(edu.uci.ics.textdb.api.field.IDField) Schema(edu.uci.ics.textdb.api.schema.Schema) ArrayList(java.util.ArrayList) Tuple(edu.uci.ics.textdb.api.tuple.Tuple) Test(org.junit.Test)

Example 98 with Schema

use of edu.uci.ics.textdb.api.schema.Schema in project textdb by TextDB.

the class DataWriter method getTupleWithID.

/*
     * Adds the _id to the front of the tuple, if the _id field doesn't exist in the tuple.
     */
private static Tuple getTupleWithID(Tuple tuple, IDField _id) {
    Tuple tupleWithID = tuple;
    Schema tupleSchema = tuple.getSchema();
    if (!tupleSchema.containsField(SchemaConstants._ID)) {
        tupleSchema = Utils.getSchemaWithID(tupleSchema);
        List<IField> newTupleFields = new ArrayList<>();
        newTupleFields.add(_id);
        newTupleFields.addAll(tuple.getFields());
        tupleWithID = new Tuple(tupleSchema, newTupleFields.stream().toArray(IField[]::new));
    }
    return tupleWithID;
}
Also used : Schema(edu.uci.ics.textdb.api.schema.Schema) ArrayList(java.util.ArrayList) IField(edu.uci.ics.textdb.api.field.IField) Tuple(edu.uci.ics.textdb.api.tuple.Tuple)

Example 99 with Schema

use of edu.uci.ics.textdb.api.schema.Schema in project textdb by TextDB.

the class FileSourceOperatorTest method test3.

/*
     * Test FileSourceOperator with a Directory with recursive = true and maxDepth = null.
     * 
     * All the files under the recursive sub-directories will be read.
     *     
     * expected results: test1.txt, test2.txt, test4.txt and test5.txt will be included
     */
@Test
public void test3() throws Exception {
    String attrName = "content";
    Schema schema = new Schema(new Attribute(attrName, AttributeType.TEXT));
    FileSourcePredicate predicate = new FileSourcePredicate(tempFolderPath.toString(), attrName, true, null, null);
    FileSourceOperator fileSource = new FileSourceOperator(predicate);
    Tuple tuple;
    ArrayList<Tuple> exactResults = new ArrayList<>();
    fileSource.open();
    while ((tuple = fileSource.getNextTuple()) != null) {
        exactResults.add(tuple);
    }
    fileSource.close();
    List<Tuple> expectedResults = Arrays.asList(new Tuple(schema, new TextField(tempFile1String)), new Tuple(schema, new TextField(tempFile2String)), new Tuple(schema, new TextField(tempFile4String)), new Tuple(schema, new TextField(tempFile5String)));
    Assert.assertTrue(TestUtils.equals(expectedResults, exactResults));
}
Also used : Attribute(edu.uci.ics.textdb.api.schema.Attribute) Schema(edu.uci.ics.textdb.api.schema.Schema) ArrayList(java.util.ArrayList) TextField(edu.uci.ics.textdb.api.field.TextField) Tuple(edu.uci.ics.textdb.api.tuple.Tuple) Test(org.junit.Test)

Example 100 with Schema

use of edu.uci.ics.textdb.api.schema.Schema in project textdb by TextDB.

the class FileSourceOperatorTest method test4.

/*
     * Test FileSourceOperator with a Directory with recursive = true and maxDepth = 2.
     * 
     * The files under the recursive sub-directories with recursive depth 2 will be read.
     *     
     * expected results: test1.txt, test2.txt and test4.txt will be included
     */
@Test
public void test4() throws Exception {
    String attrName = "content";
    Schema schema = new Schema(new Attribute(attrName, AttributeType.TEXT));
    FileSourcePredicate predicate = new FileSourcePredicate(tempFolderPath.toString(), attrName, true, 2, null);
    FileSourceOperator fileSource = new FileSourceOperator(predicate);
    Tuple tuple;
    ArrayList<Tuple> exactResults = new ArrayList<>();
    fileSource.open();
    while ((tuple = fileSource.getNextTuple()) != null) {
        exactResults.add(tuple);
    }
    fileSource.close();
    List<Tuple> expectedResults = Arrays.asList(new Tuple(schema, new TextField(tempFile1String)), new Tuple(schema, new TextField(tempFile2String)), new Tuple(schema, new TextField(tempFile4String)));
    Assert.assertTrue(TestUtils.equals(expectedResults, exactResults));
}
Also used : Attribute(edu.uci.ics.textdb.api.schema.Attribute) Schema(edu.uci.ics.textdb.api.schema.Schema) ArrayList(java.util.ArrayList) TextField(edu.uci.ics.textdb.api.field.TextField) Tuple(edu.uci.ics.textdb.api.tuple.Tuple) Test(org.junit.Test)

Aggregations

Schema (edu.uci.ics.textdb.api.schema.Schema)126 ArrayList (java.util.ArrayList)98 Tuple (edu.uci.ics.textdb.api.tuple.Tuple)95 IField (edu.uci.ics.textdb.api.field.IField)94 Test (org.junit.Test)94 Attribute (edu.uci.ics.textdb.api.schema.Attribute)93 Span (edu.uci.ics.textdb.api.span.Span)86 TextField (edu.uci.ics.textdb.api.field.TextField)83 StringField (edu.uci.ics.textdb.api.field.StringField)65 IntegerField (edu.uci.ics.textdb.api.field.IntegerField)63 DoubleField (edu.uci.ics.textdb.api.field.DoubleField)52 DateField (edu.uci.ics.textdb.api.field.DateField)49 SimpleDateFormat (java.text.SimpleDateFormat)48 Dictionary (edu.uci.ics.textdb.exp.dictionarymatcher.Dictionary)24 ListField (edu.uci.ics.textdb.api.field.ListField)14 DataFlowException (edu.uci.ics.textdb.api.exception.DataFlowException)9 AttributeType (edu.uci.ics.textdb.api.schema.AttributeType)9 JoinDistancePredicate (edu.uci.ics.textdb.exp.join.JoinDistancePredicate)9 KeywordMatcherSourceOperator (edu.uci.ics.textdb.exp.keywordmatcher.KeywordMatcherSourceOperator)9 IDField (edu.uci.ics.textdb.api.field.IDField)8