示例#1
0
 private function compileAccordingConditionsAndHackThemIntoQobj(array $extraProperties, $qobj, $qid)
 {
     $this->querySegmentListBuilder->setSortKeys($this->sortKeys);
     $this->querySegmentListBuilder->buildQuerySegmentFor(new Conjunction($extraProperties));
     $newQuerySegmentId = $this->querySegmentListBuilder->getLastQuerySegmentId();
     $this->querySegmentList = $this->querySegmentListBuilder->getQuerySegmentList();
     $this->errors = $this->querySegmentListBuilder->getErrors();
     $newQuerySegment = $this->querySegmentList[$newQuerySegmentId];
     // This is always an QuerySegment::Q_CONJUNCTION ...
     foreach ($newQuerySegment->components as $cid => $field) {
         // ... so just re-wire its dependencies
         $qobj->components[$cid] = $qobj->joinfield;
         $qobj->sortfields = array_merge($qobj->sortfields, $this->querySegmentList[$cid]->sortfields);
     }
     $this->querySegmentList[$qid] = $qobj;
 }
 public function testWhenSomeQuerySegments_getQuerySegmentListReturnsThemAll()
 {
     $instance = new QuerySegmentListBuilder($this->store);
     $firstQuerySegment = new QuerySegment();
     $firstQuerySegment->segmentNumber = 42;
     $instance->addQuerySegment($firstQuerySegment);
     $secondQuerySegment = new QuerySegment();
     $secondQuerySegment->segmentNumber = 23;
     $instance->addQuerySegment($secondQuerySegment);
     $expected = array(42 => $firstQuerySegment, 23 => $secondQuerySegment);
     $this->assertSame($expected, $instance->getQuerySegmentList());
 }
 public function testWhenSomeQuerySegments_getQuerySegmentListReturnsThemAll()
 {
     $instance = new QuerySegmentListBuilder($this->store, $this->descriptionInterpreterFactory);
     $firstQuerySegment = new QuerySegment();
     $instance->addQuerySegment($firstQuerySegment);
     $secondQuerySegment = new QuerySegment();
     $instance->addQuerySegment($secondQuerySegment);
     $expected = array(0 => $firstQuerySegment, 1 => $secondQuerySegment);
     $this->assertSame($expected, $instance->getQuerySegmentList());
 }