Package com.serotonin.m2m2.reports.upgrade

Source Code of com.serotonin.m2m2.reports.upgrade.Upgrade2

package com.serotonin.m2m2.reports.upgrade;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.serotonin.m2m2.Common;
import com.serotonin.m2m2.db.DatabaseProxy;
import com.serotonin.m2m2.db.dao.UserDao;
import com.serotonin.m2m2.db.upgrade.DBUpgrade;
import com.serotonin.m2m2.reports.ReportDao;
import com.serotonin.m2m2.reports.vo.ReportInstance;
import com.serotonin.m2m2.reports.vo.ReportVO;
import com.serotonin.m2m2.vo.User;
import com.serotonin.m2m2.vo.export.ExportPointInfo;

/**
* Upgrade Schema 2 to 3
* @author Phillip Dunlap
*
*/
public class Upgrade2 extends DBUpgrade {
    @Override
    protected void upgrade() throws Exception {
      runScript(new String[] { "alter table reportInstances add template varchar(40);",
            "alter table reportInstances add reportId int;",
          "update reportInstances set reportId=-1;",
          "alter table reportInstances add mapping blob;",
          "alter table reportInstancePoints add xid varchar(50);",
          "update reportInstancePoints set xid='legacyReport';"});
     
      ReportDao dao = new ReportDao();
      UserDao ud = new UserDao();
      List<ReportVO> reports = dao.getReports();
      List<ReportInstance> reportInstances;
      List<User> users = ud.getUsers();
      for(User u : users) {
        reportInstances = dao.getReportInstances(u.getId());
        for(ReportInstance ri : reportInstances) {
          for(ReportVO report : reports) {
            if(ri.getName().equals(report.getName())) {
              ri.setReportId(report.getId());
              dao.saveReportInstance(ri);
              break;
            }
          }
        }
      }
     
      //Alter the column back to have no default
        Map<String, String[]> scripts = new HashMap<String, String[]>();
        scripts.put(DatabaseProxy.DatabaseType.DERBY.name(), new String[] {
          "alter table reportInstances alter column reportId NOT NULL; ",
          "alter table reportInstancePoints alter column xid NOT NULL;"});
        scripts.put(DatabaseProxy.DatabaseType.MYSQL.name(), new String[] {
          "ALTER TABLE reportInstances CHANGE COLUMN `reportId` `reportId` int NOT NULL;",
          "ALTER TABLE reportInstancePoints CHANGE COLUMN `xid` `xid` VARCHAR(50) NOT NULL;"});
        scripts.put(DatabaseProxy.DatabaseType.MSSQL.name(), new String[] {
          "alter table reportInstances alter column reportId int NOT NULL;",
        "alter table reportInstancePoints alter column xid varchar(50) NOT NULL;" });
        scripts.put(DatabaseProxy.DatabaseType.H2.name(), new String[] {
          "alter table reportInstances alter column reportId int NOT NULL;",
        "alter table reportInstancePoints alter column xid varchar(50) NOT NULL;" });
        runScript(scripts);
    }

    @Override
    protected String getNewSchemaVersion() {
        return "3";
    }
}
TOP

Related Classes of com.serotonin.m2m2.reports.upgrade.Upgrade2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.