Project

General

Profile

« Previous | Next » 

Revision 9b853065

Added by Niels Hoffmann almost 14 years ago

Integrated progress monitor into application controller and started integrating it to some imports.

View differences:

.gitattributes
1233 1233
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/ExcelUtils.java -text
1234 1234
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/FileCopy.java -text
1235 1235
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/IProgressMonitor.java -text
1236
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/ProgressMonitorBase.java -text svneol=unset#text/plain
1236 1237
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/ResultWrapper.java -text
1237 1238
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/Tree.java -text
1238 1239
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/TreeNode.java -text
......
2523 2524
cdmlib-print/build.properties -text
2524 2525
cdmlib-print/pom.xml -text
2525 2526
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/AbstractXmlEntityFactory.java -text
2526
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/IHarvestObserver.java -text
2527 2527
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/IXMLElements.java -text
2528 2528
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/IXMLEntityFactory.java -text
2529 2529
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/LocalXMLEntityFactory.java -text
2530
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/NotificationMediator.java -text
2531 2530
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/PublishConfigurator.java -text
2532 2531
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/Publisher.java -text
2533 2532
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/RemoteXMLEntityFactory.java -text
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/IProgressMonitor.java
117 117
	
118 118
	/**
119 119
	 * Notifies about a warning
120
	 * @param warning
120
	 * @param message
121 121
	 */
122
	public void warning(String warning);
122
	public void warning(String message);
123 123
	
124 124
	/**
125 125
	 * Notifies about a warning that was caused by an exception.
126
	 * @param string
127
	 * @param exception
126
	 * @param message
127
	 * @param throwable
128 128
	 */
129
	public void warning(String string, Exception exeption);
129
	public void warning(String message, Throwable throwable);
130 130
	
131 131
}
132 132

  
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/ProgressMonitorBase.java
1
/**
2
 * 
3
 */
4
package eu.etaxonomy.cdm.common;
5

  
6
/**
7
 * Empty default implementation
8
 * 
9
 * @author n.hoffmann
10
 *
11
 */
12
public class ProgressMonitorBase implements IProgressMonitor {
13

  
14
	/* (non-Javadoc)
15
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#beginTask(java.lang.String, int)
16
	 */
17
	@Override
18
	public void beginTask(String name, int totalWork) {
19
		// TODO Auto-generated method stub
20

  
21
	}
22

  
23
	/* (non-Javadoc)
24
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#done()
25
	 */
26
	@Override
27
	public void done() {
28
		// TODO Auto-generated method stub
29

  
30
	}
31

  
32
	/* (non-Javadoc)
33
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#isCanceled()
34
	 */
35
	@Override
36
	public boolean isCanceled() {
37
		// TODO Auto-generated method stub
38
		return false;
39
	}
40

  
41
	/* (non-Javadoc)
42
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#setCanceled(boolean)
43
	 */
44
	@Override
45
	public void setCanceled(boolean value) {
46
		// TODO Auto-generated method stub
47

  
48
	}
49

  
50
	/* (non-Javadoc)
51
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#setTaskName(java.lang.String)
52
	 */
53
	@Override
54
	public void setTaskName(String name) {
55
		// TODO Auto-generated method stub
56

  
57
	}
58

  
59
	/* (non-Javadoc)
60
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#subTask(java.lang.String)
61
	 */
62
	@Override
63
	public void subTask(String name) {
64
		// TODO Auto-generated method stub
65

  
66
	}
67

  
68
	/* (non-Javadoc)
69
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#worked(int)
70
	 */
71
	@Override
72
	public void worked(int work) {
73
		// TODO Auto-generated method stub
74

  
75
	}
76

  
77
	/* (non-Javadoc)
78
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#warning(java.lang.String)
79
	 */
80
	@Override
81
	public void warning(String message) {
82
		// TODO Auto-generated method stub
83

  
84
	}
85

  
86
	/* (non-Javadoc)
87
	 * @see eu.etaxonomy.cdm.common.IProgressMonitor#warning(java.lang.String, java.lang.Exception)
88
	 */
89
	@Override
90
	public void warning(String message, Throwable throwable) {
91
		// TODO Auto-generated method stub
92

  
93
	}
94

  
95
}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultImport.java
19 19
import org.springframework.stereotype.Component;
20 20

  
21 21
import eu.etaxonomy.cdm.api.service.IService;
22
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
23 22
import eu.etaxonomy.cdm.model.agent.Person;
24 23
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
25 24
import eu.etaxonomy.cdm.model.common.CdmBase;
......
145 144
		}
