1
package org.hisp.dhis.importexport.dxf.importer;
4
* Copyright (c) 2004-2007, University of Oslo
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
* * Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* * Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
* * Neither the name of the HISP project nor the names of its contributors may
15
* be used to endorse or promote products derived from this software without
16
* specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
import java.io.InputStream;
31
import java.util.zip.ZipInputStream;
33
import org.amplecode.staxwax.factory.XMLFactory;
34
import org.amplecode.staxwax.reader.XMLReader;
35
import org.apache.commons.logging.Log;
36
import org.apache.commons.logging.LogFactory;
37
import org.hisp.dhis.cache.HibernateCacheManager;
38
import org.hisp.dhis.datadictionary.DataDictionaryService;
39
import org.hisp.dhis.dataelement.DataElementCategoryComboService;
40
import org.hisp.dhis.dataelement.DataElementCategoryOptionComboService;
41
import org.hisp.dhis.dataelement.DataElementCategoryOptionService;
42
import org.hisp.dhis.dataelement.DataElementCategoryService;
43
import org.hisp.dhis.dataelement.DataElementService;
44
import org.hisp.dhis.dataset.DataSetService;
45
import org.hisp.dhis.datavalue.DataValueService;
46
import org.hisp.dhis.expression.ExpressionService;
47
import org.hisp.dhis.importexport.ImportInternalProcess;
48
import org.hisp.dhis.importexport.ImportObjectService;
49
import org.hisp.dhis.importexport.ImportParams;
50
import org.hisp.dhis.importexport.XMLConverter;
51
import org.hisp.dhis.importexport.dxf.converter.CalculatedDataElementConverter;
52
import org.hisp.dhis.importexport.dxf.converter.CategoryCategoryOptionAssociationConverter;
53
import org.hisp.dhis.importexport.dxf.converter.CategoryComboCategoryAssociationConverter;
54
import org.hisp.dhis.importexport.dxf.converter.CompleteDataSetRegistrationConverter;
55
import org.hisp.dhis.importexport.dxf.converter.DataDictionaryConverter;
56
import org.hisp.dhis.importexport.dxf.converter.DataDictionaryDataElementConverter;
57
import org.hisp.dhis.importexport.dxf.converter.DataDictionaryIndicatorConverter;
58
import org.hisp.dhis.importexport.dxf.converter.DataElementCategoryComboConverter;
59
import org.hisp.dhis.importexport.dxf.converter.DataElementCategoryConverter;
60
import org.hisp.dhis.importexport.dxf.converter.DataElementCategoryOptionComboConverter;
61
import org.hisp.dhis.importexport.dxf.converter.DataElementCategoryOptionConverter;
62
import org.hisp.dhis.importexport.dxf.converter.DataElementConverter;
63
import org.hisp.dhis.importexport.dxf.converter.DataElementGroupConverter;
64
import org.hisp.dhis.importexport.dxf.converter.DataElementGroupMemberConverter;
65
import org.hisp.dhis.importexport.dxf.converter.DataSetConverter;
66
import org.hisp.dhis.importexport.dxf.converter.DataSetMemberConverter;
67
import org.hisp.dhis.importexport.dxf.converter.DataSetSourceAssociationConverter;
68
import org.hisp.dhis.importexport.dxf.converter.DataValueConverter;
69
import org.hisp.dhis.importexport.dxf.converter.ExtendedDataElementConverter;
70
import org.hisp.dhis.importexport.dxf.converter.ExtendedIndicatorConverter;
71
import org.hisp.dhis.importexport.dxf.converter.GroupSetConverter;
72
import org.hisp.dhis.importexport.dxf.converter.GroupSetMemberConverter;
73
import org.hisp.dhis.importexport.dxf.converter.IndicatorConverter;
74
import org.hisp.dhis.importexport.dxf.converter.IndicatorGroupConverter;
75
import org.hisp.dhis.importexport.dxf.converter.IndicatorGroupMemberConverter;
76
import org.hisp.dhis.importexport.dxf.converter.IndicatorTypeConverter;
77
import org.hisp.dhis.importexport.dxf.converter.OlapUrlConverter;
78
import org.hisp.dhis.importexport.dxf.converter.OrganisationUnitConverter;
79
import org.hisp.dhis.importexport.dxf.converter.OrganisationUnitGroupConverter;
80
import org.hisp.dhis.importexport.dxf.converter.OrganisationUnitGroupMemberConverter;
81
import org.hisp.dhis.importexport.dxf.converter.OrganisationUnitLevelConverter;
82
import org.hisp.dhis.importexport.dxf.converter.OrganisationUnitRelationshipConverter;
83
import org.hisp.dhis.importexport.dxf.converter.PeriodConverter;
84
import org.hisp.dhis.importexport.dxf.converter.ReportTableCategoryOptionComboConverter;
85
import org.hisp.dhis.importexport.dxf.converter.ReportTableConverter;
86
import org.hisp.dhis.importexport.dxf.converter.ReportTableDataElementConverter;
87
import org.hisp.dhis.importexport.dxf.converter.ReportTableDataSetConverter;
88
import org.hisp.dhis.importexport.dxf.converter.ReportTableIndicatorConverter;
89
import org.hisp.dhis.importexport.dxf.converter.ReportTableOrganisationUnitConverter;
90
import org.hisp.dhis.importexport.dxf.converter.ReportTablePeriodConverter;
91
import org.hisp.dhis.importexport.dxf.converter.ValidationRuleConverter;
92
import org.hisp.dhis.importexport.locking.LockingManager;
93
import org.hisp.dhis.importexport.mapping.NameMappingUtil;
94
import org.hisp.dhis.importexport.mapping.ObjectMappingGenerator;
95
import org.hisp.dhis.indicator.IndicatorService;
96
import org.hisp.dhis.jdbc.BatchHandler;
97
import org.hisp.dhis.jdbc.BatchHandlerFactory;
98
import org.hisp.dhis.jdbc.batchhandler.CategoryCategoryOptionAssociationBatchHandler;
99
import org.hisp.dhis.jdbc.batchhandler.CategoryComboCategoryAssociationBatchHandler;
100
import org.hisp.dhis.jdbc.batchhandler.CompleteDataSetRegistrationBatchHandler;
101
import org.hisp.dhis.jdbc.batchhandler.DataDictionaryBatchHandler;
102
import org.hisp.dhis.jdbc.batchhandler.DataDictionaryDataElementBatchHandler;
103
import org.hisp.dhis.jdbc.batchhandler.DataDictionaryIndicatorBatchHandler;
104
import org.hisp.dhis.jdbc.batchhandler.DataElementBatchHandler;
105
import org.hisp.dhis.jdbc.batchhandler.DataElementCategoryBatchHandler;
106
import org.hisp.dhis.jdbc.batchhandler.DataElementCategoryComboBatchHandler;
107
import org.hisp.dhis.jdbc.batchhandler.DataElementCategoryOptionBatchHandler;
108
import org.hisp.dhis.jdbc.batchhandler.DataElementGroupBatchHandler;
109
import org.hisp.dhis.jdbc.batchhandler.DataElementGroupMemberBatchHandler;
110
import org.hisp.dhis.jdbc.batchhandler.DataSetBatchHandler;
111
import org.hisp.dhis.jdbc.batchhandler.DataSetMemberBatchHandler;
112
import org.hisp.dhis.jdbc.batchhandler.DataSetSourceAssociationBatchHandler;
113
import org.hisp.dhis.jdbc.batchhandler.DataValueBatchHandler;
114
import org.hisp.dhis.jdbc.batchhandler.ExtendedDataElementBatchHandler;
115
import org.hisp.dhis.jdbc.batchhandler.GroupSetBatchHandler;
116
import org.hisp.dhis.jdbc.batchhandler.GroupSetMemberBatchHandler;
117
import org.hisp.dhis.jdbc.batchhandler.ImportDataValueBatchHandler;
118
import org.hisp.dhis.jdbc.batchhandler.IndicatorBatchHandler;
119
import org.hisp.dhis.jdbc.batchhandler.IndicatorGroupBatchHandler;
120
import org.hisp.dhis.jdbc.batchhandler.IndicatorGroupMemberBatchHandler;
121
import org.hisp.dhis.jdbc.batchhandler.IndicatorTypeBatchHandler;
122
import org.hisp.dhis.jdbc.batchhandler.OrganisationUnitBatchHandler;
123
import org.hisp.dhis.jdbc.batchhandler.OrganisationUnitGroupBatchHandler;
124
import org.hisp.dhis.jdbc.batchhandler.OrganisationUnitGroupMemberBatchHandler;
125
import org.hisp.dhis.jdbc.batchhandler.PeriodBatchHandler;
126
import org.hisp.dhis.jdbc.batchhandler.ReportTableBatchHandler;
127
import org.hisp.dhis.jdbc.batchhandler.ReportTableCategoryOptionComboBatchHandler;
128
import org.hisp.dhis.jdbc.batchhandler.ReportTableDataElementBatchHandler;
129
import org.hisp.dhis.jdbc.batchhandler.ReportTableDataSetBatchHandler;
130
import org.hisp.dhis.jdbc.batchhandler.ReportTableIndicatorBatchHandler;
131
import org.hisp.dhis.jdbc.batchhandler.ReportTableOrganisationUnitBatchHandler;
132
import org.hisp.dhis.jdbc.batchhandler.ReportTablePeriodBatchHandler;
133
import org.hisp.dhis.jdbc.batchhandler.SourceBatchHandler;
134
import org.hisp.dhis.olap.OlapURLService;
135
import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
136
import org.hisp.dhis.organisationunit.OrganisationUnitService;
137
import org.hisp.dhis.period.PeriodService;
138
import org.hisp.dhis.reporttable.ReportTableStore;
139
import org.hisp.dhis.system.util.StreamUtils;
140
import org.hisp.dhis.validation.ValidationRuleService;
143
* @author Lars Helge Overland
144
* @version $Id: DefaultDXFImportService.java 6425 2008-11-22 00:08:57Z larshelg $
146
public class DefaultDXFImportService
147
extends ImportInternalProcess
149
private final Log log = LogFactory.getLog( DefaultDXFImportService.class );
151
// -------------------------------------------------------------------------
153
// -------------------------------------------------------------------------
155
private ImportObjectService importObjectService;
157
public void setImportObjectService( ImportObjectService importObjectService )
159
this.importObjectService = importObjectService;
162
private DataElementService dataElementService;
164
public void setDataElementService( DataElementService dataElementService )
166
this.dataElementService = dataElementService;
169
private DataElementCategoryService categoryService;
171
public void setCategoryService( DataElementCategoryService categoryService )
173
this.categoryService = categoryService;
176
private DataElementCategoryOptionService categoryOptionService;
178
public void setCategoryOptionService( DataElementCategoryOptionService categoryOptionService )
180
this.categoryOptionService = categoryOptionService;
183
private DataElementCategoryComboService categoryComboService;
185
public void setCategoryComboService( DataElementCategoryComboService categoryComboService )
187
this.categoryComboService = categoryComboService;
190
private DataElementCategoryOptionComboService categoryOptionComboService;
192
public void setCategoryOptionComboService( DataElementCategoryOptionComboService categoryOptionComboService )
194
this.categoryOptionComboService = categoryOptionComboService;
197
private IndicatorService indicatorService;
199
public void setIndicatorService( IndicatorService indicatorService )
201
this.indicatorService = indicatorService;
204
private DataDictionaryService dataDictionaryService;
206
public void setDataDictionaryService( DataDictionaryService dataDictionaryService )
208
this.dataDictionaryService = dataDictionaryService;
211
private DataSetService dataSetService;
213
public void setDataSetService( DataSetService dataSetService )
215
this.dataSetService = dataSetService;
218
private OrganisationUnitService organisationUnitService;
220
public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
222
this.organisationUnitService = organisationUnitService;
225
private OrganisationUnitGroupService organisationUnitGroupService;
227
public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService )
229
this.organisationUnitGroupService = organisationUnitGroupService;
232
private PeriodService periodService;
234
public void setPeriodService( PeriodService periodService )
236
this.periodService = periodService;
239
private ExpressionService expressionService;
241
public void setExpressionService( ExpressionService expressionService )
243
this.expressionService = expressionService;
246
private ValidationRuleService validationRuleService;
248
public void setValidationRuleService( ValidationRuleService validationRuleService )
250
this.validationRuleService = validationRuleService;
253
private ReportTableStore reportTableStore;
255
public void setReportTableStore( ReportTableStore reportTableStore )
257
this.reportTableStore = reportTableStore;
260
private OlapURLService olapURLService;
262
public void setOlapURLService( OlapURLService olapURLService )
264
this.olapURLService = olapURLService;
267
private DataValueService dataValueService;
269
public void setDataValueService( DataValueService dataValueService )
271
this.dataValueService = dataValueService;
274
private BatchHandlerFactory batchHandlerFactory;
276
public void setBatchHandlerFactory( BatchHandlerFactory batchHandlerFactory )
278
this.batchHandlerFactory = batchHandlerFactory;
281
private ObjectMappingGenerator objectMappingGenerator;
283
public void setObjectMappingGenerator( ObjectMappingGenerator objectMappingGenerator )
285
this.objectMappingGenerator = objectMappingGenerator;
288
private LockingManager lockingManager;
290
public void setLockingManager( LockingManager lockingManager )
292
this.lockingManager = lockingManager;
295
private HibernateCacheManager cacheManager;
297
public void setCacheManager( HibernateCacheManager cacheManager )
299
this.cacheManager = cacheManager;
302
// -------------------------------------------------------------------------
304
// -------------------------------------------------------------------------
306
public DefaultDXFImportService()
311
// -------------------------------------------------------------------------
312
// DXFImportService implementation
313
// -------------------------------------------------------------------------
316
public void importData( ImportParams params, InputStream inputStream )
318
if ( params.isPreview() )
320
importObjectService.deleteImportObjects();
323
ZipInputStream zipIn = new ZipInputStream ( inputStream );
325
StreamUtils.getNextZipEntry( zipIn );
327
XMLReader reader = XMLFactory.getXMLReader( zipIn );
329
while ( reader.next() )
331
if ( reader.isStartElement( DataElementCategoryOptionConverter.COLLECTION_NAME ) )
333
setMessage( "importing_data_element_category_options" );
335
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementCategoryOptionBatchHandler.class );
339
XMLConverter converter = new DataElementCategoryOptionConverter( batchHandler,
341
categoryOptionService );
343
converter.read( reader, params );
345
batchHandler.flush();
347
log.info( "Imported DataElementCategoryOptions" );
349
else if ( reader.isStartElement( DataElementCategoryConverter.COLLECTION_NAME ) )
351
setMessage( "importing_data_element_categories" );
353
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementCategoryBatchHandler.class );
357
XMLConverter converter = new DataElementCategoryConverter( batchHandler,
361
converter.read( reader, params );
363
batchHandler.flush();
365
log.info( "Imported DataElementCategories" );
367
else if ( reader.isStartElement( DataElementCategoryComboConverter.COLLECTION_NAME ) )
369
setMessage( "importing_data_element_category_combos" );
371
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementCategoryComboBatchHandler.class );
375
XMLConverter converter = new DataElementCategoryComboConverter( batchHandler,
377
categoryComboService );
379
converter.read( reader, params );
381
batchHandler.flush();
383
log.info( "Imported DataElementCategoryCombos" );
385
else if ( reader.isStartElement( DataElementCategoryOptionComboConverter.COLLECTION_NAME ) )
387
setMessage( "importing_data_element_category_option_combos" );
389
XMLConverter converter = new DataElementCategoryOptionComboConverter( importObjectService,
390
objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ),
391
objectMappingGenerator.getCategoryOptionMapping( params.skipMapping() ),
392
categoryOptionComboService,
393
categoryOptionService,
394
categoryComboService );
396
converter.read( reader, params );
398
log.info( "Imported DataElementCategoryOptionCombos" );
400
else if ( reader.isStartElement( CategoryCategoryOptionAssociationConverter.COLLECTION_NAME ) )
402
setMessage( "importing_data_element_category_members" );
404
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( CategoryCategoryOptionAssociationBatchHandler.class );
408
XMLConverter converter = new CategoryCategoryOptionAssociationConverter( batchHandler,
410
objectMappingGenerator.getCategoryMapping( params.skipMapping() ),
411
objectMappingGenerator.getCategoryOptionMapping( params.skipMapping() ) );
413
converter.read( reader, params );
415
batchHandler.flush();
417
log.info( "Imported CategoryCategoryOption associations" );
419
else if ( reader.isStartElement( CategoryComboCategoryAssociationConverter.COLLECTION_NAME ) )
421
setMessage( "importing_data_element_category_combo_members" );
423
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( CategoryComboCategoryAssociationBatchHandler.class );
427
XMLConverter converter = new CategoryComboCategoryAssociationConverter( batchHandler,
429
objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ),
430
objectMappingGenerator.getCategoryMapping( params.skipMapping() ) );
432
converter.read( reader, params );
434
batchHandler.flush();
436
log.info( "Imported CategoryComboCategory associations" );
438
else if ( reader.isStartElement( DataElementConverter.COLLECTION_NAME ) )
440
setMessage( "importing_data_elements" );
442
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementBatchHandler.class );
446
XMLConverter converter = new DataElementConverter( batchHandler,
448
objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ),
449
dataElementService );
451
converter.read( reader, params );
453
batchHandler.flush();
455
log.info( "Imported DataElements" );
457
else if ( reader.isStartElement( ExtendedDataElementConverter.COLLECTION_NAME ) )
459
setMessage( "importing_data_elements" );
461
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementBatchHandler.class );
463
BatchHandler extendedDataElementBatchHandler = batchHandlerFactory.createBatchHandler( ExtendedDataElementBatchHandler.class );
465
extendedDataElementBatchHandler.init();
469
XMLConverter converter = new ExtendedDataElementConverter( batchHandler,
470
extendedDataElementBatchHandler,
472
objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ),
473
dataElementService );
475
converter.read( reader, params );
477
extendedDataElementBatchHandler.flush();
479
batchHandler.flush();
481
log.info( "Imported ExtendedDataElements" );
483
else if ( reader.isStartElement( CalculatedDataElementConverter.COLLECTION_NAME ) )
485
setMessage( "importing_calculated_data_elements" );
487
XMLConverter converter = new CalculatedDataElementConverter( importObjectService,
490
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
491
objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ),
492
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
494
converter.read( reader, params );
496
log.info( "Imported CalculatedDataElements" );
498
else if ( reader.isStartElement( DataElementGroupConverter.COLLECTION_NAME ) )
500
setMessage( "importing_data_element_groups" );
502
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementGroupBatchHandler.class );
506
XMLConverter converter = new DataElementGroupConverter( batchHandler, importObjectService, dataElementService );
508
converter.read( reader, params );
510
batchHandler.flush();
512
log.info( "Imported DataElementGroups" );
514
else if ( reader.isStartElement( DataElementGroupMemberConverter.COLLECTION_NAME ) )
516
setMessage( "importing_data_element_group_members" );
518
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataElementGroupMemberBatchHandler.class );
522
XMLConverter converter = new DataElementGroupMemberConverter( batchHandler, importObjectService,
523
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
524
objectMappingGenerator.getDataElementGroupMapping( params.skipMapping() ) );
526
converter.read( reader, params );
528
batchHandler.flush();
530
log.info( "Imported DataElementGroup members" );
532
else if ( reader.isStartElement( IndicatorTypeConverter.COLLECTION_NAME ) )
534
setMessage( "importing_indicator_types" );
536
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( IndicatorTypeBatchHandler.class );
540
XMLConverter converter = new IndicatorTypeConverter( batchHandler, importObjectService, indicatorService );
542
converter.read( reader, params );
544
batchHandler.flush();
546
log.info( "Imported IndicatorTypes" );
548
else if ( reader.isStartElement( IndicatorConverter.COLLECTION_NAME ) )
550
setMessage( "importing_indicators" );
552
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( IndicatorBatchHandler.class );
556
XMLConverter converter = new IndicatorConverter( batchHandler,
560
objectMappingGenerator.getIndicatorTypeMapping( params.skipMapping() ),
561
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
562
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
564
converter.read( reader, params );
566
batchHandler.flush();
568
log.info( "Imported Indicators" );
570
else if ( reader.isStartElement( ExtendedIndicatorConverter.COLLECTION_NAME ) )
572
setMessage( "importing_indicators" );
574
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( IndicatorBatchHandler.class );
576
BatchHandler extendedDataElementBatchHandler = batchHandlerFactory.createBatchHandler( ExtendedDataElementBatchHandler.class );
578
extendedDataElementBatchHandler.init();
582
XMLConverter converter = new ExtendedIndicatorConverter( batchHandler,
583
extendedDataElementBatchHandler,
587
objectMappingGenerator.getIndicatorTypeMapping( params.skipMapping() ),
588
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
589
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
591
converter.read( reader, params );
593
extendedDataElementBatchHandler.flush();
595
batchHandler.flush();
597
log.info( "Imported ExtendedIndicators" );
599
else if ( reader.isStartElement( IndicatorGroupConverter.COLLECTION_NAME ) )
601
setMessage( "importing_indicator_groups" );
603
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( IndicatorGroupBatchHandler.class );
607
XMLConverter converter = new IndicatorGroupConverter( batchHandler, importObjectService, indicatorService );
609
converter.read( reader, params );
611
batchHandler.flush();
613
log.info( "Imported IndicatorGroups" );
615
else if ( reader.isStartElement( IndicatorGroupMemberConverter.COLLECTION_NAME ) )
617
setMessage( "importing_indicator_group_members" );
619
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( IndicatorGroupMemberBatchHandler.class );
623
XMLConverter converter = new IndicatorGroupMemberConverter( batchHandler, importObjectService,
624
objectMappingGenerator.getIndicatorMapping( params.skipMapping() ),
625
objectMappingGenerator.getIndicatorGroupMapping( params.skipMapping() ) );
627
converter.read( reader, params );
629
batchHandler.flush();
631
log.info( "Imported IndicatorGroup members" );
633
else if ( reader.isStartElement( DataDictionaryConverter.COLLECTION_NAME ) )
635
setMessage( "importing_data_dictionaries" );
637
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataDictionaryBatchHandler.class );
641
XMLConverter converter = new DataDictionaryConverter( batchHandler,
643
dataDictionaryService );
645
converter.read( reader, params );
647
batchHandler.flush();
649
log.info( "Imported DataDictionaries" );
651
else if ( reader.isStartElement( DataDictionaryDataElementConverter.COLLECTION_NAME ) )
653
setMessage( "importing_data_dictionary_data_elements" );
655
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataDictionaryDataElementBatchHandler.class );
659
XMLConverter converter = new DataDictionaryDataElementConverter( batchHandler,
661
objectMappingGenerator.getDataDictionaryMapping( params.skipMapping() ),
662
objectMappingGenerator.getDataElementMapping( params.skipMapping() ) );
664
converter.read( reader, params );
666
batchHandler.flush();
668
log.info( "Imported DataDictionary DataElements" );
670
else if ( reader.isStartElement( DataDictionaryIndicatorConverter.COLLECTION_NAME ) )
672
setMessage( "importing_data_dictionary_indicators" );
674
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataDictionaryIndicatorBatchHandler.class );
678
XMLConverter converter = new DataDictionaryIndicatorConverter( batchHandler,
680
objectMappingGenerator.getDataDictionaryMapping( params.skipMapping() ),
681
objectMappingGenerator.getIndicatorMapping( params.skipMapping() ) );
683
converter.read( reader, params );
685
batchHandler.flush();
687
log.info( "Imported DataDictionary Indicators" );
689
else if ( reader.isStartElement( DataSetConverter.COLLECTION_NAME ) )
691
setMessage( "importing_data_sets" );
693
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataSetBatchHandler.class );
697
XMLConverter converter = new DataSetConverter( batchHandler, importObjectService, dataSetService,
698
objectMappingGenerator.getPeriodTypeMapping() );
700
converter.read( reader, params );
702
batchHandler.flush();
704
log.info( "Imported DataSets" );
706
else if ( reader.isStartElement( DataSetMemberConverter.COLLECTION_NAME ) )
708
setMessage( "importing_data_set_members" );
710
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataSetMemberBatchHandler.class );
714
XMLConverter converter = new DataSetMemberConverter( batchHandler, importObjectService,
715
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
716
objectMappingGenerator.getDataSetMapping( params.skipMapping() ) );
718
converter.read( reader, params );
720
batchHandler.flush();
722
log.info( "Imported DataSet members" );
724
else if ( reader.isStartElement( OrganisationUnitConverter.COLLECTION_NAME ) )
726
setMessage( "importing_organisation_units" );
728
BatchHandler sourceBatchHandler = batchHandlerFactory.createBatchHandler( SourceBatchHandler.class );
729
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( OrganisationUnitBatchHandler.class );
731
sourceBatchHandler.init();
734
XMLConverter converter = new OrganisationUnitConverter( batchHandler, sourceBatchHandler,
735
importObjectService, organisationUnitService );
737
converter.read( reader, params );
739
sourceBatchHandler.flush();
740
batchHandler.flush();
742
log.info( "Imported OrganisationUnits" );
744
else if ( reader.isStartElement( OrganisationUnitRelationshipConverter.COLLECTION_NAME ) )
746
setMessage( "importing_organisation_unit_relationships" );
748
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( OrganisationUnitBatchHandler.class );
752
XMLConverter converter = new OrganisationUnitRelationshipConverter( batchHandler,
754
organisationUnitService,
755
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ) );
757
converter.read( reader, params );
759
batchHandler.flush();
761
log.info( "Imported OrganisationUnit relationships" );
763
else if ( reader.isStartElement( OrganisationUnitGroupConverter.COLLECTION_NAME ) )
765
setMessage( "importing_organisation_unit_groups" );
767
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( OrganisationUnitGroupBatchHandler.class );
771
XMLConverter converter = new OrganisationUnitGroupConverter( batchHandler, importObjectService, organisationUnitGroupService );
773
converter.read( reader, params );
775
batchHandler.flush();
777
log.info( "Imported OrganisationUnitGroups" );
779
else if ( reader.isStartElement( OrganisationUnitGroupMemberConverter.COLLECTION_NAME ) )
781
setMessage( "importing_organisation_unit_group_members" );
783
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( OrganisationUnitGroupMemberBatchHandler.class );
787
XMLConverter converter = new OrganisationUnitGroupMemberConverter( batchHandler, importObjectService,
788
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ),
789
objectMappingGenerator.getOrganisationUnitGroupMapping( params.skipMapping() ) );
791
converter.read( reader, params );
793
batchHandler.flush();
795
log.info( "Imported OrganisationUnitGroup members" );
797
else if ( reader.isStartElement( GroupSetConverter.COLLECTION_NAME ) )
799
setMessage( "importing_organisation_unit_group_sets" );
801
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( GroupSetBatchHandler.class );
805
XMLConverter converter = new GroupSetConverter( batchHandler, importObjectService, organisationUnitGroupService );
807
converter.read( reader, params );
809
batchHandler.flush();
811
log.info( "Imported OrganisationUnitGroupSets" );
813
else if ( reader.isStartElement( GroupSetMemberConverter.COLLECTION_NAME ) )
815
setMessage( "importing_organisation_unit_group_set_members" );
817
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( GroupSetMemberBatchHandler.class );
821
XMLConverter converter = new GroupSetMemberConverter( batchHandler, importObjectService,
822
objectMappingGenerator.getOrganisationUnitGroupMapping( params.skipMapping() ),
823
objectMappingGenerator.getOrganisationUnitGroupSetMapping( params.skipMapping() ) );
825
converter.read( reader, params );
827
batchHandler.flush();
829
log.info( "Imported OrganisationUnitGroupSet members" );
831
else if ( reader.isStartElement( OrganisationUnitLevelConverter.COLLECTION_NAME ) )
833
setMessage( "importing_organisation_unit_levels" );
835
XMLConverter converter = new OrganisationUnitLevelConverter( organisationUnitService, importObjectService );
837
converter.read( reader, params );
839
log.info( "Imported OrganisationUnitLevels" );
841
else if ( reader.isStartElement( DataSetSourceAssociationConverter.COLLECTION_NAME ) )
843
setMessage( "importing_data_set_source_associations" );
845
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataSetSourceAssociationBatchHandler.class );
849
XMLConverter converter = new DataSetSourceAssociationConverter( batchHandler, importObjectService,
850
objectMappingGenerator.getDataSetMapping( params.skipMapping() ),
851
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ) );
853
converter.read( reader, params );
855
batchHandler.flush();
857
log.info( "Imported DataSet Source associations" );
859
else if ( reader.isStartElement( ValidationRuleConverter.COLLECTION_NAME ) )
861
setMessage( "importing_validation_rules" );
863
XMLConverter converter = new ValidationRuleConverter( importObjectService,
864
validationRuleService,
866
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
867
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
869
converter.read( reader, params );
871
log.info( "Imported ValidationRules" );
873
else if ( reader.isStartElement( PeriodConverter.COLLECTION_NAME ) )
875
setMessage( "importing_periods" );
877
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( PeriodBatchHandler.class );
881
XMLConverter converter = new PeriodConverter( batchHandler, importObjectService, periodService,
882
objectMappingGenerator.getPeriodTypeMapping() );
884
converter.read( reader, params );
886
batchHandler.flush();
888
log.info( "Imported Periods" );
890
else if ( reader.isStartElement( ReportTableConverter.COLLECTION_NAME ) )
892
setMessage( "importing_report_tables" );
894
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableBatchHandler.class );
898
XMLConverter converter = new ReportTableConverter( batchHandler, reportTableStore, importObjectService );
900
converter.read( reader, params );
902
batchHandler.flush();
904
log.info( "Imported ReportTables" );
906
else if ( reader.isStartElement( ReportTableDataElementConverter.COLLECTION_NAME ) )
908
setMessage( "importing_report_table_dataelements" );
910
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableDataElementBatchHandler.class );
914
XMLConverter converter = new ReportTableDataElementConverter( batchHandler, importObjectService,
915
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
916
objectMappingGenerator.getDataElementMapping( params.skipMapping() ) );
918
converter.read( reader, params );
920
batchHandler.flush();
922
log.info( "Imported ReportTable DataElements" );
924
else if ( reader.isStartElement( ReportTableCategoryOptionComboConverter.COLLECTION_NAME ) )
926
setMessage( "importing_report_table_category_option_combos" );
928
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableCategoryOptionComboBatchHandler.class );
932
XMLConverter converter = new ReportTableCategoryOptionComboConverter( batchHandler, importObjectService,
933
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
934
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
936
converter.read( reader, params );
938
batchHandler.flush();
940
log.info( "Imported ReportTable CategoryOptionCombos" );
942
else if ( reader.isStartElement( ReportTableIndicatorConverter.COLLECTION_NAME ) )
944
setMessage( "importing_report_table_indicators" );
946
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableIndicatorBatchHandler.class );
950
XMLConverter converter = new ReportTableIndicatorConverter( batchHandler, importObjectService,
951
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
952
objectMappingGenerator.getIndicatorMapping( params.skipMapping() ) );
954
converter.read( reader, params );
956
batchHandler.flush();
958
log.info( "Imported ReportTable Indicators" );
960
else if ( reader.isStartElement( ReportTableDataSetConverter.COLLECTION_NAME ) )
962
setMessage( "importing_report_table_datasets" );
964
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableDataSetBatchHandler.class );
968
XMLConverter converter = new ReportTableDataSetConverter( batchHandler, importObjectService,
969
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
970
objectMappingGenerator.getDataSetMapping( params.skipMapping() ) );
972
converter.read( reader, params );
974
batchHandler.flush();
976
log.info( "Imported ReportTable DataSets" );
978
else if ( reader.isStartElement( ReportTablePeriodConverter.COLLECTION_NAME ) )
980
setMessage( "importing_report_table_periods" );
982
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTablePeriodBatchHandler.class );
986
XMLConverter converter = new ReportTablePeriodConverter( batchHandler, importObjectService,
987
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
988
objectMappingGenerator.getPeriodMapping( params.skipMapping() ) );
990
converter.read( reader, params );
992
batchHandler.flush();
994
log.info( "Imported ReportTable Periods" );
996
else if ( reader.isStartElement( ReportTableOrganisationUnitConverter.COLLECTION_NAME ) )
998
setMessage( "importing_report_table_organisation_units" );
1000
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( ReportTableOrganisationUnitBatchHandler.class );
1002
batchHandler.init();
1004
XMLConverter converter = new ReportTableOrganisationUnitConverter( batchHandler, importObjectService,
1005
objectMappingGenerator.getReportTableMapping( params.skipMapping() ),
1006
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ) );
1008
converter.read( reader, params );
1010
batchHandler.flush();
1012
log.info( "Imported ReportTable OrganisationUnits" );
1014
else if ( reader.isStartElement( OlapUrlConverter.COLLECTION_NAME ) )
1016
setMessage( "importing_olap_urls" );
1018
XMLConverter converter = new OlapUrlConverter( importObjectService, olapURLService );
1020
converter.read( reader, params );
1022
log.info( "Imported OlapURLs" );
1024
else if ( reader.isStartElement( CompleteDataSetRegistrationConverter.COLLECTION_NAME ) && params.isDataValues() )
1026
setMessage( "importing_complete_data_set_registrations" );
1028
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( CompleteDataSetRegistrationBatchHandler.class );
1030
batchHandler.init();
1032
XMLConverter converter = new CompleteDataSetRegistrationConverter( batchHandler, importObjectService, params,
1033
objectMappingGenerator.getDataSetMapping( params.skipMapping() ),
1034
objectMappingGenerator.getPeriodMapping( params.skipMapping() ),
1035
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ) );
1037
converter.read( reader, params );
1039
batchHandler.flush();
1041
log.info( "Imported CompleteDataSetRegistrations" );
1043
else if ( reader.isStartElement( DataValueConverter.COLLECTION_NAME ) && params.isDataValues() )
1045
if ( params.skipMapping() == false && lockingManager.currentImportContainsLockedData() )
1047
setMessage( "import_contains_data_for_locked_periods" );
1049
log.warn( "Import file contained DataValues for locked periods" );
1053
setMessage( "importing_data_values" );
1055
BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( DataValueBatchHandler.class );
1057
BatchHandler importDataValueBatchHandler = batchHandlerFactory.createBatchHandler( ImportDataValueBatchHandler.class );
1059
batchHandler.init();
1061
importDataValueBatchHandler.init();
1063
XMLConverter converter = new DataValueConverter( batchHandler,
1064
importDataValueBatchHandler,
1066
importObjectService,
1068
objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
1069
objectMappingGenerator.getPeriodMapping( params.skipMapping() ),
1070
objectMappingGenerator.getOrganisationUnitMapping( params.skipMapping() ),
1071
objectMappingGenerator.getCategoryOptionComboMapping( params.skipMapping() ) );
1073
converter.read( reader, params );
1075
batchHandler.flush();
1077
importDataValueBatchHandler.flush();
1079
log.info( "Imported DataValues" );
1084
setMessage( "import_process_done" );
1086
NameMappingUtil.clearMapping();
1088
StreamUtils.closeInputStream( zipIn );
1090
cacheManager.clearCache();