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");
}
}