146 145
				
147 146
		ReferenceBase sourceReference = config.getSourceReference();
148
		logger.info("Start import from Source '"+ config.getSourceNameString() + "' to destination '" + config.getDestinationNameString() + "'");
147
		String message = "Start import from Source '"+ config.getSourceNameString() + "' to destination '" + config.getDestinationNameString() + "'";
148
		logger.info(message);
149
		config.updateProgress(message);
149 150
		
150 151
		ImportStateBase state = config.getNewState();
151 152
		state.initialize(config);
......
189 190
//			
190 191
//		}
191 192
		
192
		
193
		logger.info("End import from source '" + config.getSourceNameString() 
194
				+ "' to destination '" + config.getDestinationNameString() + "'"+
195
				(result? "(successful)":"(with errors)")) ;
193
		message = "End import from source '" + config.getSourceNameString() 
194
								+ "' to destination '" + config.getDestinationNameString() + "'"+
195
								(result? "(successful)":"(with errors)");
196
		logger.info(message) ;
197
		config.updateProgress(message);
196 198
		return result;
197 199
	}
198 200
	
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmIoBase.java
44 44
			logger.warn("No invoke for " + ioName + " (ignored)");
45 45
			return true;
46 46
		}else{
47
			state.getConfig().updateProgress("Invoking " + ioName);
47 48
			return doInvoke(state);
48 49
		}
49 50
	}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IImportConfigurator.java
11 11

  
12 12
import java.util.UUID;
13 13

  
14
import eu.etaxonomy.cdm.common.IProgressMonitor;
14 15
import eu.etaxonomy.cdm.database.DbSchemaValidation;
15 16
import eu.etaxonomy.cdm.database.ICdmDataSource;
16 17
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IIoConfigurator.java
7 7
package eu.etaxonomy.cdm.io.common;
8 8

  
9 9
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
10
import eu.etaxonomy.cdm.common.IProgressMonitor;
10 11
import eu.etaxonomy.cdm.database.DbSchemaValidation;
11 12

  
12 13

  
......
61 62
	 */
62 63
	public void setDbSchemaValidation(DbSchemaValidation dbSchemaValidation);
63 64

  
65
	/**
66
	 * 
67
	 * @param monitor
68
	 */
69
	public void setProgressMonitor(IProgressMonitor monitor);
70
	
71
	/**
72
	 * 
73
	 * @return
74
	 */
75
	public IProgressMonitor getProgressMonitor();
64 76
	
77
	/**
78
	 * 
79
	 * @param message
80
	 */
81
	public void updateProgress(String message);
65 82
}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IoConfiguratorBase.java
9 9
import org.apache.log4j.Logger;
10 10

  
11 11
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
12
import eu.etaxonomy.cdm.common.IProgressMonitor;
12 13
import eu.etaxonomy.cdm.database.DbSchemaValidation;
13 14
import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;
14 15

  
......
50 51
	private boolean doMarker = true;
51 52
	private boolean doUser = true;
52 53

  
54
	private IProgressMonitor progressMonitor;
55

  
53 56
	
