package com.constellio.sdk.load.script.preparators; import static java.util.Arrays.asList; import com.constellio.app.modules.rm.model.CopyRetentionRule; import com.constellio.app.modules.rm.model.CopyRetentionRuleBuilder; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.modules.rm.wrappers.Category; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.rm.wrappers.RetentionRule; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.wrappers.RecordWrapper; import com.constellio.sdk.load.script.utils.LinkableIdsList; public class CategoriesTaxonomyPreparator extends BaseTaxonomyPreparator { String ruleId; LinkableIdsList ids = new LinkableIdsList(); @Override public void init(RMSchemasRecordsServices rm, Transaction transaction) { initRules(rm, transaction); } @Override protected RecordWrapper newConceptWithCodeAndParent(RMSchemasRecordsServices rm, String code, RecordWrapper parent) { String title = "Category '" + code + "'"; return ids.attach(rm.newCategory().setCode(code).setTitle(title).setParent((Category) parent)) .setRetentionRules(asList(ruleId)); } @Override public void attach(RMSchemasRecordsServices rm, Record record) { if (record.getSchemaCode().startsWith(Folder.SCHEMA_TYPE)) { rm.wrapFolder(record).setCategoryEntered(ids.next()); } } private void initRules(RMSchemasRecordsServices rm, Transaction transaction) { CopyRetentionRuleBuilder copyBuilder = CopyRetentionRuleBuilder.UUID(); CopyRetentionRule principal5_2_T = copyBuilder.newPrincipal(asList(rm.PA(), rm.DM()), "5-2-T"); CopyRetentionRule secondary2_0_D = copyBuilder.newSecondary(asList(rm.PA(), rm.DM()), "2-0-D"); RetentionRule rule = rm.newRetentionRule().setCode("2").setTitle("Rule #2") .setResponsibleAdministrativeUnits(true).setApproved(true) .setCopyRetentionRules(asList(principal5_2_T, secondary2_0_D)); transaction.add(rule); ruleId = rule.getId(); } }