private FieldSet(FieldSet fieldSet1, FieldSet fieldSet2) { if (fieldSet2.size() == 0) { this.collection = fieldSet1.collection; } else if (fieldSet1.size() == 0) { this.collection = fieldSet2.collection; } else { HashSet<Integer> set = new HashSet<Integer>(2 * (fieldSet1.size() + fieldSet2.size())); set.addAll(fieldSet1.collection); set.addAll(fieldSet2.collection); this.collection = Collections.unmodifiableSet(set); } }
/** * @param fieldSet The first part of the new set, NOT NULL! * @param fieldID The ID to be added, NOT NULL! */ private FieldSet(FieldSet fieldSet, Integer fieldID) { if (fieldSet.size() == 0) { this.collection = Collections.singleton(fieldID); } else { HashSet<Integer> set = new HashSet<Integer>(2 * (fieldSet.collection.size() + 1)); set.addAll(fieldSet.collection); set.add(fieldID); this.collection = Collections.unmodifiableSet(set); } }
@Test public void testImmutability() { FieldSet s1 = new FieldSet(); FieldSet s2 = new FieldSet(5); FieldSet s3 = new FieldSet(Integer.valueOf(7)); FieldSet s4 = new FieldSet(5, 4, 7, 6); s1.addFields(s2).addFields(s3); s2.addFields(s4); s4.addFields(s1); s1.addField(Integer.valueOf(14)); s2.addFields(78, 13, 66, 3); assertEquals(0, s1.size()); assertEquals(1, s2.size()); assertEquals(1, s3.size()); assertEquals(4, s4.size()); }
@Test public void testNonForwardedIndividualStrings() { String[] nonForwardedFields = { "f1", "f2" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, null, threeIntTupleType, threeIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 2).size() == 0); }
@Test public void testNonForwardedSpaces() { String[] nonForwardedFields = { " f1 ; f2" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, null, threeIntTupleType, threeIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 2).size() == 0); }
@Test public void testNonForwardedSingleString() { String[] nonForwardedFields = { "f1;f2" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, null, threeIntTupleType, threeIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 2).size() == 0); nonForwardedFields[0] = "f1;f2;"; sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, null, threeIntTupleType, threeIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 2).size() == 0); }
@Test public void testNonForwardedRead() { String[] nonForwardedFields = { "f1;f2" }; String[] readFields = {"f0; f2"}; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, readFields, threeIntTupleType, threeIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 2).size() == 0); assertTrue(sp.getReadFields(0).size() == 2); assertTrue(sp.getReadFields(0).contains(0)); assertTrue(sp.getReadFields(0).contains(2)); }
@Test public void testNonForwardedPojo() { String[] nonForwardedFields = { "int1; string1" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, nonForwardedFields, null, pojoType, pojoType); assertTrue(sp.getForwardingTargetFields(0, 0).size() == 0); assertTrue(sp.getForwardingTargetFields(0, 1).contains(1)); assertTrue(sp.getForwardingTargetFields(0, 2).contains(2)); assertTrue(sp.getForwardingTargetFields(0, 3).size() == 0); }
@Test public void testReadFieldsBasic() { String[] readFields = { "*" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, null, readFields, intType, intType); FieldSet fs = sp.getReadFields(0); assertTrue(fs.size() == 1); assertTrue(fs.contains(0)); sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, null, readFields, intType, fiveIntTupleType); fs = sp.getReadFields(0); assertTrue(fs.size() == 1); assertTrue(fs.contains(0)); }
@Test public void testAllForwardedSingleInputSemProps() { SingleInputSemanticProperties sp = new SingleInputSemanticProperties.AllFieldsForwardedProperties(); assertEquals(1, sp.getForwardingTargetFields(0, 0).size()); assertEquals(1, sp.getForwardingTargetFields(0, 1).size()); assertEquals(1, sp.getForwardingTargetFields(0, 123).size()); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).contains(1)); assertTrue(sp.getForwardingTargetFields(0, 123).contains(123)); assertEquals(0, sp.getForwardingSourceField(0, 0)); assertEquals(2, sp.getForwardingSourceField(0, 2)); assertEquals(123, sp.getForwardingSourceField(0, 123)); }
@Test public void testReadFieldsSpaces() { String[] readFields = { " f1 ; f2 " }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, null, readFields, threeIntTupleType, threeIntTupleType); FieldSet fs = sp.getReadFields(0); assertTrue(fs.size() == 2); assertTrue(fs.contains(2)); assertTrue(fs.contains(1)); }
@Test public void testReadFieldsIndividualStrings() { String[] readFields = { "f1", "f2" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, null, readFields, threeIntTupleType, threeIntTupleType); FieldSet fs = sp.getReadFields(0); assertTrue(fs.size() == 2); assertTrue(fs.contains(2)); assertTrue(fs.contains(1)); }
@Test public void testReadFieldsPojoInTuple() { String[] readFields = { "f0; f2.int1; f2.string1" }; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, null, null, readFields, pojoInTupleType, pojo2Type); FieldSet fs = sp.getReadFields(0); assertTrue(fs.size() == 3); assertTrue(fs.contains(0)); assertTrue(fs.contains(2)); assertTrue(fs.contains(5)); }
@Test public void testGetReadSet() { SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); sp.addReadFields(new FieldSet(0, 1)); assertEquals(2, sp.getReadFields(0).size()); assertTrue(sp.getReadFields(0).contains(0)); assertTrue(sp.getReadFields(0).contains(1)); sp.addReadFields(new FieldSet(3)); assertEquals(3, sp.getReadFields(0).size()); assertTrue(sp.getReadFields(0).contains(0)); assertTrue(sp.getReadFields(0).contains(1)); assertTrue(sp.getReadFields(0).contains(3)); }
@Test public void testForwardedRead() { String[] forwardedFields = { "f0->f0;f1->f2" }; String[] readFields = {"f0; f2"}; SingleInputSemanticProperties sp = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sp, forwardedFields, null, readFields, threeIntTupleType, fiveIntTupleType); assertTrue(sp.getForwardingTargetFields(0, 0).contains(0)); assertTrue(sp.getForwardingTargetFields(0, 1).contains(2)); assertTrue(sp.getReadFields(0).size() == 2); assertTrue(sp.getReadFields(0).contains(0)); assertTrue(sp.getReadFields(0).contains(2)); }
@Test public void testGroupingPreserved2() { SingleInputSemanticProperties sProps = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sProps, new String[]{"3->0;5->2;1->3"}, null, null, tupleInfo, tupleInfo); RequestedLocalProperties rlProp = new RequestedLocalProperties(); rlProp.setGroupedFields(new FieldSet(0, 2, 3)); RequestedLocalProperties filtered = rlProp.filterBySemanticProperties(sProps, 0); assertNotNull(filtered); assertNotNull(filtered.getGroupedFields()); assertEquals(3, filtered.getGroupedFields().size()); assertTrue(filtered.getGroupedFields().contains(3)); assertTrue(filtered.getGroupedFields().contains(5)); assertTrue(filtered.getGroupedFields().contains(1)); assertNull(filtered.getOrdering()); }
@Test public void testGroupingPreserved1() { SingleInputSemanticProperties sProps = new SingleInputSemanticProperties(); SemanticPropUtil.getSemanticPropsSingleFromString(sProps, new String[]{"0;2;3"}, null, null, tupleInfo, tupleInfo); RequestedLocalProperties rlProp = new RequestedLocalProperties(); rlProp.setGroupedFields(new FieldSet(0, 2, 3)); RequestedLocalProperties filtered = rlProp.filterBySemanticProperties(sProps, 0); assertNotNull(filtered); assertNotNull(filtered.getGroupedFields()); assertEquals(3, filtered.getGroupedFields().size()); assertTrue(filtered.getGroupedFields().contains(0)); assertTrue(filtered.getGroupedFields().contains(2)); assertTrue(filtered.getGroupedFields().contains(3)); assertNull(filtered.getOrdering()); }