54 57
	/* (non-Javadoc)
55 58
	 * @see eu.etaxonomy.cdm.io.common.IIoConfigurator#getDbSchemaValidation()
......
240 243
	public void setUseTaxonomicTree(boolean useTaxonomicTree) {
241 244
		this.useTaxonomicTree = useTaxonomicTree;
242 245
	}
246
	
247
	@Override
248
	public void setProgressMonitor(IProgressMonitor monitor) {
249
		this.progressMonitor = monitor;
250
	}
251
	
252
	public IProgressMonitor getProgressMonitor(){
253
		return this.progressMonitor;
254
	}
255
	
256
	@Override
257
	public void updateProgress(String message) {
258
		if(progressMonitor != null){
259
			progressMonitor.worked(1);
260
			progressMonitor.subTask(message);
261
		}
262
	}
243 263
}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/SDDCdmExporter.java
73 73
//		Map<String, MapWrapper<? extends CdmBase>> stores) {
74 74
	
75 75
		SDDExportConfigurator sddExpConfig = state.getConfig();
76
		String dbname = sddExpConfig.getSource().getName();
76
		
77
		String dbname = sddExpConfig.getSource() != null ? sddExpConfig.getSource().getName() : "unknown";
77 78
    	String fileName = sddExpConfig.getDestinationNameString();
78 79
		logger.info("Serializing DB " + dbname + " to file " + fileName);
79 80
		logger.debug("DbSchemaValidation = " + sddExpConfig.getDbSchemaValidation());
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
92 92
		String sourceName = config.getSource();
93 93
		NodeList unitsList = getUnitsNodeList(sourceName);
94 94
		if (unitsList != null){
95
			logger.info("nb units to insert: "+unitsList.getLength());
95
			String message = "nb units to insert: "+unitsList.getLength();
96
			logger.info(message);
97
			config.updateProgress(message);
96 98
			
97 99
			Abcd206DataHolder dataHolder = new Abcd206DataHolder();
98 100
			
......
102 104
				
103 105
				//compare the ABCD elements added in to the CDM and the unhandled ABCD elements
104 106
				compareABCDtoCDM(sourceName, dataHolder.knownABCDelements, dataHolder);
105
				
107
								
106 108
				//reset the ABCD elements added in CDM
107 109
				//knownABCDelements = new ArrayList<String>();
108 110
				dataHolder.allABCDelements = new HashMap<String,String>();
......
121 123

  
122 124
		TransactionStatus tx = startTransaction();
123 125
		try {
126
			config.updateProgress("Importing data for unit: " + dataHolder.unitID);
127
			
124 128
//			ReferenceBase sec = Database.NewInstance();
125 129
//			sec.setTitleCache("XML DATA");
126 130
			ReferenceBase sec = config.getTaxonReference();
......
312 316
	private void setUnitPropertiesXML(Element root, Abcd206DataHolder dataHolder){
313 317
		try{
314 318
			NodeList group;
315

  
319
			
316 320
//			try{afficherInfos(racine, 0);}catch (Exception e) {logger.info(e);}
317 321
			group = root.getChildNodes();
318 322
//			logger.info("ABCD ELEMENT not stored: "+group.item(i).getNodeName().toString()+" - value: "+group.item(i).getTextContent());
cdmlib-print/pom.xml
3 3
	<parent>
4 4
		<artifactId>cdmlib-parent</artifactId>
5 5
		<groupId>eu.etaxonomy</groupId>
6
		<version>1.0</version>
6
		<version>2.4</version>
7 7
	</parent>
8 8
	
9 9
	<modelVersion>4.0.0</modelVersion>
......
14 14
	
15 15
	<packaging>jar</packaging>
16 16
		
17
	<version>1.0</version>
17
	<version>2.4</version>
18 18
	
19 19
	<name>CDM Print</name>
20 20
	
......
46 46
			<artifactId>odfdom</artifactId>
47 47
			<version>0.8.6</version>
48 48
		</dependency>
49
		<dependency>
50
			<groupId>jdom</groupId>
51
			<artifactId>jdom</artifactId>
52
			<version>1.0</version>
53
		</dependency>
49 54
	</dependencies>
50 55
</project>
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/IHarvestObserver.java
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10

  
11
package eu.etaxonomy.cdm.print;
12

  
13

  
14
/**
15
 * A client implementing this interface and registering with a {@link NotificationMediator}
16
 * will get notified of the progress of the print publishing process.
17
 * 
18
 * @author n.hoffmann
19
 * @created Jul 19, 2010
20
 * @version 1.0
21
 */
22
public interface IHarvestObserver {
23

  
24
	/**
25
	 * 
26
	 * @param message
27
	 */
28
	public void update(String message);
29
}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/NotificationMediator.java
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10

  
11
package eu.etaxonomy.cdm.print;
12

  
13
import java.util.ArrayList;
14
import java.util.List;
15

  
16
import org.apache.log4j.Logger;
17

  
18
/**
19
 * A simple mediator that will mediate messages for {@linkplain IHarvestObserver observer}.
20
 * 
21
 * @author n.hoffmann
22
 * @created Aug 3, 2010
23
 * @version 1.0
24
 */
