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.
SIPRP/trunk/SIPRPSoft/src/siprp/update/UpdateList.java

186 lines
5.6 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.Vector;
import siprp.update.updates.V10_0_To_V10_1;
import siprp.update.updates.V10_1_To_V10_2;
import siprp.update.updates.V10_2_To_V10_3;
import siprp.update.updates.V10_3_To_V10_4;
import siprp.update.updates.V10_4_To_V10_5;
import siprp.update.updates.V10_5_To_V10_6;
import siprp.update.updates.V10_6_To_V10_7;
import siprp.update.updates.V10_7_To_V10_8;
import siprp.update.updates.V10_8_To_V10_9;
import siprp.update.updates.V10_9_To_V11_0;
import siprp.update.updates.V11_0_To_V11_1;
import siprp.update.updates.V11_1_To_V11_2;
import siprp.update.updates.V11_2_To_V11_3;
import siprp.update.updates.V11_3_To_V11_4;
import siprp.update.updates.V11_4_To_V11_5;
import siprp.update.updates.V11_5_To_V11_6;
import siprp.update.updates.V11_6_To_V11_7;
import siprp.update.updates.V11_7_To_V11_8;
import siprp.update.updates.V11_8_To_V11_9;
import siprp.update.updates.V11_9_To_V12_0;
import siprp.update.updates.V12_0_To_V12_1;
import siprp.update.updates.V6_1_To_V7_0;
import siprp.update.updates.V7_0_To_V7_2;
import siprp.update.updates.V7_2_To_V7_4;
import siprp.update.updates.V7_4_To_V7_5;
import siprp.update.updates.V7_5_To_V7_6;
import siprp.update.updates.V7_6_To_V7_7;
import siprp.update.updates.V7_7_To_V7_8;
import siprp.update.updates.V7_8_To_V7_9;
import siprp.update.updates.V7_9_To_V8_0;
import siprp.update.updates.V8_0_To_V8_1;
import siprp.update.updates.V8_1_To_V8_2;
import siprp.update.updates.V8_2_To_V8_3;
import siprp.update.updates.V8_3_To_V8_4;
import siprp.update.updates.V8_4_To_V8_5;
import siprp.update.updates.V8_5_To_V8_6;
import siprp.update.updates.V8_6_To_V8_7;
import siprp.update.updates.V8_7_To_V8_8;
import siprp.update.updates.V8_8_To_V8_9;
import siprp.update.updates.V8_9_To_V9_0;
import siprp.update.updates.V9_0_To_V9_1;
import siprp.update.updates.V9_1_To_V9_2;
import siprp.update.updates.V9_2_To_V9_3;
import siprp.update.updates.V9_3_To_V9_4;
import siprp.update.updates.V9_4_To_V9_5;
import siprp.update.updates.V9_5_To_V9_6;
import siprp.update.updates.V9_6_To_V9_7;
import siprp.update.updates.V9_7_To_V9_8;
import siprp.update.updates.V9_8_To_V9_9;
import siprp.update.updates.V9_9_To_V10_0;
import com.evolute.utils.Singleton;
import com.evolute.utils.arrays.Virtual2DArray;
import com.evolute.utils.db.DBManager;
import com.evolute.utils.db.Executer;
import com.evolute.utils.sql.Assignment;
import com.evolute.utils.sql.Field;
import com.evolute.utils.sql.Insert;
import com.evolute.utils.sql.Select;
/**
*
* @author fpalma
*/
public class UpdateList
{
protected static final Update UPDATE_LIST[] =
new Update[]{
new V6_1_To_V7_0(), new V7_0_To_V7_2(),
new V7_2_To_V7_4(), new V7_4_To_V7_5(),
new V7_5_To_V7_6(), new V7_6_To_V7_7(),
new V7_7_To_V7_8(), new V7_8_To_V7_9(),
new V7_9_To_V8_0(), new V8_0_To_V8_1(),
new V8_1_To_V8_2(), new V8_2_To_V8_3(),
new V8_3_To_V8_4(), new V8_4_To_V8_5(),
new V8_5_To_V8_6(), new V8_6_To_V8_7(),
new V8_7_To_V8_8(), new V8_8_To_V8_9(),
new V8_9_To_V9_0(), new V9_0_To_V9_1(),
new V9_1_To_V9_2(), new V9_2_To_V9_3(),
new V9_3_To_V9_4(), new V9_4_To_V9_5(),
new V9_5_To_V9_6(), new V9_6_To_V9_7(),
new V9_7_To_V9_8(), new V9_8_To_V9_9(),
new V9_9_To_V10_0(), new V10_0_To_V10_1(),
new V10_1_To_V10_2(), new V10_2_To_V10_3(),
new V10_3_To_V10_4(), new V10_4_To_V10_5(),
new V10_5_To_V10_6(), new V10_6_To_V10_7(),
new V10_7_To_V10_8(), new V10_8_To_V10_9(),
new V10_9_To_V11_0(), new V11_0_To_V11_1(),
new V11_1_To_V11_2(), new V11_2_To_V11_3(),
new V11_3_To_V11_4(), new V11_4_To_V11_5(),
new V11_5_To_V11_6(), new V11_6_To_V11_7(),
new V11_7_To_V11_8(), new V11_8_To_V11_9(),
new V11_9_To_V12_0(),new V12_0_To_V12_1()
};
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 );
}
}