Project

General

Profile

Download (6.64 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2007 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.berlinModel.out;
10

    
11
import java.sql.SQLException;
12
import java.util.List;
13

    
14
import org.apache.log4j.Logger;
15
import org.springframework.stereotype.Component;
16
import org.springframework.transaction.TransactionStatus;
17

    
18
import eu.etaxonomy.cdm.io.common.Source;
19
import eu.etaxonomy.cdm.io.common.mapping.out.CdmDbExportMapping;
20
import eu.etaxonomy.cdm.io.common.mapping.out.CreatedAndNotesMapper;
21
import eu.etaxonomy.cdm.io.common.mapping.out.DbExtensionMapper;
22
import eu.etaxonomy.cdm.io.common.mapping.out.DbStringMapper;
23
import eu.etaxonomy.cdm.io.common.mapping.out.DbTimePeriodMapper;
24
import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer;
25
import eu.etaxonomy.cdm.io.common.mapping.out.IdMapper;
26
import eu.etaxonomy.cdm.model.agent.AgentBase;
27
import eu.etaxonomy.cdm.model.agent.Person;
28
import eu.etaxonomy.cdm.model.common.CdmBase;
29
import eu.etaxonomy.cdm.model.common.ExtensionType;
30

    
31

    
32
/**
33
 * @author a.mueller
34
 * @created 20.03.2008
35
 * @version 1.0
36
 */
37
@Component
38
public class BerlinModelAuthorExport extends BerlinModelExportBase<Person> {
39
	private static final Logger logger = Logger.getLogger(BerlinModelAuthorExport.class);
40

    
41
	private static int modCount = 5000;
42
	private static final String dbTableName = "Author";
43
	private static final String pluralString = "Authors";
44
	private static final Class<? extends CdmBase> standardMethodParameter = Person.class;
45
	public BerlinModelAuthorExport(){
46
		super();
47
	}
48
	
49

    
50
	@Override
51
	protected boolean doCheck(BerlinModelExportState state){
52
		boolean result = true;
53
		logger.warn("Checking for "+pluralString+" not yet implemented");
54
		//result &= checkArticlesWithoutJournal(bmiConfig);
55
		//result &= checkPartOfJournal(bmiConfig);
56
		
57
		return result;
58
	}
59
	
60
	private CdmDbExportMapping<BerlinModelExportState, BerlinModelExportConfigurator, IExportTransformer> getMapping(){
61
		String tableName = dbTableName;
62
		CdmDbExportMapping<BerlinModelExportState, BerlinModelExportConfigurator, IExportTransformer> mapping = new CdmDbExportMapping<BerlinModelExportState, BerlinModelExportConfigurator, IExportTransformer>(tableName);
63
		mapping.addMapper(IdMapper.NewInstance("AuthorId"));
64
		mapping.addMapper(DbStringMapper.NewInstance("nomenclaturalTitle", "Abbrev"));
65
		mapping.addMapper(DbStringMapper.NewInstance("firstname", "FirstName"));
66
		mapping.addMapper(DbStringMapper.NewInstance("lastname", "LastName"));
67
		mapping.addMapper(DbTimePeriodMapper.NewInstance("lifespan", "Dates"));
68
		mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.NOMENCLATURAL_STANDARD(), "NomStandard"));
69
		mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.AREA_OF_INTREREST(), "AreaOfInterest"));
70
		mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(), "Initials"));
71
//		mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(),Kürzel")); //Initials used instead
72
//		mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(), "DraftKürz")); //Initials used instead
73
		mapping.addMapper(CreatedAndNotesMapper.NewInstance());
74
		
75
		return mapping;
76
	}
77
	
78
	/* (non-Javadoc)
79
	 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#doInvoke(eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState)
80
	 */
81
	@Override
82
	protected void doInvoke(BerlinModelExportState state) {
83
		try{
84
			boolean success = true;
85
			BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();
86
			
87
			logger.info("start make "+pluralString+" ...");
88
			doDelete(bmeConfig);
89
			
90
			TransactionStatus txStatus = startTransaction(true);
91
			Class<Person> clazz = Person.class;
92
			List<Person> persons = getAgentService().list(clazz, 100000000, 0, null, null);
93
			
94
			CdmDbExportMapping<BerlinModelExportState, BerlinModelExportConfigurator, IExportTransformer> mapping = getMapping();
95
			mapping.initialize(state);
96
			
97
			logger.info("save "+pluralString+" ...");
98
			int count = 0;
99
			for (AgentBase<?> agent : persons){
100
				doCount(count++, modCount, pluralString);
101
				if (agent instanceof Person){
102
					success &= mapping.invoke(agent);
103
				}
104
			}
105
			
106
			commitTransaction(txStatus);
107
			logger.info("end make "+pluralString+"  ..." + getSuccessString(success));
108
			if (!success){
109
				state.setUnsuccessfull();
110
			}
111
			return;
112
		}catch(SQLException e){
113
			e.printStackTrace();
114
			logger.error(e.getMessage());
115
			state.setUnsuccessfull();
116
			return;
117
		}
118
	}
119
	
120
	protected boolean doDelete(BerlinModelExportConfigurator config){
121
		
122
		//TODO make more generic for all BerlinModelExport classes
123
		String sql;
124
		Source destination =  config.getDestination();
125
		//RelPTaxon
126
		sql = "DELETE FROM RelPTaxon";
127
		destination.setQuery(sql);
128
		destination.update(sql);
129
		//Fact
130
		sql = "DELETE FROM Fact";
131
		destination.setQuery(sql);
132
		destination.update(sql);
133
		//PTaxon
134
		sql = "DELETE FROM PTaxon";
135
		destination.setQuery(sql);
136
		destination.update(sql);
137
		
138
		//NameHistory
139
		sql = "DELETE FROM NameHistory";
140
		destination.setQuery(sql);
141
		destination.update(sql);
142
		//RelName
143
		sql = "DELETE FROM RelName";
144
		destination.setQuery(sql);
145
		destination.update(sql);
146
		//NomStatusRel
147
		sql = "DELETE FROM NomStatusRel";
148
		destination.setQuery(sql);
149
		destination.update(sql);
150
		//Name
151
		sql = "DELETE FROM Name";
152
		destination.setQuery(sql);
153
		destination.update(sql);
154
		//RefDetail
155
		sql = "DELETE FROM RefDetail";
156
		destination.setQuery(sql);
157
		destination.update(sql);
158
		//Reference
159
		sql = "DELETE FROM Reference";
160
		destination.setQuery(sql);
161
		destination.update(sql);
162
		//AuthorTeamSequence
163
		sql = "DELETE FROM AuthorTeamSequence";
164
		destination.setQuery(sql);
165
		destination.update(sql);
166
		//AuthorTeam
167
		sql = "DELETE FROM AuthorTeam";
168
		destination.setQuery(sql);
169
		destination.update(sql);
170
		//Author
171
		sql = "DELETE FROM Author";
172
		destination.setQuery(sql);
173
		destination.update(sql);
174
		return true;
175
	}
176
	
177
	
178
	/* (non-Javadoc)
179
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IIoConfigurator)
180
	 */
181
	@Override
182
	protected boolean isIgnore(BerlinModelExportState state) {
183
		return ! state.getConfig().isDoAuthors();
184
	}
185

    
186
	/* (non-Javadoc)
187
	 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
188
	 */
189
	@Override
190
	public Class<? extends CdmBase> getStandardMethodParameter() {
191
		return standardMethodParameter;
192
	}
193

    
194

    
195

    
196
}
(1-1/12)