package com.constellio.app.ui.pages.management.sequence; import static com.constellio.app.ui.i18n.i18n.$; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Locale; import com.constellio.app.extensions.sequence.AvailableSequence; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.entities.SequenceVO; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.Language; public class ListSequencesPresenter implements Serializable { private transient SequenceServices sequenceServices; private List<SequenceVO> sequenceVOs; private ListSequencesView view; public ListSequencesPresenter(ListSequencesView view) { this.view = view; initTransientObjects(); Language sequenceLanguage = getSequenceLanguage(); sequenceVOs = new ArrayList<>(); List<AvailableSequence> availableSequences = getAvailableSequences(); for (AvailableSequence availableSequence : availableSequences) { String sequenceId = availableSequence.getCode(); String sequenceTitle = availableSequence.getTitles().get(sequenceLanguage); Long sequenceValue = sequenceServices.getLastSequenceValue(sequenceId); SequenceVO sequenceVO = new SequenceVO(sequenceId, sequenceTitle, sequenceValue); sequenceVOs.add(sequenceVO); } view.setSequenceVOs(sequenceVOs); } private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); initTransientObjects(); } private void initTransientObjects() { ConstellioFactories constellioFactories = view.getConstellioFactories(); SessionContext sessionContext = view.getSessionContext(); sequenceServices = new SequenceServices(constellioFactories, sessionContext); } private Language getSequenceLanguage() { Locale currentLocale = view.getSessionContext().getCurrentLocale(); String currentLanguageCode = currentLocale.getLanguage(); Language sequenceLanguage; if (Language.isSupported(currentLanguageCode)) { sequenceLanguage = Language.withCode(currentLanguageCode); } else { sequenceLanguage = Language.getAvailableLanguages().get(0); } return sequenceLanguage; } private List<AvailableSequence> getAvailableSequences() { List<AvailableSequence> availableSequences; String recordId = view.getRecordId(); if (recordId != null) { availableSequences = sequenceServices.getAvailableSequences(recordId); } else { throw new IllegalArgumentException("recordId is required"); } return availableSequences; } void saveButtonClicked() { for (SequenceVO sequenceVO : sequenceVOs) { String sequenceId = sequenceVO.getSequenceId(); Long value = sequenceVO.getSequenceValue(); sequenceServices.set(sequenceId, value); } view.closeWindow(); view.showMessage($("ListSequencesView.sequencesSaved")); } void cancelButtonClicked() { view.closeWindow(); } void windowCloseRequested() { view.closeWindow(); } }