tdraier     2005/04/11 12:23:54 CEST

  Added files:
    src/java/org/jahia/update/core PatchSlide2.java 
  Log:
  updated patch for slide2 migration
  
  Revision  Changes    Path
  1.1       +328 -0    
jahia_update/src/java/org/jahia/update/core/PatchSlide2.java (new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia_update/src/java/org/jahia/update/core/PatchSlide2.java?rev=1.1&content-type=text/plain
  
  
  
  Index: PatchSlide2.java
  ====================================================================
  package org.jahia.update.core;
  
  import org.jahia.update.db.DBManager;
  import org.jahia.update.input.PropertiesManager;
  import org.jahia.model.jahia4.DBConstant;
  import org.jahia.model.jahia4.site.JahiaSite;
  
  import java.sql.*;
  import java.util.Map;
  import java.util.HashMap;
  import java.util.Hashtable;
  import java.util.Iterator;
  
  /**
   * Created by IntelliJ IDEA.
   * User: toto
   * Date: 8 avr. 2005
   * Time: 12:26:26
   * To change this template use File | Settings | File Templates.
   */
  public class PatchSlide2 extends Patch {
      private DBManager dbManager;
      private Map sites;
      private Map objects;
      private Map branches;
      private Map versions;
  
      public PatchSlide2(PropertiesManager jahiaProps) {
          System.out.println("PatchSlide2 initialized.");
          System.out.println(jahiaProps);
      }
  
      public boolean execute() {
          try {
              dbManager = DBManager.getInstance();
              sites = getJahiaSites();
  
              createNewTables();
  
              ResultSet rs;
              objects = new HashMap();
              branches = new HashMap();
              versions = new HashMap();
  
              PreparedStatement insertUri = dbManager.prepareStatement("insert 
into jahia_sl2_uri values(?,?,?)");
              PreparedStatement insertObject = 
dbManager.prepareStatement("insert into jahia_sl2_object values(?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_objects");
              int uriId = 1;
  
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String classname = rs.getString(2);
                  String slidens = rs.getString(3);
                  JahiaSite siteByKey = (JahiaSite) sites.get(slidens);
                  if (siteByKey == null) {
                      continue;
                  }
                  int nsId = siteByKey.getId();
  
                  insertUri.setInt(1,uriId);
                  insertUri.setString(2, uri);
                  insertUri.setInt(3, nsId);
                  insertUri.executeUpdate();
                  objects.put(slidens+uri, new Integer(uriId));
  
                  insertObject.setInt(1,uriId);
                  insertObject.setString(2,classname);
                  insertObject.executeUpdate();
                  uriId ++;
              }
              insertObject.close();
  
              PreparedStatement insertBinding = 
dbManager.prepareStatement("insert into jahia_sl2_binding values(?,?,?)");
              PreparedStatement insertParentBinding = 
dbManager.prepareStatement("insert into jahia_sl2_parent_binding 
values(?,?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_children");
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String childUri = rs.getString(2);
                  String slidens = rs.getString(3);
                  if (objects.containsKey(slidens+uri) && 
objects.containsKey(slidens+childUri)) {
                      int parentId = 
((Integer)objects.get(slidens+uri)).intValue();
                      int childId = 
((Integer)objects.get(slidens+childUri)).intValue();
                      String name = uri.substring(uri.lastIndexOf("/"));
  
                      insertBinding.setInt(1,parentId);
                      insertBinding.setString(2,name);
                      insertBinding.setInt(3,childId);
                      insertBinding.executeUpdate();
  
                      insertParentBinding.setInt(1,childId);
                      insertParentBinding.setString(2,name);
                      insertParentBinding.setInt(3,parentId);
                      insertParentBinding.executeUpdate();
                  }
              }
              insertBinding.close();
              insertParentBinding.close();
  
              PreparedStatement insertLink = dbManager.prepareStatement("insert 
into jahia_sl2_links values(?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_links");
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String linkTo = rs.getString(2);
                  String slidens = rs.getString(3);
                  if (objects.containsKey(slidens+uri) && 
objects.containsKey(slidens+linkTo)) {
                      int id = ((Integer)objects.get(slidens+uri)).intValue();
                      int linkToId = 
((Integer)objects.get(slidens+linkTo)).intValue();
  
                      insertLink.setInt(1,id);
                      insertLink.setInt(2,linkToId);
                      insertLink.executeUpdate();
                  }
              }
              insertLink.close();
  
              // locks
  
              // revisions/versions
              PreparedStatement insertVersion = 
dbManager.prepareStatement("insert into jahia_sl2_version values(?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_revisions");
              while (rs.next()) {
                  String uri = rs.getString(1);
                  int isVersioned = rs.getInt(2);
                  String initialRev = rs.getString(3);
                  String slidens = rs.getString(4);
  
                  if (objects.containsKey(slidens+uri)) {
                      int id = ((Integer)objects.get(slidens+uri)).intValue();
  
                      insertVersion.setInt(1,id);
                      insertVersion.setInt(2,isVersioned);
                      insertVersion.executeUpdate();
                  }
              }
              insertVersion.close();
  
              PreparedStatement insertVersionHistory = 
dbManager.prepareStatement("insert into jahia_sl2_version_history 
values(?,?,?,?)");
              PreparedStatement insertBranch = 
dbManager.prepareStatement("insert into jahia_sl2_branch values(?,?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_revision");
              int versionId = 1;
              int branchId = 1;
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String xnum = rs.getString(2);
                  String branch = rs.getString(3);
                  String slidens = rs.getString(4);
                  JahiaSite siteByKey = (JahiaSite) sites.get(slidens);
                  if (siteByKey == null) {
                      continue;
                  }
                  int nsId = siteByKey.getId();
  
                  if (objects.containsKey(slidens+uri)) {
                      int id = ((Integer)objects.get(slidens+uri)).intValue();
  
                      versions.put(slidens+uri+xnum, new Integer(versionId));
  
                      int currentBranchId;
                      if (branches.containsKey(slidens+branch)) {
                          currentBranchId = 
((Integer)branches.get(slidens+branch)).intValue();
                      } else {
                          currentBranchId = branchId++;
                          insertBranch.setInt(1, currentBranchId);
                          insertBranch.setString(2, branch);
                          insertBranch.setInt(3, nsId);
                          insertBranch.executeUpdate();
                      }
  
                      insertVersionHistory.setInt(1,versionId);
                      insertVersionHistory.setInt(2,id);
                      insertVersionHistory.setInt(3,currentBranchId);
                      insertVersionHistory.setString(4,xnum);
                      insertVersionHistory.executeUpdate();
                      versionId++;
                  }
              }
  
              insertVersionHistory.close();
              insertBranch.close();
  
              PreparedStatement insertPermission = 
dbManager.prepareStatement("insert into jahia_sl2_permissions values(?,?)");
              PreparedStatement getSucc = dbManager.prepareStatement("select 
max(p.SUCCESSION) from JAHIA_SL2_PERMISSIONS p where p.OBJECT_ID = ?");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_permissions");
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String xnum = rs.getString(2);
                  String user = rs.getString(3);
                  String action = rs.getString(4);
                  int inheritable = rs.getInt(5);
                  int negative = rs.getInt(6);
                  String slidens = rs.getString(7);
  
                  if (objects.containsKey(slidens+uri)) {
                      int id = ((Integer)objects.get(slidens+uri)).intValue();
  
                      int succession = 1;
                      try {
                          getSucc.setInt(1, id);
                          ResultSet s = getSucc.executeQuery();
                          if (s.next()) {
                              succession = s.getInt(1)+1;
                          }
                      } finally {
                      }
                      System.out.println(uri+"/"+xnum+"/"+user+"/"+action);
  
                      if (!objects.containsKey(slidens+user)) {
                          JahiaSite siteByKey = (JahiaSite) sites.get(slidens);
                          if (siteByKey == null) {
                              continue;
                          }
                          int nsId = siteByKey.getId();
                          objects.put(slidens+user, new Integer(uriId));
                          insertUri.setInt(1,uriId++);
                          insertUri.setString(2, user);
                          insertUri.setInt(3, nsId);
                          insertUri.executeUpdate();
                      }
  
                      insertPermission.setInt(1, id);
                      insertPermission.setInt(2, 
((Integer)objects.get(slidens+user)).intValue());
                      insertPermission.setInt(3, 
((Integer)objects.get(slidens+action)).intValue());
                      insertPermission.setString(4, xnum);
                      insertPermission.setInt(5, inheritable);
                      insertPermission.setInt(6, negative);
                      insertPermission.setInt(7, succession);
                  }
              }
              insertUri.close();
              insertPermission.close();
  
              PreparedStatement insertProperty = 
dbManager.prepareStatement("insert into jahia_sl2_properties 
values(?,?,?,?,?,?)");
  
              rs = dbManager.selectFromTable("*", "jahia_slide_property");
              while (rs.next()) {
                  String uri = rs.getString(1);
                  String xnum = rs.getString(2);
                  String propName = rs.getString(3);
                  String value = rs.getString(4);
                  String namespace = rs.getString(5);
                  String propType = rs.getString(6);
                  int protect = rs.getInt(7);
                  String slidens = rs.getString(8);
  
                  if (versions.containsKey(slidens+uri+xnum)) {
                      int id = 
((Integer)versions.get(slidens+uri+xnum)).intValue();
  
                      insertProperty.setInt(1,id);
                      insertProperty.setString(2,namespace);
                      insertProperty.setString(3,propName);
                      insertProperty.setString(4,value);
                      insertProperty.setString(5,propType);
                      insertProperty.setInt(6,protect);
                      insertProperty.executeUpdate();
                  }
              }
              insertProperty.close();
  
              dbManager.query("insert into jahia_autoids 
values('JAHIA_SL2_URI',"+uriId+")");
              dbManager.query("insert into jahia_autoids 
values('JAHIA_SL2_VERSION_HISTORY',"+versionId+")");
              dbManager.query("insert into jahia_autoids 
values('JAHIA_SL2_BRANCH',"+branchId+")");
  
          } catch (Exception e) {
              e.printStackTrace();
              return false;
          }
          return true;
      }
  
  
      /**
       * Returns all Sites
       *
       * @return
       * @throws java.sql.SQLException
       */
      private Hashtable getJahiaSites() throws SQLException{
  
          Hashtable datas = new Hashtable();
          ResultSet rs = dbManager.selectFromTable("*", DBConstant.JAHIA_SITES);
          if (rs != null) {
              while ( rs.next() ) {
                  JahiaSite site = new JahiaSite(rs.getInt(1),
                          
checkNullValue(rs.getString(2)),checkNullValue(rs.getString(3)),
                          checkNullValue(rs.getString(4)),
                          
(rs.getInt(5)==1),rs.getInt(6),rs.getInt(7),rs.getInt(8),
                          
rs.getInt(9),rs.getInt(10),checkNullValue(rs.getString(11)));
                  datas.put(site.getSiteKey(),site);
              }
          }
          return datas;
      }
  
      private String checkNullValue(String value){
          if ( value != null ){
             return value;
          }
          return "";
      }
  
      /**
       * Create new tables
       */
      private void createNewTables(){
          dbManager.createTable("jahia_sl2_uri");
          dbManager.createTable("jahia_sl2_object");
          dbManager.createTable("jahia_sl2_binding");
          dbManager.createTable("jahia_sl2_parent_binding");
          dbManager.createTable("jahia_sl2_links");
          dbManager.createTable("jahia_sl2_locks");
          dbManager.createTable("jahia_sl2_branch");
          dbManager.createTable("jahia_sl2_label");
          dbManager.createTable("jahia_sl2_version");
          dbManager.createTable("jahia_sl2_version_history");
          dbManager.createTable("jahia_sl2_version_preds");
          dbManager.createTable("jahia_sl2_version_labels");
          dbManager.createTable("jahia_sl2_properties");
          dbManager.createTable("jahia_sl2_permissions");
      }
  
  
  }
  

Reply via email to