forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.4 KiB
119 lines
3.4 KiB
/*
|
|
* Updater.java
|
|
*
|
|
* Created on 26 de Setembro de 2006, 11:49
|
|
*
|
|
* To change this template, choose Tools | Template Manager
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
package siprp.update;
|
|
|
|
import java.util.*;
|
|
|
|
import com.evolute.utils.*;
|
|
import com.evolute.utils.arrays.*;
|
|
import com.evolute.utils.db.*;
|
|
import com.evolute.utils.sql.*;
|
|
|
|
|
|
/**
|
|
*
|
|
* @author fpalma
|
|
*/
|
|
public class UpdateList
|
|
{
|
|
protected static final Update UPDATE_LIST[] =
|
|
new Update[]{ new siprp.update.updates.V6_1_To_V7_0(), new siprp.update.updates.V7_0_To_V7_2(),
|
|
new siprp.update.updates.V7_2_To_V7_4(), new siprp.update.updates.V7_4_To_V7_5(),
|
|
new siprp.update.updates.V7_5_To_V7_6(), new siprp.update.updates.V7_6_To_V7_7(),
|
|
new siprp.update.updates.V7_7_To_V7_8(), new siprp.update.updates.V7_8_To_V7_9(),
|
|
new siprp.update.updates.V7_9_To_V8_0(), new siprp.update.updates.V8_0_To_V8_1(),
|
|
new siprp.update.updates.V8_1_To_V8_2(), new siprp.update.updates.V8_2_To_V8_3(),
|
|
new siprp.update.updates.V8_3_To_V8_4(), new siprp.update.updates.V8_4_To_V8_5(),
|
|
new siprp.update.updates.V8_5_To_V8_6(), new siprp.update.updates.V8_6_To_V8_7(),
|
|
new siprp.update.updates.V8_7_To_V8_8(), new siprp.update.updates.V8_8_To_V8_9(),
|
|
new siprp.update.updates.V8_9_To_V9_0(), new siprp.update.updates.V9_0_To_V9_1(),
|
|
new siprp.update.updates.V9_1_To_V9_2(), new siprp.update.updates.V9_2_To_V9_3(),
|
|
new siprp.update.updates.V9_3_To_V9_4(), new siprp.update.updates.V9_4_To_V9_5(),
|
|
new siprp.update.updates.V9_5_To_V9_6(), new siprp.update.updates.V9_6_To_V9_7(),
|
|
new siprp.update.updates.V9_7_To_V9_8(), new siprp.update.updates.V9_8_To_V9_9(),
|
|
new siprp.update.updates.V9_9_To_V10_0() };
|
|
|
|
protected static Executer EXECUTER;
|
|
protected static double version = -1;
|
|
|
|
/** Creates a new instance of Updater */
|
|
private UpdateList()
|
|
{
|
|
}
|
|
|
|
public static double getCurrentVersion()
|
|
throws Exception
|
|
{
|
|
if( version < 0 )
|
|
{
|
|
version = getVersion();
|
|
}
|
|
return version;
|
|
}
|
|
|
|
public static Update []getUpdates()
|
|
throws Exception
|
|
{
|
|
if( version < 0 )
|
|
{
|
|
version = getVersion();
|
|
}
|
|
Vector<Update> validUpdates = new Vector<Update>();
|
|
for( int n = 0; n < UPDATE_LIST.length; n++ )
|
|
{
|
|
if( version <= UPDATE_LIST[ n ].getStartVersion() )
|
|
{
|
|
validUpdates.add( UPDATE_LIST[ n ] );
|
|
}
|
|
}
|
|
return validUpdates.toArray( new Update[ validUpdates.size() ] );
|
|
}
|
|
|
|
protected static double getVersion()
|
|
throws Exception
|
|
{
|
|
DBManager dbm = ( DBManager ) Singleton.getInstance( Singleton.DEFAULT_DBMANAGER );
|
|
EXECUTER = dbm.getSharedExecuter();
|
|
try
|
|
{
|
|
return readVersion();
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
createVersionTable();
|
|
}
|
|
return readVersion();
|
|
}
|
|
|
|
protected static double readVersion()
|
|
throws Exception
|
|
{
|
|
Select select =
|
|
new Select( new String[]{ "version" },
|
|
new String[]{ "MAX(current_version)" },
|
|
null );
|
|
Virtual2DArray array = EXECUTER.executeQuery( select );
|
|
return ( ( Number ) array.get( 0, 0 ) ).doubleValue();
|
|
}
|
|
|
|
protected static void createVersionTable()
|
|
throws Exception
|
|
{
|
|
com.evolute.utils.sql.Update update =
|
|
new com.evolute.utils.sql.Update( "CREATE TABLE version( current_version float );" );
|
|
EXECUTER.executeQuery( update );
|
|
Insert insert =
|
|
new Insert( "version",
|
|
new Assignment[]{
|
|
new Assignment( new Field( "current_version" ), new Double( 0.1 ) ) } );
|
|
EXECUTER.executeQuery( insert );
|
|
}
|
|
}
|