如何使用 Open CMIS 将内容从一个露天存储库迁移到另一个
How to migrate content from one alfresco repository to other using Open CMIS
我想将所有露天存储库内容从一个存储库迁移到另一个存储库。但我不想要现有的文件夹结构。
迁移时我必须根据某些业务需求验证内容,并且根据内容类型我必须在新存储库中创建不同的文件夹结构。
以前有人这样做过吗?
请帮忙。
提前致谢...
好的,我给出的解决方案不是最好的,但我认为它会起作用,我们将从一个简单的文档开始,看看它是否起作用(我们会修改答案)
获取文档的 inputStram
我认为这是最重要的部分
public InputStream getTheInputStream () {
Document newDocument = (Document) getSession(serverURL, userName, password).getObject(path);
ContentStream cs = newDocument.getContentStream(null);
return cs.getStream();
}
将 inputStram 从服务器 A 移动到服务器 B
public void transfert() throws FileNotFoundException, IOException {
Session sessionB = getSession(serverUrlB, usernameB, passwordB);
//////////////////////////// GET THE FOLDER THAT YOU WILL WORK WITH
Folder root = sessionB.getRootFolder();
//////////////////////////// GET THE FOLDER THAT YOU WILL WORK WITH
File newfile = new File(fileName);
String nom = fileName;
Map<String, Object> properties = new HashMap<>();
properties.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value());
properties.put(PropertyIds.NAME, nom);
List<Ace> addAces = new LinkedList<>();
List<Ace> removeAces = new LinkedList<>();
List<Policy> policies = new LinkedList<>();
String extension = FilenameUtils.getExtension(nom);
ContentStream contentStream = new ContentStreamImpl("content." + extension, BigInteger.valueOf(nom).length()),
new MimetypesFileTypeMap().getContentType(newfile), (theInputStream);
Document dc = root.createDocument(properties, contentStream, VersioningState.MAJOR, policies, addAces, removeAces, sessionB.getDefaultContext());
}
尝试此方法并告诉我它是否有效,如果您没有 getSession 方法,请查看此 post 。
我想将所有露天存储库内容从一个存储库迁移到另一个存储库。但我不想要现有的文件夹结构。 迁移时我必须根据某些业务需求验证内容,并且根据内容类型我必须在新存储库中创建不同的文件夹结构。
以前有人这样做过吗? 请帮忙。
提前致谢...
好的,我给出的解决方案不是最好的,但我认为它会起作用,我们将从一个简单的文档开始,看看它是否起作用(我们会修改答案)
获取文档的 inputStram
我认为这是最重要的部分
public InputStream getTheInputStream () {
Document newDocument = (Document) getSession(serverURL, userName, password).getObject(path);
ContentStream cs = newDocument.getContentStream(null);
return cs.getStream();
}
将 inputStram 从服务器 A 移动到服务器 B
public void transfert() throws FileNotFoundException, IOException {
Session sessionB = getSession(serverUrlB, usernameB, passwordB);
//////////////////////////// GET THE FOLDER THAT YOU WILL WORK WITH
Folder root = sessionB.getRootFolder();
//////////////////////////// GET THE FOLDER THAT YOU WILL WORK WITH
File newfile = new File(fileName);
String nom = fileName;
Map<String, Object> properties = new HashMap<>();
properties.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value());
properties.put(PropertyIds.NAME, nom);
List<Ace> addAces = new LinkedList<>();
List<Ace> removeAces = new LinkedList<>();
List<Policy> policies = new LinkedList<>();
String extension = FilenameUtils.getExtension(nom);
ContentStream contentStream = new ContentStreamImpl("content." + extension, BigInteger.valueOf(nom).length()),
new MimetypesFileTypeMap().getContentType(newfile), (theInputStream);
Document dc = root.createDocument(properties, contentStream, VersioningState.MAJOR, policies, addAces, removeAces, sessionB.getDefaultContext());
}
尝试此方法并告诉我它是否有效,如果您没有 getSession 方法,请查看此 post