25
public class NotificationMediator {
26
	private static final Logger logger = Logger
27
			.getLogger(NotificationMediator.class);
28
	
29

  
30
	private List<IHarvestObserver> harvestOberver = new ArrayList<IHarvestObserver>();
31
	
32
	/**
33
	 * Adds an {@link IHarvestObserver} to the list of <code>IHarvestObservers</code>.
34
	 * 
35
	 * @see {@link IHarvestObserver}
36
	 * @param observer
37
	 */
38
	public void addObserver(IHarvestObserver observer) {
39
		harvestOberver.add(observer);
40
	}
41
	
42
	/**
43
	 * Removes an {@link IHarvestObserver} from the list of <code>IHarvestObservers</code>.
44
	 * 
45
	 * @see {@link IHarvestObserver}
46
	 * @param observer
47
	 */
48
	public void removeObserver(IHarvestObserver observer) {
49
		harvestOberver.remove(observer);
50
	}
51
	
52
	/**
53
	 * Calls the {@link IHarvestObserver#update(String)} method on all registered {@link IHarvestObserver}.
54
	 * 
55
	 * @param message
56
	 */
57
	public void notifyObserver(String message) {
58
		for(IHarvestObserver observer : harvestOberver){
59
			logger.trace("Notifying HarvestObserver");
60
			observer.update(message);
61
			logger.info(message);
62
		}
63
	}
64
}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/PublishConfigurator.java
22 22
import org.jdom.Element;
23 23

  
24 24
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
25
import eu.etaxonomy.cdm.common.IProgressMonitor;
25 26
import eu.etaxonomy.cdm.print.out.IPublishOutputModule;
26 27

  
27 28
/**
......
61 62

  
62 63
	private boolean remote;
63 64

  
64
	private NotificationMediator notificationMediator;
65
	private IProgressMonitor progressMonitor;
65 66

  
66 67
	/**
67 68
	 * Hidden default constructor
......
292 293
		return count;
293 294
	}
294 295
	
295
	/**
296
	 * Adds an {@link IHarvestObserver} to the configurators list of <code>IHarvestObservers</code>.
297
	 * 
298
	 * @see {@link IHarvestObserver}
299
	 * @param observer
300
	 */
301
	public void addObserver(IHarvestObserver observer) {
302
		getNotificationMediator().addObserver(observer);
303
	}
304
	
305
	/**
306
	 * Removes an {@link IHarvestObserver} from the configurators list of <code>IHarvestObservers</code>.
307
	 * 
308
	 * @see {@link IHarvestObserver}
309
	 * @param observer
310
	 */
311
	public void removeObserver(IHarvestObserver observer) {
312
		getNotificationMediator().removeObserver(observer);
313
	}
314
	
315
	public void notifyObserver(String message){
316
		getNotificationMediator().notifyObserver(message);
317
	}
318 296

  
319 297
	/**
320 298
	 * Whether taxonomically included taxa for the {@linkplain #getSelectedTaxonNodeElements() selected taxon nodes}
......
369 347
		this.applicationController = applicationController;
370 348
	}
371 349

  
372
	/**
373
	 * @return the notificationMediator
374
	 */
375
	public NotificationMediator getNotificationMediator() {
376
		if(notificationMediator == null){
377
			notificationMediator = new NotificationMediator();
378
		}
379
		return notificationMediator;
380
	}
381
	
382
	/**
383
	 * @param notificationMediator the notificationMediator to set
384
	 */
385
	public void setNotificationMediator(NotificationMediator notificationMediator) {
386
		this.notificationMediator = notificationMediator;
387
	}
