1. Go to this page and download the library: Download mathielen/import-engine library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mathielen / import-engine example snippets
$service = new TestEntities\Dummy(); //your domain service
$fileStorageProvider = new Mathielen\ImportEngine\Storage\Provider\FileStorageProvider();
$storageSelection = $fileStorageProvider->select('tests/metadata/testfiles/flatdata.csv');
$sourceStorage = $fileStorageProvider->storage($storageSelection);
$targetStorage = new Mathielen\ImportEngine\Storage\ServiceStorage(array($service, 'onNewData'));
$importer = Mathielen\ImportEngine\Importer\Importer::build($targetStorage);
$import = Mathielen\ImportEngine\Import\Import::build($importer, $sourceStorage);
$importRunner = new Mathielen\ImportEngine\Import\Run\ImportRunner();
$importRunner->run($import);
use Symfony\Component\Finder\Finder;
use Mathielen\ImportEngine\Storage\Provider\FinderFileStorageProvider;
$finder = Finder::create()
->in('tests/metadata/testfiles')
->name('*.csv')
->name('*.tab')
->size('>0K')
;
$ffsp = new FinderFileStorageProvider($finder);
use Symfony\Component\Finder\Finder;
use Mathielen\ImportEngine\Storage\Provider\DoctrineQueryStorageProvider;
$em = ... //Doctrine2 EntityManager
$qb = $em->createQueryBuilder()
->select('a')
->from('MySystem\Entity\Address', 'a')
->andWhere('a.id > 10')
;
$queries = array(
'MySystem/Entity/MyEntity',
$qb
);
$desp = new DoctrineQueryStorageProvider($em, $queries);
use Mathielen\ImportEngine\Storage\Provider\UploadFileStorageProvider;
$ufsp = new UploadFileStorageProvider('/tmp'); //path to where the uploaded files will be transferred to
use Mathielen\ImportEngine\Storage\Format\Factory\CsvAutoDelimiterFormatFactory;
use Mathielen\ImportEngine\Storage\Factory\FormatDiscoverLocalFileStorageFactory;
use Mathielen\ImportEngine\Storage\Format\Discovery\MimeTypeDiscoverStrategy;
$ffsp = ...
$ffsp->setStorageFactory(
new FormatDiscoverLocalFileStorageFactory(
new MimeTypeDiscoverStrategy(array(
'text/plain' => new CsvAutoDelimiterFormatFactory()
))));
use Mathielen\ImportEngine\Storage\ArrayStorage;
use Mathielen\ImportEngine\Storage\DoctrineStorage;
use Mathielen\ImportEngine\Storage\LocalFileStorage;
use Mathielen\ImportEngine\Storage\Format\CsvFormat;
$em = ... //Doctrine2 EntityManager
$array = array(1,2,3);
$storage = new ArrayStorage($array);
$storage = new DoctrineStorage($em, 'MyEntities\Entity');
$storage = new LocalFileStorage('tests/metadata/testfiles/flatdata.csv', new CsvFormat());
$storage = new ServiceStorage(array($service, 'myMethod')); //callable
use Mathielen\ImportEngine\Validation\ValidatorValidation;
use Mathielen\DataImport\Filter\ClassValidatorFilter;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
$validator = ... //Symfony Validator
$validation = ValidatorValidation::build($validator)
->addSourceConstraint('salutation', new NotBlank()) //source field 'salutation' should not be empty
->addSourceConstraint('zipcode', new Regex("/[0-9]{5}/")) //source field 'zipcode' should be 5 digits
;
use Mathielen\ImportEngine\Validation\ValidatorValidation;
use Mathielen\DataImport\Filter\ClassValidatorFilter;
use Mathielen\DataImport\Writer\ObjectWriter\JmsSerializerObjectFactory;
$validator = ... //Symfony Validator
$jms_serializer = ...
$objectFactory = new JmsSerializerObjectFactory(
'Entity\Address',
$jms_serializer);
$validation = ValidatorValidation::build($validator)
->setTargetValidatorFilter(new ClassValidatorFilter($validator, $objectFactory));
use Mathielen\ImportEngine\Storage\ArrayStorage;
use Mathielen\ImportEngine\Storage\LocalFileStorage;
use Mathielen\ImportEngine\Import\Import;
use Mathielen\ImportEngine\Importer\Importer;
use Mathielen\ImportEngine\Storage\Format\CsvFormat;
$targetArray = array();
$importer = Importer::build(new ArrayStorage($targetArray));
$import = Import::build(
$importer,
new LocalFileStorage(new \SplFileObject(__DIR__ . '/../../../metadata/testfiles/flatdata.csv'), new CsvFormat())
);
use Mathielen\ImportEngine\Mapping\Converter\Provider\DefaultConverterProvider;
use Ddeboer\DataImport\ValueConverter\CallbackValueConverter;
use Mathielen\ImportEngine\Import\Import;
use Mathielen\ImportEngine\Storage\ArrayStorage;
use Mathielen\ImportEngine\Importer\Importer;
$converterProvider = new DefaultConverterProvider();
$converterProvider
->add('salutationToGender', new CallbackValueConverter(function ($item) {
switch ($item) {
case 'Mr.': return 'male';
case 'Miss':
case 'Mrs.': return 'femaile';
}
}));
$targetStorage = ...
$importer = Importer::build($targetStorage);
$importer
->transformation()
->setConverterProvider($converterProvider);
$array = array();
$import = Import::build($importer, new ArrayStorage($array))
->mappings()
->add('salutation', 'gender', 'salutationToGender')
;
use Mathielen\ImportEngine\Mapping\Converter\Provider\DefaultConverterProvider;
use Ddeboer\DataImport\ItemConverter\CallbackItemConverter;
use Mathielen\ImportEngine\Import\Import;
use Mathielen\ImportEngine\Storage\ArrayStorage;
use Mathielen\ImportEngine\Importer\Importer;
$converterProvider = new DefaultConverterProvider();
$converterProvider
->add('splitNames', new CallbackItemConverter(function ($item) {
list($firstname, $lastname) = explode(' ', $item['name']);
$item['first_name'] = $firstname;
$item['lastname'] = $lastname;
return $item;
}));
$targetStorage = ...
$importer = Importer::build($targetStorage);
$importer
->transformation()
->setConverterProvider($converterProvider);
$array = array();
$import = Import::build($importer, new ArrayStorage($array))
->mappings()
->add('fullname', null, 'splitNames')
;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Mathielen\ImportEngine\Import\Run\ImportRunner;
use Mathielen\ImportEngine\Import\Workflow\DefaultWorkflowFactory;
use Mathielen\ImportEngine\ValueObject\ImportConfiguration;
use Mathielen\ImportEngine\Storage\LocalFileStorage;
use Mathielen\ImportEngine\Storage\Format\CsvFormat;
use Mathielen\ImportEngine\Importer\ImporterRepository;
$import = ...
$importRunner = new ImportRunner(new DefaultWorkflowFactory(new EventDispatcher()));
//sneak peak a row
$previewData = $importRunner->preview($import);
//dont really write, just validate
$importRun = $importRunner->dryRun($import);
//do the import
$importRun = $importRunner->run($import);
use Symfony\Component\EventDispatcher\EventDispatcher;
use Mathielen\ImportEngine\Import\Run\ImportRunner;
use Mathielen\DataImport\Event\ImportProcessEvent;
use Mathielen\DataImport\Event\ImportItemEvent;
use Mathielen\ImportEngine\Import\Workflow\DefaultWorkflowFactory;
$myListener = function ($event) {
if ($event instanceof ImportItemEvent) {
$currentResult = $event->getCurrentResult(); //readonly access to current result in the process (might be false)
}
};
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addListener(ImportProcessEvent::AFTER_PREPARE, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_READ, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_FILTER, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_CONVERSION, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_CONVERSIONFILTER, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_VALIDATION, $myListener);
$eventDispatcher->addListener(ImportItemEvent::AFTER_WRITE, $myListener);
$eventDispatcher->addListener(ImportProcessEvent::AFTER_FINISH, $myListener);
$workflowFactory = new DefaultWorkflowFactory($eventDispatcher);
$importRunner = new ImportRunner($workflowFactory);
$import = ...
$importRunner->run($import);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.