package com.constellio.app.modules.rm.migrations;
import static com.constellio.app.ui.i18n.i18n.$;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.where;
import java.util.List;
import com.constellio.app.entities.modules.MigrationResourcesProvider;
import com.constellio.app.entities.modules.MigrationScript;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.app.modules.rm.wrappers.Email;
import com.constellio.app.modules.rm.wrappers.type.DocumentType;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.schemas.Schemas;
import com.constellio.model.services.records.RecordServices;
public class RMMigrationTo6_5_20 implements MigrationScript {
@Override
public String getVersion() {
return "6.5.20";
}
@Override
public void migrate(String collection, MigrationResourcesProvider provider, AppLayerFactory appLayerFactory)
throws Exception {
RMSchemasRecordsServices rm = new RMSchemasRecordsServices(collection, appLayerFactory);
DocumentType emailDocumentType = rm.emailDocumentType();
RecordServices recordServices = appLayerFactory.getModelLayerFactory().newRecordServices();
if (emailDocumentType == null) {
String title = $("DocumentType.emailDocumentType");
List<DocumentType> emailDocumentTypes = rm.searchDocumentTypes(where(Schemas.TITLE).isEqualTo(title));
if (!emailDocumentTypes.isEmpty()) {
recordServices.update(emailDocumentTypes.get(0).setCode(DocumentType.EMAIL_DOCUMENT_TYPE)
.setLinkedSchema(Email.SCHEMA));
} else {
recordServices.add(rm.newDocumentType().setCode(DocumentType.EMAIL_DOCUMENT_TYPE)
.setTitle(title).setLinkedSchema(Email.SCHEMA));
}
} else if (emailDocumentType.isLogicallyDeletedStatus()) {
recordServices.restore(emailDocumentType.getWrappedRecord(), User.GOD);
}
}
}