388

  
389 350
	/**
390 351
	 * The feature tree configures which features and in which order and nesting will be exported 
391 352
	 * by the application
......
404 365
		this.featureTreeUuid = featureTreeUuid;
405 366
	}
406 367

  
368
	public void setProgressMonitor(IProgressMonitor progressMonitor) {
369
		this.progressMonitor = progressMonitor;
370
	}
371

  
372
	public IProgressMonitor getProgressMonitor() {
373
		return progressMonitor;
374
	}
375

  
407 376

  
408 377

  
409 378

  
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/Publisher.java
37 37
		}
38 38
		
39 39
		for(IPublishOutputModule outputModule : configurator.getOutputModules()){
40
			outputModule.output(document, configurator.getExportFolder(), configurator.getNotificationMediator());
40
			outputModule.output(document, configurator.getExportFolder(), configurator.getProgressMonitor());
41 41
		}
42 42
		
43 43
	}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/XMLHarvester.java
21 21
import org.jdom.JDOMException;
22 22
import org.jdom.xpath.XPath;
23 23

  
24
import eu.etaxonomy.cdm.common.IProgressMonitor;
24 25
import eu.etaxonomy.cdm.print.out.IPublishOutputModule;
25 26

  
26 27
/**
......
39 40
	
40 41
	private List<SimplifiedFeatureNode> simplifiedFeatureTree;
41 42
	
43
	private IProgressMonitor progressMonitor;
44
	
42 45
	/**
43 46
	 * 
44 47
	 * @param configurator
45 48
	 */
46 49
	public XMLHarvester(PublishConfigurator configurator){
47 50
		this.configurator = configurator;
48
		factory = configurator.getFactory();
51
		this.factory = configurator.getFactory();
52
		this.progressMonitor = configurator.getProgressMonitor();
49 53
		
50 54
		Element featureTreeElement = factory.getFeatureTree(configurator.getFeatureTreeUuid());
51 55
		createSimplifiedFeatureTree(featureTreeElement);
......
56 60
		
57 61
		Element realRoot = factory.getFeatureNode(XMLHelper.getUuid(root));
58 62
		
59
		configurator.notifyObserver("Generating simplified Feature Tree.");
63
		progressMonitor.subTask("Generating simplified Feature Tree.");
60 64
		simplifiedFeatureTree = featureTreeRecursive(realRoot);
61 65
		
62 66
		logger.info("Simplified FeeatureTree created");
......
175 179
		// get the taxon from the generic service to have the uuid for further processing
176 180
		Element taxonElement = factory.getTaxonForTaxonNode(taxonNodeElement);
177 181
		
178
		configurator.notifyObserver("Gathering data for taxon: " + XMLHelper.getTitleCache(taxonElement));
182
		progressMonitor.subTask("Gathering data for taxon: " + XMLHelper.getTitleCache(taxonElement));
179 183
		
180 184
		// get initialized accepted taxon
181 185
		// TODO right now we are getting that from the portal service but should consider to use the generic service
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/AbstractPublishOutputModule.java
17 17
import org.apache.log4j.Logger;
18 18
import org.jdom.Document;
19 19

  
20
import eu.etaxonomy.cdm.print.NotificationMediator;
20
import eu.etaxonomy.cdm.common.IProgressMonitor;
21 21

  
22 22
/**
23 23
 * This abstract implementation of the {@link IPublishOutputModule} contains convenience methods for file 
......
70 70
	/* (non-Javadoc)
71 71
	 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#output(org.jdom.Document, java.io.File)
72 72
	 */
73
	public void output(Document document, File exportFolder, NotificationMediator notificationMediator) {
73
	public void output(Document document, File exportFolder, IProgressMonitor progressMonitor) {
74
		if(progressMonitor == null){
75
			throw new IllegalArgumentException("ProgressMonitor may not be null");
76
		}
77
		
74 78
		String message = "Running output module: " + this.getClass().getSimpleName();
75 79
		logger.trace(message);
76
		if(notificationMediator != null)
77
			notificationMediator.notifyObserver(message);
80
		progressMonitor.subTask(message);
78 81
	}
79 82
}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/IPublishOutputModule.java
14 14

  
15 15
import org.jdom.Document;
16 16

  
17
import eu.etaxonomy.cdm.print.NotificationMediator;
17
import eu.etaxonomy.cdm.common.IProgressMonitor;
18 18

  
19 19

  
20 20
/**
......
43 43
	 * @param notificationMediator the {@link NotificationMediator} to propagate progress of the publish process. Implementors
44 44
	 * should allow this to be <code>null</code>.
45 45
	 */
46
	public void output(Document document, File targetFolder, NotificationMediator notificationMediator);
46
	public void output(Document document, File targetFolder, IProgressMonitor progressMonitor);
47 47
	
48 48
}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/odf/OdfOutputModule.java
11 11
import org.jdom.transform.XSLTransformException;
12 12
import org.odftoolkit.odfdom.doc.OdfTextDocument;
13 13

  
14
import eu.etaxonomy.cdm.print.NotificationMediator;
14
import eu.etaxonomy.cdm.common.IProgressMonitor;
15 15
import eu.etaxonomy.cdm.print.Transformator;
16 16
import eu.etaxonomy.cdm.print.out.AbstractPublishOutputModule;
17 17

  
......
49 49
	/* (non-Javadoc)
50 50
	 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#output(org.jdom.Document, java.io.File)
51 51
	 */
