package com.baasbox.db; import com.baasbox.service.permissions.PermissionTagService; import com.baasbox.service.permissions.Tags; import com.orientechnologies.orient.core.db.record.ODatabaseRecordTx; import com.baasbox.service.logging.BaasBoxLogger; /** * Created by eto on 10/23/14. */ public class Evolution_0_9_0 implements IEvolution { private String version = "0.9.0"; @Override public String getFinalVersion() { return version; } @Override public void evolve(ODatabaseRecordTx db) { BaasBoxLogger.info("Applying evolutions to evolve to the " + version + " level"); try{ addScriptsClass(db); addScriptsPermission(); addRoleFlag(db); createBBNodeIndexes(db); }catch (Throwable e){ BaasBoxLogger.error("Error applying evolution to " + version + " level!!" ,e); throw new RuntimeException(e); } BaasBoxLogger.info ("DB now is on " + version + " level"); } private void addScriptsClass(ODatabaseRecordTx db){ BaasBoxLogger.info("Creating scripts classes..."); DbHelper.execMultiLineCommands(db,true, "create class _BB_Script;" , "create property _BB_Script.name String;", "alter property _BB_Script.name mandatory=true;" , "alter property _BB_Script.name notnull=true;" , "create property _BB_Script.code embeddedlist string;" , "alter property _BB_Script.code mandatory=true;" , "alter property _BB_Script.code notnull=true;" , "create property _BB_Script.lang String;" , "alter property _BB_Script.lang mandatory=true;" , "alter property _BB_Script.lang notnull=true;" , "create property _BB_Script.library boolean;" , "alter property _BB_Script.library mandatory=true;" , "alter property _BB_Script.library notnull=true;" , "create property _BB_Script.active boolean;" , "alter property _BB_Script.active mandatory=true;" , "alter property _BB_Script.active notnull=true;" , "create property _BB_Script._storage embedded;" , "create property _BB_Script._creation_date datetime;" , "create property _BB_Script._invalid boolean;" , "alter property _BB_Script._invalid mandatory=true;" , "alter property _BB_Script._invalid notnull=true;" , "create index _BB_Script.name unique;"); BaasBoxLogger.info("...done!"); } private void addScriptsPermission() { BaasBoxLogger.info("Creating scripts permission tag..."); PermissionTagService.createReservedPermission(Tags.Reserved.SCRIPT_INVOKE); BaasBoxLogger.info("...done!"); } private void addRoleFlag(ODatabaseRecordTx db) { BaasBoxLogger.info("Adding role flag on class OROLE..."); DbHelper.execMultiLineCommands(db,true, "create property orole.isrole boolean;", "update orole set isrole=true"); BaasBoxLogger.info("...done!"); } private void createBBNodeIndexes(ODatabaseRecordTx db) { DbHelper.execMultiLineCommands(db, true, new String[]{ "create property _BB_Node._author String;", "create index _bb_node._author notunique;", "create index _bb_node._creation_date notunique;" }); } }