Как перенести контент из одного репозитория alfresco в другой, используя Open CMIS

Я хочу перенести все содержимое хранилища под открытым небом из одного хранилища в другое. но я не хочу существующую структуру папок. во время миграции мне нужно проверить контент в соответствии с некоторыми бизнес-требованиями, и в зависимости от типа контента мне нужно создать другую структуру папок в новом хранилище.

Кто-нибудь делал это ранее? Пожалуйста помоги.

Заранее спасибо...

1 ответ

Решение

Хорошо, решение, которое я даю, не самое лучшее, но я думаю, что оно будет работать, мы начнем с простого документа и посмотрим, работает ли оно (мы изменим ответ)

Получение 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, просто посмотрите на этот метод после сеанса get.

Другие вопросы по тегам