52
	public void output(Document document, File exportFolder, NotificationMediator notificationMediator) {
52
	public void output(Document document, File exportFolder, IProgressMonitor progressMonitor) {
53 53
		
54
		super.output(document, exportFolder, notificationMediator);
54
		super.output(document, exportFolder, progressMonitor);
55 55
		
56 56
		Document transformedDocument;
57 57
		String filePath = getFilePath(exportFolder);
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/pdf/PdfOutputModule.java
29 29
import org.jdom.Document;
30 30
import org.jdom.transform.JDOMSource;
31 31

  
32
import eu.etaxonomy.cdm.print.NotificationMediator;
32
import eu.etaxonomy.cdm.common.IProgressMonitor;
33 33
import eu.etaxonomy.cdm.print.out.AbstractPublishOutputModule;
34 34

  
35 35
/**
......
50 50
	 * (non-Javadoc)
51 51
	 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#output(org.jdom.Document, java.io.File, eu.etaxonomy.printpublisher.NotificationMediator)
52 52
	 */
53
	public void output(Document document, File exportFolder, NotificationMediator notificationMediator) {
53
	public void output(Document document, File exportFolder, IProgressMonitor progressMonitor) {
54 54
		
55
		super.output(document, exportFolder, notificationMediator);
55
		super.output(document, exportFolder, progressMonitor);
56 56
		
57 57
		try{
58 58
		
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/taxpub/TaxPubOutputModule.java
15 15
import org.apache.log4j.Logger;
16 16
import org.jdom.Document;
17 17

  
18
import eu.etaxonomy.cdm.print.NotificationMediator;
18
import eu.etaxonomy.cdm.common.IProgressMonitor;
19 19
import eu.etaxonomy.cdm.print.out.AbstractPublishOutputModule;
20 20

  
21 21
/**
......
36 36
	
37 37
	@Override
38 38
	public void output(Document document, File exportFolder,
39
			NotificationMediator notificationMediator) {
40
		super.output(document, exportFolder, notificationMediator);
39
			IProgressMonitor progressMonitor) {
40
		super.output(document, exportFolder, progressMonitor);
41 41
		
42
		notificationMediator.notifyObserver("Not implemented yet");
42
		progressMonitor.subTask("Not implemented yet");
43 43
	}
44 44
}
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/xml/XMLOutputModule.java
19 19
import org.jdom.Document;
20 20
import org.jdom.output.XMLOutputter;
21 21

  
22
import eu.etaxonomy.cdm.print.NotificationMediator;
22
import eu.etaxonomy.cdm.common.IProgressMonitor;
23 23
import eu.etaxonomy.cdm.print.out.AbstractPublishOutputModule;
24 24

  
25 25
/**
......
36 36
	/* (non-Javadoc)
37 37
	 * @see eu.etaxonomy.printpublisher.IPublishOutputModule#output(org.jdom.Document)
38 38
	 */
39
	public void output(Document document, File exportFolder, NotificationMediator notificationMediator) {
39
	public void output(Document document, File exportFolder, IProgressMonitor progressMonitor) {
40 40
		
41
		super.output(document, exportFolder, notificationMediator);
41
		super.output(document, exportFolder, progressMonitor);
42 42
		
43 43
		try {
44 44
			String filePath = getFilePath(exportFolder);
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java
19 19
import org.springframework.beans.MutablePropertyValues;
20 20
import org.springframework.beans.factory.config.BeanDefinition;
21 21
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
22
import org.springframework.context.ApplicationEvent;
23
import org.springframework.context.ApplicationListener;
22 24
import org.springframework.context.support.AbstractApplicationContext;
23 25
import org.springframework.context.support.GenericApplicationContext;
24 26
import org.springframework.core.io.ClassPathResource;
......
50 52
import eu.etaxonomy.cdm.api.service.ITermService;
51 53
import eu.etaxonomy.cdm.api.service.IUserService;
52 54
import eu.etaxonomy.cdm.api.service.IVocabularyService;
55
import eu.etaxonomy.cdm.common.IProgressMonitor;
56
import eu.etaxonomy.cdm.common.ProgressMonitorBase;
53 57
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
54 58
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
55 59
import eu.etaxonomy.cdm.database.DbSchemaValidation;
......
73 77
	public AbstractApplicationContext applicationContext;
74 78
	private ICdmApplicationConfiguration configuration; 
75 79
	private Resource applicationContextResource;
80

  
81
	private IProgressMonitor progressMonitor;
76 82
	
77 83
	final static DbSchemaValidation defaultDbSchemaValidation = DbSchemaValidation.VALIDATE;
78 84
	
......
85 91
		logger.info("Start CdmApplicationController with default data source");
86 92
		CdmPersistentDataSource dataSource = CdmPersistentDataSource.NewDefaultInstance();
87 93
		DbSchemaValidation dbSchemaValidation = defaultDbSchemaValidation;
88
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
94
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
89 95
	}
90 96
	
91 97
	/**
......
95 101
	public static CdmApplicationController NewInstance(DbSchemaValidation dbSchemaValidation)  throws DataSourceNotFoundException, TermNotFoundException {
96 102
		logger.info("Start CdmApplicationController with default data source");
97 103
		CdmPersistentDataSource dataSource = CdmPersistentDataSource.NewDefaultInstance();
98
		if (dbSchemaValidation == null){
99
			dbSchemaValidation = defaultDbSchemaValidation;
100
		}
101
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
104
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
102 105
	}
103 106

  
104 107
	
......
109 112
	 */
110 113
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource) 
111 114
	throws DataSourceNotFoundException, TermNotFoundException{
112
		return new CdmApplicationController(null, dataSource, defaultDbSchemaValidation, false);
115
		return CdmApplicationController.NewInstance(null, dataSource, defaultDbSchemaValidation, false);
113 116
	}
114 117
	
115 118
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation) 
116 119
	throws DataSourceNotFoundException, TermNotFoundException{
117
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
120
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
118 121
	}
119 122

  
120 123
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading) 
121 124
	throws DataSourceNotFoundException, TermNotFoundException{
122
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, omitTermLoading);
125
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, omitTermLoading);
123 126
	}
124 127
	
125 128
	public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading) 
126 129
	throws DataSourceNotFoundException, TermNotFoundException{
127
		return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading);
130
		return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading);
