@Override
public UpdateRunningStatus runUpdate()
{
if (dao.doTableAttributesExist(rechnungTable, "konto") == false) {
dao.addTableAttributes(rechnungTable, new TableAttribute(RechnungDO.class, "konto"));
}
if (dao.doTableAttributesExist(userTable, "sshPublicKey") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "sshPublicKey"));
}
final int entriesToMigrate = dao.queryForInt("select count(*) from t_contract where status='IN_PROGRES'");
if (entriesToMigrate > 0) {
dao.execute("update t_contract set status='IN_PROGRESS' where status='IN_PROGRES'", true);
}
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 4.3.1
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(CORE_REGION_ID, "4.3.1", "2013-01-29", "Adds t_fibu_projekt.konto") {
final Table projektTable = new Table(ProjektDO.class);
@Override
public UpdatePreCheckStatus runPreCheck()
{
return dao.doTableAttributesExist(projektTable, "konto") == true //
? UpdatePreCheckStatus.ALREADY_UPDATED
: UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
if (dao.doTableAttributesExist(projektTable, "konto") == false) {
dao.addTableAttributes(projektTable, new TableAttribute(ProjektDO.class, "konto"));
}
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 4.2
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(
CORE_REGION_ID,
"4.2",
"2012-08-09",
"Adds t_pf_user.authenticationToken|local_user|restricted_user|deactivated|ldap_values, t_group.local_group, t_fibu_rechnung|eingangsrechnung|auftrag(=incoming and outgoing invoice|order).ui_status_as_xml") {
final Table userTable = new Table(PFUserDO.class);
final Table groupTable = new Table(GroupDO.class);
final Table outgoingInvoiceTable = new Table(RechnungDO.class);
final Table incomingInvoiceTable = new Table(EingangsrechnungDO.class);
final Table orderTable = new Table(AuftragDO.class);
@Override
public UpdatePreCheckStatus runPreCheck()
{
return dao.doTableAttributesExist(userTable, "authenticationToken", "localUser", "restrictedUser", "deactivated", "ldapValues") == true //
&& dao.doTableAttributesExist(groupTable, "localGroup") == true // , "nestedGroupsAllowed", "nestedGroupIds") == true //
&& dao.doTableAttributesExist(outgoingInvoiceTable, "uiStatusAsXml") == true //
&& dao.doTableAttributesExist(incomingInvoiceTable, "uiStatusAsXml") == true //
&& dao.doTableAttributesExist(orderTable, "uiStatusAsXml") == true //
? UpdatePreCheckStatus.ALREADY_UPDATED : UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
if (dao.doTableAttributesExist(userTable, "authenticationToken") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "authenticationToken"));
}
if (dao.doTableAttributesExist(userTable, "localUser") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "localUser").setDefaultValue("false"));
}
if (dao.doTableAttributesExist(userTable, "restrictedUser") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "restrictedUser").setDefaultValue("false"));
}
if (dao.doTableAttributesExist(userTable, "deactivated") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "deactivated").setDefaultValue("false"));
}
if (dao.doTableAttributesExist(userTable, "ldapValues") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "ldapValues"));
}
if (dao.doTableAttributesExist(groupTable, "localGroup") == false) {
dao.addTableAttributes(groupTable, new TableAttribute(GroupDO.class, "localGroup").setDefaultValue("false"));
}
// if (dao.doesTableAttributesExist(groupTable, "nestedGroupsAllowed") == false) {
// dao.addTableAttributes(groupTable, new TableAttribute(GroupDO.class, "nestedGroupsAllowed").setDefaultValue("true"));
// }
// if (dao.doesTableAttributesExist(groupTable, "nestedGroupIds") == false) {
// dao.addTableAttributes(groupTable, new TableAttribute(GroupDO.class, "nestedGroupIds"));
// }
if (dao.doTableAttributesExist(outgoingInvoiceTable, "uiStatusAsXml") == false) {
dao.addTableAttributes(outgoingInvoiceTable, new TableAttribute(RechnungDO.class, "uiStatusAsXml"));
}
if (dao.doTableAttributesExist(incomingInvoiceTable, "uiStatusAsXml") == false) {
dao.addTableAttributes(incomingInvoiceTable, new TableAttribute(EingangsrechnungDO.class, "uiStatusAsXml"));
}
if (dao.doTableAttributesExist(orderTable, "uiStatusAsXml") == false) {
dao.addTableAttributes(orderTable, new TableAttribute(AuftragDO.class, "uiStatusAsXml"));
}
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 4.1
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(CORE_REGION_ID, "4.1", "2012-04-21", "Adds t_pf_user.first_day_of_week and t_pf_user.hr_planning.") {
final Table userTable = new Table(PFUserDO.class);
@Override
public UpdatePreCheckStatus runPreCheck()
{
return dao.doTableAttributesExist(userTable, "firstDayOfWeek", "hrPlanning") == true //
? UpdatePreCheckStatus.ALREADY_UPDATED
: UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
if (dao.doTableAttributesExist(userTable, "firstDayOfWeek") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "firstDayOfWeek"));
}
if (dao.doTableAttributesExist(userTable, "hrPlanning") == false) {
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "hrPlanning").setDefaultValue("true"));
}
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 4.0
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(CORE_REGION_ID, "4.0", "2012-04-18",
"Adds 6th parameter to t_script and payment_type to t_fibu_eingangsrechnung.") {
final Table scriptTable = new Table(ScriptDO.class);
final Table eingangsrechnungTable = new Table(EingangsrechnungDO.class);
@Override
public UpdatePreCheckStatus runPreCheck()
{
return dao.doTableAttributesExist(scriptTable, "parameter6Name", "parameter6Type") == true //
&& dao.doTableAttributesExist(eingangsrechnungTable, "paymentType") == true //
? UpdatePreCheckStatus.ALREADY_UPDATED : UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
if (dao.doTableAttributesExist(scriptTable, "parameter6Name") == false) {
dao.addTableAttributes(scriptTable, new TableAttribute(ScriptDO.class, "parameter6Name"));
}
if (dao.doTableAttributesExist(scriptTable, "parameter6Type") == false) {
dao.addTableAttributes(scriptTable, new TableAttribute(ScriptDO.class, "parameter6Type"));
}
if (dao.doTableAttributesExist(eingangsrechnungTable, "paymentType") == false) {
dao.addTableAttributes(eingangsrechnungTable, new TableAttribute(EingangsrechnungDO.class, "paymentType"));
}
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 3.6.2
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(
CORE_REGION_ID,
"3.6.1.3",
"2011-12-05",
"Adds columns t_kunde.konto_id, t_fibu_eingangsrechnung.konto_id, t_konto.status, t_task.protection_of_privacy and t_address.communication_language.") {
@Override
public UpdatePreCheckStatus runPreCheck()
{
final Table kundeTable = new Table(KundeDO.class);
final Table eingangsrechnungTable = new Table(EingangsrechnungDO.class);
final Table kontoTable = new Table(KontoDO.class);
final Table taskTable = new Table(TaskDO.class);
final Table addressTable = new Table(AddressDO.class);
return dao.doTableAttributesExist(kundeTable, "konto") == true //
&& dao.doTableAttributesExist(eingangsrechnungTable, "konto") == true //
&& dao.doTableAttributesExist(kontoTable, "status") == true //
&& dao.doTableAttributesExist(addressTable, "communicationLanguage") == true //
&& dao.doTableAttributesExist(taskTable, "protectionOfPrivacy") //
? UpdatePreCheckStatus.ALREADY_UPDATED : UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
final Table kundeTable = new Table(KundeDO.class);
if (dao.doTableAttributesExist(kundeTable, "konto") == false) {
dao.addTableAttributes(kundeTable, new TableAttribute(KundeDO.class, "konto"));
}
final Table eingangsrechnungTable = new Table(EingangsrechnungDO.class);
if (dao.doTableAttributesExist(eingangsrechnungTable, "konto") == false) {
dao.addTableAttributes(eingangsrechnungTable, new TableAttribute(EingangsrechnungDO.class, "konto"));
}
final Table kontoTable = new Table(KontoDO.class);
if (dao.doTableAttributesExist(kontoTable, "status") == false) {
dao.addTableAttributes(kontoTable, new TableAttribute(KontoDO.class, "status"));
}
final Table taskTable = new Table(TaskDO.class);
if (dao.doTableAttributesExist(taskTable, "protectionOfPrivacy") == false) {
dao.addTableAttributes(taskTable, new TableAttribute(TaskDO.class, "protectionOfPrivacy").setDefaultValue("false"));
}
final Table addressTable = new Table(AddressDO.class);
if (dao.doTableAttributesExist(addressTable, "communicationLanguage") == false) {
dao.addTableAttributes(addressTable, new TableAttribute(AddressDO.class, "communicationLanguage"));
}
dao.createMissingIndices();
return UpdateRunningStatus.DONE;
}
});
// /////////////////////////////////////////////////////////////////
// 3.5.4
// /////////////////////////////////////////////////////////////////
list.add(new UpdateEntryImpl(CORE_REGION_ID, "3.5.4", "2011-02-24",
"Adds table t_database_update. Adds attribute (excel_)date_format, hour_format_24 to table t_pf_user.") {
@Override
public UpdatePreCheckStatus runPreCheck()
{
final Table dbUpdateTable = new Table(DatabaseUpdateDO.class);
final Table userTable = new Table(PFUserDO.class);
return dao.doExist(dbUpdateTable) == true
&& dao.doTableAttributesExist(userTable, "dateFormat", "excelDateFormat", "timeNotation") == true //
? UpdatePreCheckStatus.ALREADY_UPDATED : UpdatePreCheckStatus.READY_FOR_UPDATE;
}
@Override
public UpdateRunningStatus runUpdate()
{
final Table dbUpdateTable = new Table(DatabaseUpdateDO.class);
final Table userTable = new Table(PFUserDO.class);
dbUpdateTable.addAttributes("updateDate", "regionId", "versionString", "executionResult", "executedBy", "description");
dao.createTable(dbUpdateTable);
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "dateFormat"));
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "excelDateFormat"));
dao.addTableAttributes(userTable, new TableAttribute(PFUserDO.class, "timeNotation"));
final UserDao userDao = Registry.instance().getDao(UserDao.class);
dao.createMissingIndices();
userDao.getUserGroupCache().setExpired();
return UpdateRunningStatus.DONE;
}