updating updater framework
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / CdmUpdater.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 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 package eu.etaxonomy.cdm.database.update;
11
12 import org.apache.log4j.Logger;
13
14 import eu.etaxonomy.cdm.common.DefaultProgressMonitor;
15 import eu.etaxonomy.cdm.common.IProgressMonitor;
16 import eu.etaxonomy.cdm.database.ICdmDataSource;
17
18 /**
19 * @author a.mueller
20 * @date 10.09.2010
21 *
22 */
23 public class CdmUpdater {
24 private static final Logger logger = Logger.getLogger(CdmUpdater.class);
25
26 /**
27 *
28 * @return
29 */
30 public boolean updateToCurrentVersion(ICdmDataSource datasource, IProgressMonitor monitor){
31 boolean result = true;
32 if (monitor == null){
33 monitor = DefaultProgressMonitor.NewInstance();
34 }
35
36 ISchemaUpdater currentSchemaUpdater = getCurrentSchemaUpdater();
37 ITermUpdater currentTermUpdater = getCurrentTermUpdater();
38
39 int steps = currentSchemaUpdater.countSteps(datasource);
40 steps += currentTermUpdater.countSteps(datasource);
41
42 String taskName = "Update to schema version " + currentSchemaUpdater.getTargetVersion() + " and to term version " + currentTermUpdater.getTargetVersion(); //+ currentSchemaUpdater.getVersion();
43 monitor.beginTask(taskName, steps);
44
45 try {
46 result &= currentSchemaUpdater.invoke(datasource, monitor);
47 result &= currentTermUpdater.invoke(datasource, monitor);
48 } catch (Exception e) {
49 monitor.warning("Stopped schema updater");
50 }
51
52 return result;
53 }
54
55 private ITermUpdater getCurrentTermUpdater() {
56 return TermUpdater_3_0.NewInstance();
57 }
58
59 /**
60 * Returns the current CDM updater
61 * @return
62 */
63 private ISchemaUpdater getCurrentSchemaUpdater() {
64 return SchemaUpdater_3_0.NewInstance();
65 }
66
67
68 // 5432
69 /**
70 * @param args
71 */
72 public static void main(String[] args) {
73 logger.warn("main method not yet implemented");
74 //TODO
75 CdmUpdater myUpdater = new CdmUpdater();
76 // myUpdater.updateToCurrentVersion(datasource, monitor);
77 }
78
79 }