131
	}
132
	
133
	public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor) 
134
	throws DataSourceNotFoundException, TermNotFoundException{
135

  
136
		
137
		return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, progressMonitor);
128 138
	}
129 139

  
130 140
	/**
......
133 143
	 * @param dbSchemaValidation
134 144
	 * @param omitTermLoading
135 145
	 */
136
	private CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){
146
	private CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){
137 147
		logger.info("Start CdmApplicationController with datasource: " + dataSource.getName());
138
		if (applicationContextResource != null){
139
			this.applicationContextResource = applicationContextResource;
140
		}else{
141
			this.applicationContextResource = new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);
148
		
149
		if (dbSchemaValidation == null){
150
			dbSchemaValidation = defaultDbSchemaValidation;
142 151
		}
143 152
		
144
		setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading);
153
		this.applicationContextResource = applicationContextResource != null ? applicationContextResource : new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);
154
		this.progressMonitor = progressMonitor != null ? progressMonitor : new ProgressMonitorBase();
145 155
		
146
//		if (setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading) == false){
147
//			throw new DataSourceNotFoundException("Wrong datasource: " + dataSource );
148
//		}
156
		setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading);
149 157
	}
150 158
		
151 159
	
......
158 166
			dbSchemaValidation = defaultDbSchemaValidation;
