added scritp for Mongo to min io porting
This commit is contained in:
parent
b27a314f9b
commit
78fb3d68f9
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.jcr.Node;
|
import javax.jcr.Node;
|
||||||
import javax.jcr.NodeIterator;
|
import javax.jcr.NodeIterator;
|
||||||
|
import javax.jcr.PathNotFoundException;
|
||||||
|
|
||||||
import org.apache.jackrabbit.api.JackrabbitSession;
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
import org.gcube.common.storagehub.model.Path;
|
import org.gcube.common.storagehub.model.Path;
|
||||||
|
@ -20,11 +21,13 @@ import org.slf4j.LoggerFactory;
|
||||||
public class CleanTrash implements AbstractScript{
|
public class CleanTrash implements AbstractScript{
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(CleanTrash.class);
|
private static Logger log = LoggerFactory.getLogger(CleanTrash.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
try {
|
try {
|
||||||
|
log.info("script started");
|
||||||
|
|
||||||
Node node = session.getNode("/Home");
|
Node node = session.getNode("/Home");
|
||||||
|
|
||||||
NodeIterator it = node.getNodes();
|
NodeIterator it = node.getNodes();
|
||||||
|
@ -34,22 +37,35 @@ public class CleanTrash implements AbstractScript{
|
||||||
|
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Path workspacePath = Paths.append(Paths.getPath(home.getPath()),"Workspace");
|
Path workspacePath = Paths.append(Paths.getPath(home.getPath()),"Workspace");
|
||||||
|
|
||||||
if (!session.nodeExists(workspacePath.toPath())) continue;
|
if (!session.nodeExists(workspacePath.toPath())) continue;
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("cleaning trash of ").append(home.getName());
|
||||||
Node trashNode = session.getNode(Paths.append(workspacePath, "Trash").toPath());
|
|
||||||
|
Node trashNode = null;
|
||||||
|
try {
|
||||||
|
if (home.getProperty("hl:version").getLong()>0)
|
||||||
|
trashNode = session.getNode(Paths.append(Paths.getPath(home.getPath()), "Trash").toPath());
|
||||||
|
else
|
||||||
|
trashNode = session.getNode(Paths.append(workspacePath, "Trash").toPath());
|
||||||
|
}catch (PathNotFoundException e) {
|
||||||
|
stringBuilder.append("\n").append("path not found for ").append(home.getName());
|
||||||
|
log.warn("path not found for {} ",home.getName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
List<Item> items = scriptUtil.getChildren(null, trashNode, null, true, TrashItem.class);
|
List<Item> items = scriptUtil.getChildren(null, trashNode, null, true, TrashItem.class);
|
||||||
|
|
||||||
for (Item item: items) {
|
for (Item item: items) {
|
||||||
TrashItem trashItem = (TrashItem) item;
|
TrashItem trashItem = (TrashItem) item;
|
||||||
|
stringBuilder.append("\n").append("removed node ").append(trashItem.getTitle());
|
||||||
if (System.currentTimeMillis() - trashItem.getDeletedTime().getTimeInMillis() > 2629800000l ) {
|
if (System.currentTimeMillis() - trashItem.getDeletedTime().getTimeInMillis() > 2629800000l ) {
|
||||||
scriptUtil.removeNodes(session, Collections.singletonList(trashItem));
|
scriptUtil.removeNodes(session, Collections.singletonList(trashItem));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stringBuilder.append("\n").append("cleaned trash of ").append(home.getName()).append(" in ").append(System.currentTimeMillis()-start).append(" millis");
|
||||||
|
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
|
|
|
@ -2,13 +2,20 @@ import java.io.ByteArrayOutputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.jcr.Node;
|
import javax.jcr.Node;
|
||||||
import javax.jcr.NodeIterator;
|
import javax.jcr.NodeIterator;
|
||||||
|
import javax.jcr.PathNotFoundException;
|
||||||
import javax.jcr.Property;
|
import javax.jcr.Property;
|
||||||
import javax.jcr.PropertyIterator;
|
import javax.jcr.PropertyIterator;
|
||||||
|
|
||||||
import org.apache.jackrabbit.api.JackrabbitSession;
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
|
import org.gcube.common.storagehub.model.Path;
|
||||||
|
import org.gcube.common.storagehub.model.Paths;
|
||||||
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
|
import org.gcube.common.storagehub.model.items.TrashItem;
|
||||||
import org.gcube.data.access.storagehub.scripting.AbstractScript;
|
import org.gcube.data.access.storagehub.scripting.AbstractScript;
|
||||||
import org.gcube.data.access.storagehub.scripting.ScriptParameter;
|
import org.gcube.data.access.storagehub.scripting.ScriptParameter;
|
||||||
import org.gcube.data.access.storagehub.scripting.ScriptUtil;
|
import org.gcube.data.access.storagehub.scripting.ScriptUtil;
|
||||||
|
@ -18,10 +25,45 @@ import org.slf4j.LoggerFactory;
|
||||||
public class GeneralScript implements AbstractScript{
|
public class GeneralScript implements AbstractScript{
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(GeneralScript.class);
|
private static Logger log = LoggerFactory.getLogger(GeneralScript.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
||||||
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
try {
|
||||||
|
log.info("script started");
|
||||||
|
|
||||||
|
Node home = session.getNode("/Home/emmanuel.blondel");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("cleaning trash of ").append(home.getName());
|
||||||
|
|
||||||
|
Node trashNode = null;
|
||||||
|
stringBuilder.append("\nversion of the trash is " ).append(home.getProperty("hl:version").getLong());
|
||||||
|
NodeIterator it = home.getNodes();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
Node node = it.nextNode();
|
||||||
|
stringBuilder.append("\n").append(node.getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
StringWriter writer = new StringWriter();
|
||||||
|
PrintWriter sw = new PrintWriter(writer, true);
|
||||||
|
e.printStackTrace(sw);
|
||||||
|
stringBuilder.append("\n").append(writer.toString());
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
|
||||||
|
|
||||||
|
/*StringBuilder stringBuilder = new StringBuilder();
|
||||||
try {
|
try {
|
||||||
try(OutputStream os = new ByteArrayOutputStream()){
|
try(OutputStream os = new ByteArrayOutputStream()){
|
||||||
session.exportDocumentView("/", os, true, false);
|
session.exportDocumentView("/", os, true, false);
|
||||||
|
@ -34,10 +76,10 @@ public class GeneralScript implements AbstractScript{
|
||||||
e.printStackTrace(sw);
|
e.printStackTrace(sw);
|
||||||
return writer.toString();
|
return writer.toString();
|
||||||
}
|
}
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void visitChildren(StringBuilder stringBuilder, Node node, int level) throws Exception{
|
private void visitChildren(StringBuilder stringBuilder, Node node, int level) throws Exception{
|
||||||
stringBuilder.append("-").append(node.getPath()).append("\n");
|
stringBuilder.append("-").append(node.getPath()).append("\n");
|
||||||
PropertyIterator props = node.getProperties();
|
PropertyIterator props = node.getProperties();
|
||||||
|
@ -59,5 +101,5 @@ public class GeneralScript implements AbstractScript{
|
||||||
visitChildren(stringBuilder, child, level+1);
|
visitChildren(stringBuilder, child, level+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,110 @@
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MongoToMinioPorting {
|
import javax.jcr.Node;
|
||||||
|
import javax.jcr.NodeIterator;
|
||||||
|
import javax.jcr.PathNotFoundException;
|
||||||
|
|
||||||
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
|
import org.gcube.common.storagehub.model.Constants;
|
||||||
|
import org.gcube.common.storagehub.model.Path;
|
||||||
|
import org.gcube.common.storagehub.model.Paths;
|
||||||
|
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||||
|
import org.gcube.common.storagehub.model.items.FolderItem;
|
||||||
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
|
import org.gcube.common.storagehub.model.items.TrashItem;
|
||||||
|
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
||||||
|
import org.gcube.common.storagehub.model.storages.StorageBackend;
|
||||||
|
import org.gcube.common.storagehub.model.storages.StorageBackendFactory;
|
||||||
|
import org.gcube.data.access.storagehub.scripting.AbstractScript;
|
||||||
|
import org.gcube.data.access.storagehub.scripting.ScriptParameter;
|
||||||
|
import org.gcube.data.access.storagehub.scripting.ScriptUtil;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class MongoToMinioPorting implements AbstractScript{
|
||||||
|
|
||||||
|
private static Logger log = LoggerFactory.getLogger(MongoToMinioPorting.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
try {
|
||||||
|
|
||||||
|
Node node = session.getNode("/Home");
|
||||||
|
|
||||||
|
NodeIterator it = node.getNodes();
|
||||||
|
|
||||||
|
long startall = System.currentTimeMillis();
|
||||||
|
|
||||||
|
while (it.hasNext()) {
|
||||||
|
Node home = it.nextNode();
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
Path workspacePath = Paths.append(Paths.getPath(home.getPath()),"Workspace");
|
||||||
|
|
||||||
|
if (!session.nodeExists(workspacePath.toPath())) continue;
|
||||||
|
|
||||||
|
List<Item> items = scriptUtil.getChildren(null, session.getNode(workspacePath.toPath()), null, true,null);
|
||||||
|
|
||||||
|
items.parallelStream().forEach(i -> stringBuilder.append(elaborateItem(i, session, scriptUtil)));
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("elaborated user home of ").append(home.getName()).append(" in ").append(System.currentTimeMillis()-start).append(" millis");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("elaborated").append(" in ").append(System.currentTimeMillis()-startall).append(" millis");
|
||||||
|
}catch (Exception e) {
|
||||||
|
StringWriter writer = new StringWriter();
|
||||||
|
PrintWriter sw = new PrintWriter(writer, true);
|
||||||
|
e.printStackTrace(sw);
|
||||||
|
return writer.toString();
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String elaborateItem(Item item, JackrabbitSession session, ScriptUtil scriptUtil ) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
if (item instanceof FolderItem) {
|
||||||
|
FolderItem folder = (FolderItem) item;
|
||||||
|
try {
|
||||||
|
List<Item> items = scriptUtil.getChildren(null, (Node) folder.getRelatedNode(), null, true, null);
|
||||||
|
stringBuilder.append("\n").append("elaborating folder ").append(folder.getId()).append(" - ").append(folder.getTitle());
|
||||||
|
items.stream().forEach(i -> stringBuilder.append(elaborateItem(i, session, scriptUtil)));
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
stringBuilder.append("\n").append("error on folder ").append(folder.getId()).append(" - ").append(folder.getTitle()).append(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (item instanceof AbstractFileItem) {
|
||||||
|
AbstractFileItem file = (AbstractFileItem) item;
|
||||||
|
if (file.getContent().getPayloadBackend().getStorageName()==Constants.MONGO_STORAGE) {
|
||||||
|
stringBuilder.append("\n").append("elaborating file ").append(file.getId()).append(" - ").append(file.getTitle());
|
||||||
|
try {
|
||||||
|
Collection<StorageBackendFactory> factories = scriptUtil.getStorageBackendHandler();
|
||||||
|
StorageBackend mongo;
|
||||||
|
StorageBackend minio;
|
||||||
|
for (StorageBackendFactory factory : factories) {
|
||||||
|
if (factory.getName() == Constants.MONGO_STORAGE)
|
||||||
|
mongo = factory.create(file.getContent().getPayloadBackend());
|
||||||
|
if (factory.getName() == Constants.DEFAULT_MINIO_STORAGE) {
|
||||||
|
minio = factory.create(new PayloadBackend(Constants.DEFAULT_MINIO_STORAGE, null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: make real copy
|
||||||
|
//TODO: change content
|
||||||
|
stringBuilder.append("\n").append("file copied ").append(file.getId()).append(" - ").append(file.getTitle());
|
||||||
|
}catch (Exception e) {
|
||||||
|
stringBuilder.append("\n").append("error on file ").append(file.getId()).append(" - ").append(file.getTitle()).append(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,38 +32,38 @@ public class MoveVREsAndTrash implements AbstractScript{
|
||||||
Path workspacePath = Paths.append(Paths.getPath(home.getPath()),"Workspace");
|
Path workspacePath = Paths.append(Paths.getPath(home.getPath()),"Workspace");
|
||||||
Path homePath = Paths.getPath(home.getPath());
|
Path homePath = Paths.getPath(home.getPath());
|
||||||
if (!session.nodeExists(workspacePath.toPath())) continue;
|
if (!session.nodeExists(workspacePath.toPath())) continue;
|
||||||
|
|
||||||
Boolean oldVresExists = session.nodeExists(Paths.append(workspacePath, "MySpecialFolders").toPath());
|
Boolean oldVresExists = session.nodeExists(Paths.append(workspacePath, "MySpecialFolders").toPath());
|
||||||
Boolean oldTrashExists = session.nodeExists(Paths.append(workspacePath, "Trash").toPath());
|
Boolean oldTrashExists = session.nodeExists(Paths.append(workspacePath, "Trash").toPath());
|
||||||
|
|
||||||
if (!(oldVresExists && oldTrashExists)) {
|
|
||||||
stringBuilder.append(home.getPath()).append(" not contains in Workspace folder: ");
|
|
||||||
if (!oldTrashExists) stringBuilder.append(" Trash ");
|
|
||||||
if (!oldVresExists) stringBuilder.append(" MySpecialFolders ");
|
if (home.getProperty("hl:version").getLong()>0) {
|
||||||
stringBuilder.append("\n");
|
stringBuilder.append(home.getPath()).append(" already updated\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
session.getWorkspace().getLockManager().lock(workspacePath.toPath(), true, true, -1, "");
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (home.getProperty("hl:version").getLong()>0) {
|
|
||||||
stringBuilder.append(home.getPath()).append(" already updated\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
home.setProperty("hl:version", 1l);
|
|
||||||
session.move(Paths.append(workspacePath, "MySpecialFolders").toPath(), Paths.append(homePath, "VREs").toPath());
|
|
||||||
session.move(Paths.append(workspacePath, "Trash").toPath(), Paths.append(homePath, "Trash").toPath());
|
|
||||||
|
|
||||||
Boolean vresExist = session.nodeExists(Paths.append(homePath, "VREs").toPath());
|
home.setProperty("hl:version", 1l);
|
||||||
Boolean trashExist = session.nodeExists(Paths.append(homePath, "Trash").toPath());
|
|
||||||
|
if (oldVresExists)
|
||||||
|
session.move(Paths.append(workspacePath, "MySpecialFolders").toPath(), Paths.append(homePath, "VREs").toPath());
|
||||||
|
|
||||||
stringBuilder.append(workspacePath.toPath()).append(",").append(vresExist).append(",")
|
|
||||||
.append(trashExist).append(",").append(System.currentTimeMillis()-start).append("\n");
|
if (oldTrashExists)
|
||||||
|
session.move(Paths.append(workspacePath, "Trash").toPath(), Paths.append(homePath, "Trash").toPath());
|
||||||
session.save();
|
else
|
||||||
/*
|
home.addNode("Trash");
|
||||||
|
|
||||||
|
Boolean vresExist = session.nodeExists(Paths.append(homePath, "VREs").toPath());
|
||||||
|
Boolean trashExist = session.nodeExists(Paths.append(homePath, "Trash").toPath());
|
||||||
|
|
||||||
|
stringBuilder.append(workspacePath.toPath()).append(",").append(vresExist).append(",")
|
||||||
|
.append(trashExist).append(",").append(System.currentTimeMillis()-start).append("\n");
|
||||||
|
|
||||||
|
session.save();
|
||||||
|
|
||||||
|
/*
|
||||||
session.move("/Home/lucio.lelii/Workspace/MySpecialFolders", "/Home/lucio.lelii/VREs");
|
session.move("/Home/lucio.lelii/Workspace/MySpecialFolders", "/Home/lucio.lelii/VREs");
|
||||||
|
|
||||||
Node vres = session.getNode("/Home/lucio.lelii/VREs");
|
Node vres = session.getNode("/Home/lucio.lelii/VREs");
|
||||||
|
@ -73,15 +73,10 @@ public class MoveVREsAndTrash implements AbstractScript{
|
||||||
Node trash = session.getNode("/Home/lucio.lelii/Trash");
|
Node trash = session.getNode("/Home/lucio.lelii/Trash");
|
||||||
session.save();*/
|
session.save();*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
session.getWorkspace().getLockManager().unlock(workspacePath.toPath());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}catch (Throwable e) {
|
||||||
}catch (Exception e) {
|
|
||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter sw = new PrintWriter(writer, true);
|
PrintWriter sw = new PrintWriter(writer, true);
|
||||||
e.printStackTrace(sw);
|
e.printStackTrace(sw);
|
||||||
|
|
Loading…
Reference in New Issue