script for minIO porting
This commit is contained in:
parent
5a4aa31298
commit
c774e1e849
|
@ -0,0 +1,225 @@
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.jcr.Node;
|
||||||
|
import javax.jcr.NodeIterator;
|
||||||
|
import javax.jcr.Session;
|
||||||
|
import javax.jcr.lock.LockManager;
|
||||||
|
import javax.jcr.version.Version;
|
||||||
|
import javax.jcr.version.VersionHistory;
|
||||||
|
import javax.jcr.version.VersionIterator;
|
||||||
|
import javax.jcr.version.VersionManager;
|
||||||
|
|
||||||
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
|
import org.gcube.common.storagehub.model.Constants;
|
||||||
|
import org.gcube.common.storagehub.model.NodeConstants;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageIdNotFoundException;
|
||||||
|
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.SharedFolder;
|
||||||
|
import org.gcube.common.storagehub.model.items.nodes.Content;
|
||||||
|
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
||||||
|
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class MongoToMinIOPortingSharedFolder implements AbstractScript{
|
||||||
|
|
||||||
|
//private static Logger log = LoggerFactory.getLogger(MongoToMinioPortingNotShared.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
try {
|
||||||
|
long startall = System.currentTimeMillis();
|
||||||
|
|
||||||
|
for (Node shared: sharedFolders(session)) {
|
||||||
|
stringBuilder.append("\n").append("elaborating sharedFolder ").append(shared.getPath());
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Item item = scriptUtil.getItem(shared, null);
|
||||||
|
elaborateItem(item, session, scriptUtil, stringBuilder);
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("elaborated sharedFolder ").append(shared.getPath()).append(" in ").append(System.currentTimeMillis()-start).append(" millis");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append(" TOTAL 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 void elaborateItem(Item item, JackrabbitSession session, ScriptUtil scriptUtil, StringBuilder stringBuilder ) {
|
||||||
|
if (item instanceof FolderItem) {
|
||||||
|
FolderItem folder = (FolderItem) item;
|
||||||
|
if (folder.isShared() && ((SharedFolder)folder).isVreFolder()) {
|
||||||
|
stringBuilder.append("\n").append("skipped VREFolder ").append(folder.getTitle());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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 -> elaborateItem(i, session, scriptUtil, stringBuilder));
|
||||||
|
|
||||||
|
}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) {
|
||||||
|
try {
|
||||||
|
AbstractFileItem file = (AbstractFileItem) item;
|
||||||
|
Node contentNode = ((Node) item.getRelatedNode()).getNode(NodeConstants.CONTENT_NAME);
|
||||||
|
|
||||||
|
|
||||||
|
Collection<StorageBackendFactory> factories = scriptUtil.getStorageBackendHandler();
|
||||||
|
StorageBackend mongo = null;
|
||||||
|
StorageBackend minio= null;
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file.getContent().getPayloadBackend().getStorageName()==Constants.MONGO_STORAGE) {
|
||||||
|
stringBuilder.append("\n").append("elaborating file ").append(file.getId()).append(" - ").append(file.getTitle());
|
||||||
|
try {
|
||||||
|
String mongoId = file.getContent().getStorageId();
|
||||||
|
stringBuilder.append("\n").append("searching for content id ").append(mongoId);
|
||||||
|
MetaInfo info;
|
||||||
|
|
||||||
|
try (InputStream is = mongo.download(mongoId);){
|
||||||
|
info = minio.upload(is, file.getContent().getRemotePath() , item.getName(), mongoId, file.getContent().getSize(), file.getOwner() );
|
||||||
|
}catch (StorageIdNotFoundException e) {
|
||||||
|
stringBuilder.append("\n").append("not found content id ").append(mongoId);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
Content content = ((AbstractFileItem) item).getContent();
|
||||||
|
|
||||||
|
content.setPayloadBackend(info.getPayloadBackend());
|
||||||
|
content.setStorageId(info.getStorageId());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
boolean canBeDeleted = true;
|
||||||
|
|
||||||
|
LockManager lockMan = session.getWorkspace().getLockManager();
|
||||||
|
lockMan.lock(((Node) item.getRelatedNode()).getPath(), true, true, -1, "");
|
||||||
|
try {
|
||||||
|
checkoutContentNode(contentNode);
|
||||||
|
scriptUtil.updateContentNode(content, contentNode );
|
||||||
|
stringBuilder.append("\n").append("file copied ").append(file.getId()).append(" - ").append(file.getPath());
|
||||||
|
session.save();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
e.printStackTrace(new PrintWriter(sw));
|
||||||
|
stringBuilder.append("\n").append("ERROR updating content ").append(file.getId()).append(" - ").append(file.getPath()).append(" || ").append(sw.toString());
|
||||||
|
|
||||||
|
canBeDeleted = false;
|
||||||
|
} finally {
|
||||||
|
if (lockMan.isLocked(((Node) item.getRelatedNode()).getPath()))
|
||||||
|
lockMan.unlock(((Node) item.getRelatedNode()).getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (canBeDeleted)
|
||||||
|
mongo.delete(mongoId);
|
||||||
|
else minio.delete(info.getStorageId());
|
||||||
|
|
||||||
|
}catch (Throwable e) {
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
e.printStackTrace(new PrintWriter(sw));
|
||||||
|
stringBuilder.append("\n").append("error on file ").append(file.getId()).append(" - ").append(file.getTitle()).append(" || ").append(sw.toString());;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
//replace versions
|
||||||
|
for (Version version : getVersions(contentNode)) {
|
||||||
|
try {
|
||||||
|
stringBuilder.append("\n").append("checking version ").append(version.getName()).append(" - ").append(file.getPath());
|
||||||
|
String name = version.getName();
|
||||||
|
Node related = version.getFrozenNode();
|
||||||
|
if (related.hasProperty("hl:storageId") && !related.hasProperty("hl:payloadBackend")) {
|
||||||
|
String versionMongoId = related.getProperty("hl:storageId").getString();
|
||||||
|
long size = related.getProperty("hl:size").getLong();
|
||||||
|
stringBuilder.append("\n").append("searching on version for content id ").append(versionMongoId);
|
||||||
|
|
||||||
|
try (InputStream stream = mongo.download(versionMongoId)){
|
||||||
|
minio.upload(stream, file.getContent().getRemotePath() , item.getName(), versionMongoId, size, file.getOwner());
|
||||||
|
}
|
||||||
|
stringBuilder.append("\n").append("version copied ").append(name).append(" - ").append(file.getPath());
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
stringBuilder.append("\n").append("ERROR copying version ").append(version.getName()).append(" - ").append(file.getPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Throwable e) {
|
||||||
|
stringBuilder.append("\n").append("ERROR getting versions for ").append(file.getPath()).append(" - ").append(file.getId());
|
||||||
|
}
|
||||||
|
}catch (Throwable e) {
|
||||||
|
stringBuilder.append("\n").append("error TOTAL on file ").append(item.getTitle()).append(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<Node> sharedFolders(JackrabbitSession session) throws Exception{
|
||||||
|
Node shares = session.getNode("/Share");
|
||||||
|
|
||||||
|
NodeIterator it = shares.getNodes();
|
||||||
|
|
||||||
|
List<Node> sharesNodes = new ArrayList<>();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
|
||||||
|
Node shared = it.nextNode();
|
||||||
|
sharesNodes.add(shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sharesNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* private void checkinContentNode(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
versionManager.checkin(node.getPath());
|
||||||
|
}*/
|
||||||
|
|
||||||
|
private void checkoutContentNode(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
versionManager.checkout(node.getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<Version> getVersions(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
|
||||||
|
VersionHistory history = versionManager.getVersionHistory(node.getPath());
|
||||||
|
VersionIterator nodeIt = history.getAllLinearVersions();
|
||||||
|
List<Version> versionedNodes = new ArrayList<Version>();
|
||||||
|
while (nodeIt.hasNext()) {
|
||||||
|
Version version = nodeIt.nextVersion();
|
||||||
|
if (!versionManager.getBaseVersion(node.getPath()).isSame(version))
|
||||||
|
versionedNodes.add(version);
|
||||||
|
}
|
||||||
|
|
||||||
|
return versionedNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,231 @@
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.jcr.Node;
|
||||||
|
import javax.jcr.NodeIterator;
|
||||||
|
import javax.jcr.Session;
|
||||||
|
import javax.jcr.lock.LockManager;
|
||||||
|
import javax.jcr.version.Version;
|
||||||
|
import javax.jcr.version.VersionHistory;
|
||||||
|
import javax.jcr.version.VersionIterator;
|
||||||
|
import javax.jcr.version.VersionManager;
|
||||||
|
|
||||||
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
|
import org.gcube.common.storagehub.model.Constants;
|
||||||
|
import org.gcube.common.storagehub.model.NodeConstants;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageIdNotFoundException;
|
||||||
|
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.SharedFolder;
|
||||||
|
import org.gcube.common.storagehub.model.items.nodes.Content;
|
||||||
|
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
||||||
|
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class MongoToMinIOPortingVREFolders implements AbstractScript{
|
||||||
|
|
||||||
|
//private static Logger log = LoggerFactory.getLogger(MongoToMinioPortingNotShared.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String run(JackrabbitSession session, ScriptParameter prameters, ScriptUtil scriptUtil) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
try {
|
||||||
|
long startall = System.currentTimeMillis();
|
||||||
|
|
||||||
|
for (Node shared: sharedFolders(session)) {
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Item folder = scriptUtil.getItem(shared, null);
|
||||||
|
if (! (folder instanceof SharedFolder))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!((SharedFolder)folder).isVreFolder()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("elaborating VREFolder ").append(shared.getPath());
|
||||||
|
|
||||||
|
Item item = scriptUtil.getItem(shared, null);
|
||||||
|
elaborateItem(item, session, scriptUtil, stringBuilder);
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append("elaborated VREFolder ").append(shared.getPath()).append(" in ").append(System.currentTimeMillis()-start).append(" millis");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuilder.append("\n").append(" TOTAL 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 void elaborateItem(Item item, JackrabbitSession session, ScriptUtil scriptUtil, StringBuilder 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 -> elaborateItem(i, session, scriptUtil, stringBuilder));
|
||||||
|
|
||||||
|
}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) {
|
||||||
|
try {
|
||||||
|
AbstractFileItem file = (AbstractFileItem) item;
|
||||||
|
Node contentNode = ((Node) item.getRelatedNode()).getNode(NodeConstants.CONTENT_NAME);
|
||||||
|
|
||||||
|
|
||||||
|
Collection<StorageBackendFactory> factories = scriptUtil.getStorageBackendHandler();
|
||||||
|
StorageBackend mongo = null;
|
||||||
|
StorageBackend minio= null;
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file.getContent().getPayloadBackend().getStorageName()==Constants.MONGO_STORAGE) {
|
||||||
|
stringBuilder.append("\n").append("elaborating file ").append(file.getId()).append(" - ").append(file.getTitle());
|
||||||
|
try {
|
||||||
|
String mongoId = file.getContent().getStorageId();
|
||||||
|
stringBuilder.append("\n").append("searching for content id ").append(mongoId);
|
||||||
|
MetaInfo info;
|
||||||
|
|
||||||
|
try (InputStream is = mongo.download(mongoId);){
|
||||||
|
info = minio.upload(is, file.getContent().getRemotePath() , item.getName(), mongoId, file.getContent().getSize() , file.getOwner() );
|
||||||
|
}catch (StorageIdNotFoundException e) {
|
||||||
|
stringBuilder.append("\n").append("not found content id ").append(mongoId);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
Content content = ((AbstractFileItem) item).getContent();
|
||||||
|
|
||||||
|
content.setPayloadBackend(info.getPayloadBackend());
|
||||||
|
content.setStorageId(info.getStorageId());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
boolean canBeDeleted = true;
|
||||||
|
|
||||||
|
LockManager lockMan = session.getWorkspace().getLockManager();
|
||||||
|
lockMan.lock(((Node) item.getRelatedNode()).getPath(), true, true, -1, "");
|
||||||
|
try {
|
||||||
|
checkoutContentNode(contentNode);
|
||||||
|
scriptUtil.updateContentNode(content, contentNode );
|
||||||
|
stringBuilder.append("\n").append("file copied ").append(file.getId()).append(" - ").append(file.getPath());
|
||||||
|
session.save();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
e.printStackTrace(new PrintWriter(sw));
|
||||||
|
stringBuilder.append("\n").append("ERROR updating content ").append(file.getId()).append(" - ").append(file.getPath()).append(" || ").append(sw.toString());
|
||||||
|
|
||||||
|
canBeDeleted = false;
|
||||||
|
} finally {
|
||||||
|
if (lockMan.isLocked(((Node) item.getRelatedNode()).getPath()))
|
||||||
|
lockMan.unlock(((Node) item.getRelatedNode()).getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (canBeDeleted)
|
||||||
|
mongo.delete(mongoId);
|
||||||
|
else minio.delete(info.getStorageId());
|
||||||
|
|
||||||
|
}catch (Throwable e) {
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
e.printStackTrace(new PrintWriter(sw));
|
||||||
|
stringBuilder.append("\n").append("error on file ").append(file.getId()).append(" - ").append(file.getTitle()).append(" || ").append(sw.toString());;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
//replace versions
|
||||||
|
for (Version version : getVersions(contentNode)) {
|
||||||
|
try {
|
||||||
|
stringBuilder.append("\n").append("checking version ").append(version.getName()).append(" - ").append(file.getPath());
|
||||||
|
String name = version.getName();
|
||||||
|
Node related = version.getFrozenNode();
|
||||||
|
if (related.hasProperty("hl:storageId") && !related.hasProperty("hl:payloadBackend")) {
|
||||||
|
String versionMongoId = related.getProperty("hl:storageId").getString();
|
||||||
|
long size = related.getProperty("hl:size").getLong();
|
||||||
|
stringBuilder.append("\n").append("searching on version for content id ").append(versionMongoId);
|
||||||
|
|
||||||
|
try (InputStream stream = mongo.download(versionMongoId)){
|
||||||
|
minio.upload(stream, file.getContent().getRemotePath() , item.getName(), versionMongoId, size , file.getOwner());
|
||||||
|
}
|
||||||
|
stringBuilder.append("\n").append("version copied ").append(name).append(" - ").append(file.getPath());
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
stringBuilder.append("\n").append("ERROR copying version ").append(version.getName()).append(" - ").append(file.getPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Throwable e) {
|
||||||
|
stringBuilder.append("\n").append("ERROR getting versions for ").append(file.getPath()).append(" - ").append(file.getId());
|
||||||
|
}
|
||||||
|
}catch (Throwable e) {
|
||||||
|
stringBuilder.append("\n").append("error TOTAL on file ").append(item.getTitle()).append(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<Node> sharedFolders(JackrabbitSession session) throws Exception{
|
||||||
|
Node shares = session.getNode("/Share");
|
||||||
|
|
||||||
|
NodeIterator it = shares.getNodes();
|
||||||
|
|
||||||
|
List<Node> sharesNodes = new ArrayList<>();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
|
||||||
|
Node shared = it.nextNode();
|
||||||
|
sharesNodes.add(shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sharesNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* private void checkinContentNode(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
versionManager.checkin(node.getPath());
|
||||||
|
}*/
|
||||||
|
|
||||||
|
private void checkoutContentNode(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
versionManager.checkout(node.getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<Version> getVersions(Node node) throws Exception{
|
||||||
|
Session session = node.getSession();
|
||||||
|
VersionManager versionManager = session.getWorkspace().getVersionManager();
|
||||||
|
|
||||||
|
VersionHistory history = versionManager.getVersionHistory(node.getPath());
|
||||||
|
VersionIterator nodeIt = history.getAllLinearVersions();
|
||||||
|
List<Version> versionedNodes = new ArrayList<Version>();
|
||||||
|
while (nodeIt.hasNext()) {
|
||||||
|
Version version = nodeIt.nextVersion();
|
||||||
|
if (!versionManager.getBaseVersion(node.getPath()).isSame(version))
|
||||||
|
versionedNodes.add(version);
|
||||||
|
}
|
||||||
|
|
||||||
|
return versionedNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -106,7 +106,7 @@ public class MongoToMinioPortingNotShared implements AbstractScript{
|
||||||
MetaInfo info;
|
MetaInfo info;
|
||||||
|
|
||||||
try (InputStream is = mongo.download(mongoId);){
|
try (InputStream is = mongo.download(mongoId);){
|
||||||
info = minio.upload(is, file.getContent().getRemotePath() , item.getName(), mongoId, file.getContent().getSize() );
|
info = minio.upload(is, file.getContent().getRemotePath() , item.getName(), mongoId, file.getContent().getSize(), file.getOwner() );
|
||||||
}catch (StorageIdNotFoundException e) {
|
}catch (StorageIdNotFoundException e) {
|
||||||
stringBuilder.append("\n").append("not found content id ").append(mongoId);
|
stringBuilder.append("\n").append("not found content id ").append(mongoId);
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -161,7 +161,7 @@ public class MongoToMinioPortingNotShared implements AbstractScript{
|
||||||
stringBuilder.append("\n").append("searching on version for content id ").append(versionMongoId);
|
stringBuilder.append("\n").append("searching on version for content id ").append(versionMongoId);
|
||||||
|
|
||||||
try (InputStream stream = mongo.download(versionMongoId)){
|
try (InputStream stream = mongo.download(versionMongoId)){
|
||||||
minio.upload(stream, file.getContent().getRemotePath() , item.getName(), versionMongoId, size);
|
minio.upload(stream, file.getContent().getRemotePath() , item.getName(), versionMongoId, size , file.getOwner());
|
||||||
}
|
}
|
||||||
stringBuilder.append("\n").append("version copied ").append(name).append(" - ").append(file.getPath());
|
stringBuilder.append("\n").append("version copied ").append(name).append(" - ").append(file.getPath());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue