Project

General

Profile

Download (4.18 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.io.pesi.out;
10

    
11
import java.util.Collection;
12

    
13
import org.apache.log4j.Logger;
14

    
15
import eu.etaxonomy.cdm.io.common.DbExportStateBase;
16
import eu.etaxonomy.cdm.io.common.ImportHelper;
17
import eu.etaxonomy.cdm.io.common.mapping.CdmMapperBase;
18
import eu.etaxonomy.cdm.io.common.mapping.out.CollectionExportMapping;
19
import eu.etaxonomy.cdm.io.common.mapping.out.DbSequenceMapper;
20
import eu.etaxonomy.cdm.io.common.mapping.out.IDbExportMapper;
21
import eu.etaxonomy.cdm.io.common.mapping.out.IdMapper;
22
import eu.etaxonomy.cdm.model.common.CdmBase;
23

    
24
/**
25
 * Does not seem to be in use currently. (2019-09-22)
26
 * @author e.-m.lee
27
 * @since 24.02.2010
28
 */
29
public class PesiCollectionExportMapping extends PesiExportMapping {
30
	private static final Logger logger = Logger.getLogger(CollectionExportMapping.class);
31

    
32
	private IdMapper parentMapper;
33
	private DbSequenceMapper sequenceMapper;
34
	private String collectionAttributeName;
35

    
36
	public static PesiCollectionExportMapping NewInstance(String tableName, String collectionAttributeName, IdMapper parentMapper){
37
		return new PesiCollectionExportMapping(tableName, collectionAttributeName, parentMapper, null);
38
	}
39

    
40
	public static PesiCollectionExportMapping NewInstance(String tableName, String collectionAttributeName, IdMapper parentMapper, String seqenceAttribute){
41
		return NewInstance(tableName, collectionAttributeName, parentMapper, seqenceAttribute, 0);
42
	}
43

    
44
	public static PesiCollectionExportMapping NewInstance(String tableName, String collectionAttributeName, IdMapper parentMapper, String seqenceAttribute, int sequenceStart){
45
		DbSequenceMapper sequenceMapper = DbSequenceMapper.NewInstance(seqenceAttribute, sequenceStart);
46
		PesiCollectionExportMapping result = new PesiCollectionExportMapping(tableName, collectionAttributeName, parentMapper, sequenceMapper);
47
		return result;
48
	}
49

    
50
	private PesiCollectionExportMapping(String tableName, String collectionAttributeName, IdMapper parentMapper, DbSequenceMapper sequenceMapper){
51
		super(tableName);
52
		this.parentMapper = parentMapper;
53
		this.addMapper(parentMapper);
54
		this.sequenceMapper = sequenceMapper;
55
		this.addMapper(sequenceMapper);
56
		this.collectionAttributeName = collectionAttributeName;
57
	}
58

    
59
	@Override
60
	public boolean invoke(CdmBase parent) {
61
		try {
62
			boolean result = true;
63
			Collection<CdmBase> collection = getCollection(parent);
64
			if (this.sequenceMapper != null){
65
				this.sequenceMapper.reset();
66
			}
67
			for(CdmBase collectionObject : collection){
68
				if (collectionObject == null){
69
					logger.warn("Collection object was null");
70
					result = false;
71
					continue;
72
				}
73
				for (CdmMapperBase mapper : this.mapperList){
74
					if (mapper == this.parentMapper){
75
						parentMapper.invoke(parent);
76
					}else if (mapper == this.sequenceMapper){
77
						this.sequenceMapper.invoke(null);
78
					}else if (mapper instanceof IDbExportMapper){
79
						IDbExportMapper<DbExportStateBase<?, PesiTransformer>, PesiTransformer> dbMapper = (IDbExportMapper<DbExportStateBase<?, PesiTransformer>, PesiTransformer>)mapper;
80
						try {
81
							result &= dbMapper.invoke(collectionObject);
82
						} catch (Exception e) {
83
							result = false;
84
							logger.error("Error occurred in mapping.invoke");
85
							e.printStackTrace();
86
							continue;
87
						}
88
					}else{
89
						logger.warn("mapper is not of type " + IDbExportMapper.class.getSimpleName());
90
					}
91
				}
92
				int count = getPreparedStatement().executeUpdate();
93
				if (logger.isDebugEnabled()) {
94
                    logger.debug("Number of rows affected: " + count);
95
                }
96
			}
97
			return result;
98
		} catch(Exception e){
99
			e.printStackTrace();
100
			logger.error(e.getMessage() + ": " + parent.toString());
101
			return false;
102
		}
103
	}
104

    
105
	private Collection<CdmBase> getCollection(CdmBase cdmBase){
106
		Object result = ImportHelper.getValue(cdmBase, collectionAttributeName, false, true);
107
		return (Collection<CdmBase>)result;
108
	}
109
}
(3-3/14)