KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > inside > convert > Converter


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com
2
3 This file is part of the db4o open source object database.
4
5 db4o is free software; you can redistribute it and/or modify it under
6 the terms of version 2 of the GNU General Public License as published
7 by the Free Software Foundation and as clarified by db4objects' GPL
8 interpretation policy, available at
9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11 Suite 350, San Mateo, CA 94403, USA.
12
13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

21 package com.db4o.inside.convert;
22
23 import com.db4o.foundation.*;
24 import com.db4o.inside.*;
25 import com.db4o.inside.convert.conversions.*;
26
27 /**
28  * @exclude
29  */

30 public class Converter {
31     
32     public static final int VERSION = FieldIndexesToBTrees_5_7.VERSION;
33     
34     private static Converter _converter;
35     
36     private Hashtable4 _conversions;
37     
38     private Converter() {
39         _conversions = new Hashtable4();
40         
41         // TODO: There probably will be Java and .NET conversions
42
// Create Platform4.registerConversions() method ann
43
// call from here when needed.
44
CommonConversions.register(this);
45     }
46
47     public static boolean convert(ConversionStage stage) {
48         if(!needsConversion(stage.systemData())) {
49             return false;
50         }
51         if(_converter == null){
52             _converter = new Converter();
53         }
54         return _converter.runConversions(stage);
55     }
56
57     private static boolean needsConversion(SystemData systemData) {
58         return systemData.converterVersion() < VERSION;
59     }
60
61     public void register(int idx, Conversion conversion) {
62         if(_conversions.get(idx) != null){
63             throw new IllegalStateException JavaDoc();
64         }
65         _conversions.put(idx, conversion);
66     }
67     
68     public boolean runConversions(ConversionStage stage) {
69         SystemData systemData = stage.systemData();
70         if(!needsConversion(systemData)){
71             return false;
72         }
73         for (int i = systemData.converterVersion(); i <= VERSION; i++) {
74             Conversion conversion = (Conversion)_conversions.get(i);
75             if(conversion != null){
76                 stage.accept(conversion);
77             }
78         }
79         return true;
80     }
81     
82 }
83
Popular Tags