Project

General

Profile

Download (6.26 KB) Statistics
| Branch: | Tag: | 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.berlinModel.out.mapper.CreatedAndNotesMapper;
19
import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbExtensionMapper;
20
import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbStringMapper;
21
import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbTimePeriodMapper;
22
import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;
23
import eu.etaxonomy.cdm.io.common.Source;
24
import eu.etaxonomy.cdm.model.agent.AgentBase;
25
import eu.etaxonomy.cdm.model.agent.Person;
26
import eu.etaxonomy.cdm.model.common.CdmBase;
27
import eu.etaxonomy.cdm.model.common.ExtensionType;
28

    
29

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

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

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

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

    
192

    
193

    
194
}
(1-1/14)