159 167
		}
160 168
		logger.info("Connecting to '" + dataSource.getName() + "'");
161

  
169
		progressMonitor.subTask("Connecting to '" + dataSource.getName() + "'");
170
		progressMonitor.worked(1);
162 171

  
163 172
		GenericApplicationContext appContext;
164
//		try {
165
			appContext = new EclipseRcpSaveGenericApplicationContext();
166
			
167
			BeanDefinition datasourceBean = dataSource.getDatasourceBean();
168
			datasourceBean.setAttribute("isLazy", false);
169
			appContext.registerBeanDefinition("dataSource", datasourceBean);
170
			
171
			BeanDefinition hibernatePropBean= dataSource.getHibernatePropertiesBean(dbSchemaValidation);
172
			appContext.registerBeanDefinition("hibernateProperties", hibernatePropBean);
173
			
174
			XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
175
			xmlReader.loadBeanDefinitions(this.applicationContextResource);		 
176
			
177
			//omitTerms
178
			String initializerName = "persistentTermInitializer";
179
			BeanDefinition beanDef = appContext.getBeanDefinition(initializerName);
180
			MutablePropertyValues values = beanDef.getPropertyValues();
181
			values.addPropertyValue("omit", omitTermLoading);
182
			
183
			appContext.refresh();
184
			appContext.start();
185
			
173
		appContext = new EclipseRcpSaveGenericApplicationContext();
174
		
175
		BeanDefinition datasourceBean = dataSource.getDatasourceBean();
176
		datasourceBean.setAttribute("isLazy", false);
177
		progressMonitor.subTask("Registering datasource.");
178
		progressMonitor.worked(1);
179
		appContext.registerBeanDefinition("dataSource", datasourceBean);
180
		
181
		BeanDefinition hibernatePropBean= dataSource.getHibernatePropertiesBean(dbSchemaValidation);
182
		appContext.registerBeanDefinition("hibernateProperties", hibernatePropBean);
183
		
184
		XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
185
		progressMonitor.subTask("Registering context resources.");
186
		progressMonitor.worked(1);
187
		xmlReader.loadBeanDefinitions(this.applicationContextResource);		 
188
		
189
		//omitTerms
190
		String initializerName = "persistentTermInitializer";
191
		BeanDefinition beanDef = appContext.getBeanDefinition(initializerName);
192
		MutablePropertyValues values = beanDef.getPropertyValues();
193
		values.addPropertyValue("omit", omitTermLoading);
194
		
195
		progressMonitor.subTask("Starting context. This might take a while...");
196
		progressMonitor.worked(1);
197
		appContext.refresh();
198
		appContext.start();
199
		
200
		progressMonitor.subTask("Setting application context.");
201
		progressMonitor.worked(1);
186 202
		setApplicationContext(appContext);
187 203
		
188 204
		//initialize user and metaData for new databases
189 205
		int userCount = getUserService().count(User.class);
190 206
		if (userCount == 0 ){
207
			progressMonitor.subTask("Creating Admin User");
208
			progressMonitor.worked(1);
191 209
			createAdminUser();
192 210
		}
193 211
		int metaDataCount = getCommonService().getCdmMetaData().size();
194 212
		if (metaDataCount == 0){
213
			progressMonitor.subTask("Creating Meta Data");
214
			progressMonitor.worked(1);
195 215
			createMetadata();
196 216
		}
197 217
		
......
297 317
		//TODO delete next row (was just for testing)
298 318
		if (logger.isInfoEnabled()){
299 319
			logger.info("Registered Beans: ");
300
			String[] beans = applicationContext.getBeanDefinitionNames();
301
			for (String bean:beans){
302
				logger.info(bean);
320
			progressMonitor.subTask("Registered Beans: ");
321
			String[] beanNames = applicationContext.getBeanDefinitionNames();
322
			for (String beanName : beanNames){
323
				logger.info(beanName);
324
				progressMonitor.subTask(beanName);
303 325
			}
304 326
		}
305 327
		configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationDefaultConfiguration");

Also available in: Unified diff