public function encode(Interchange $interchange) { $out = $this->annotationPrinter->prepareString($interchange); foreach ($interchange->getMessages() as $message) { $out .= $this->annotationPrinter->prepareString($message); $identifier = $message->getIdentifier(); $this->segmentPrinter->setSegmentMappings($this->mappingLoader->loadSegments($identifier['version'], $identifier['release'])); foreach ($message->getSegments() as $segment) { $out .= $this->segmentPrinter->prepareString($segment); } $out .= $this->annotationPrinter->prepareString($message->createTrailer()); } $out .= $this->annotationPrinter->prepareString($interchange->createTrailer()); return $out; }
/** * @return SegmentPrinter */ protected function givenPrinter() { $segmentMapping = new SegmentMapping('XXX'); $segmentMapping->addDataElement(1, new DataElementMapping(5434, true, DataElementType::ID, 'ajdi')); $segmentMapping->addDataElement(2, new DataElementMapping(4525, true, DataElementType::A, 'fild')); $compDataElement = new CompositeDataElementMapping(2435, true, DataElementType::COMPOSITE, 'araj'); $compDataElement->addDataElement(new DataElementMapping(6456, true, DataElementType::A, 'e1')); $compDataElement->addDataElement(new DataElementMapping(3567, true, DataElementType::A, 'e2')); $segmentMapping->addDataElement(3, $compDataElement); $segmentYMapping = new SegmentMapping('YYY'); $segmentYMapping->addDataElement(1, new DataElementMapping(5434, true, DataElementType::ID, 'ajdi')); $printer = new SegmentPrinter(); $printer->setSegmentMappings(['XXX' => $segmentMapping, 'YYY' => $segmentYMapping]); return $printer; }