package com.constellio.app.extensions;
import java.util.ArrayList;
import java.util.List;
import com.constellio.app.api.extensions.LabelTemplateExtension;
import com.constellio.app.api.extensions.PagesComponentsExtension;
import com.constellio.app.api.extensions.UpdateModeExtension;
import com.constellio.app.api.extensions.params.DecorateMainComponentAfterInitExtensionParams;
import com.constellio.app.api.extensions.params.PagesComponentsExtensionParams;
import com.constellio.app.extensions.sequence.AvailableSequence;
import com.constellio.app.extensions.sequence.AvailableSequenceForSystemParams;
import com.constellio.app.extensions.sequence.SystemSequenceExtension;
import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplate;
import com.constellio.data.frameworks.extensions.VaultBehaviorsList;
public class AppLayerSystemExtensions {
public VaultBehaviorsList<PagesComponentsExtension> pagesComponentsExtensions = new VaultBehaviorsList<>();
public VaultBehaviorsList<SystemSequenceExtension> systemSequenceExtensions = new VaultBehaviorsList<>();
public VaultBehaviorsList<LabelTemplateExtension> labelTemplateExtensions = new VaultBehaviorsList<>();
public List<AvailableSequence> getAvailableSequences() {
AvailableSequenceForSystemParams params = new AvailableSequenceForSystemParams();
List<AvailableSequence> availableSequences = new ArrayList<>();
for (SystemSequenceExtension extension : systemSequenceExtensions) {
List<AvailableSequence> extensionSequences = extension.getAvailableSequences(params);
if (extensionSequences != null) {
availableSequences.addAll(extensionSequences);
}
}
return availableSequences;
}
public void decorateView(PagesComponentsExtensionParams params) {
for (PagesComponentsExtension extension : pagesComponentsExtensions) {
extension.decorateView(params);
}
}
public void decorateMainComponentBeforeViewInstanciated(DecorateMainComponentAfterInitExtensionParams params) {
for (PagesComponentsExtension extension : pagesComponentsExtensions) {
extension.decorateMainComponentBeforeViewInstanciated(params);
}
}
public void decorateMainComponentAfterViewAssembledOnViewEntered(DecorateMainComponentAfterInitExtensionParams params) {
for (PagesComponentsExtension extension : pagesComponentsExtensions) {
extension.decorateMainComponentAfterViewAssembledOnViewEntered(params);
}
}
public void decorateMainComponentBeforeViewAssembledOnViewEntered(DecorateMainComponentAfterInitExtensionParams params) {
for (PagesComponentsExtension extension : pagesComponentsExtensions) {
extension.decorateMainComponentBeforeViewAssembledOnViewEntered(params);
}
}
public UpdateModeExtension alternateUpdateMode = new UpdateModeExtension();
public void addLabelTemplates(String schemaType, List<LabelTemplate> labelTemplates) {
for (LabelTemplateExtension extension : labelTemplateExtensions) {
extension.addLabelTemplates(schemaType, labelTemplates);
}
}
}