--- /dev/null
+package com.axyus.generator.pespj;
+
+import com.axyus.generator.pespj.steps.AccueilStep;
+import com.axyus.generator.pespj.steps.GenerationResultStep;
+import com.axyus.generator.pespj.steps.ImportXemeliosResultStep;
+import com.axyus.generator.pespj.steps.PjStep;
+import com.axyus.generator.pespj.steps.ReferenceComptableStep;
+import com.axyus.generator.pespj.utils.ConfigHandler;
+import com.axyus.swing.components.wizard.WizardProcess;
+import com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl;
+import fr.gouv.minefi.cp.helios.pes_v2.rev0.aller.PESAller;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+
+/**
+ * Contient les différentes étapes du wizard
+ * @author CBO
+ */
+public class GeneratorPesPjWizardProcess extends WizardProcess {
+
+ int stepIndex = 0;
+
+ private PESAller pesAller;
+ private ConfigHandler configHandler;
+
+ private boolean inXemelios;
+
+ private AccueilStep accueilStep;
+ private PjStep pjStep;
+ private ReferenceComptableStep referenceComptableStep;
+ private GenerationResultStep generationResultStep;
+ private ImportXemeliosResultStep importXemeliosConfirmationStep;
+
+ private Step allSteps[];
+
+ private WizardLauncher.RunContextAdapter runContextAdapter;
+
+ public GeneratorPesPjWizardProcess(WizardLauncher.RunContextAdapter runContextAdapter) throws UnExpectedException {
+ this.runContextAdapter = runContextAdapter;
+ this.pesAller = new PESAller();
+
+ try {
+ InputStream input = this.getClass().getResourceAsStream("/com/axyus/generator/pespj/datas.xml");
+ try{
+ DocumentBuilder documentBuilder = new DocumentBuilderFactoryImpl().newDocumentBuilder();
+ configHandler = new ConfigHandler(documentBuilder.parse(input));
+ }finally{
+ input.close();
+ }
+
+ } catch (Exception ex){
+ throw new UnExpectedException(ex);
+ }
+
+ this.inXemelios = runContextAdapter.isInXemelios();
+
+ this.accueilStep = new AccueilStep();
+ this.pjStep = new PjStep();
+ this.referenceComptableStep = new ReferenceComptableStep();
+ this.generationResultStep = new GenerationResultStep(runContextAdapter.isPesFileImportSupported());
+
+ if (runContextAdapter.isPesFileImportSupported()) {
+ this.importXemeliosConfirmationStep = new ImportXemeliosResultStep();
+ this.allSteps = new Step[]{accueilStep, pjStep, referenceComptableStep, generationResultStep, importXemeliosConfirmationStep};
+ } else {
+ this.allSteps = new Step[]{accueilStep, pjStep, referenceComptableStep, generationResultStep};
+ }
+
+ }
+
+ public AccueilStep getAccueilStep() {
+ return accueilStep;
+ }
+
+ public PjStep getPjStep() {
+ return pjStep;
+ }
+
+ public ReferenceComptableStep getReferenceComptableStep() {
+ return referenceComptableStep;
+ }
+
+ public GenerationResultStep getGenerationResultStep() {
+ return generationResultStep;
+ }
+
+ @Override
+ public Step getCurrentStep() {
+ allSteps[stepIndex].setWizardProcess(this);
+ return allSteps[stepIndex];
+ }
+
+ @Override
+ public Step previousStep() {
+ stepIndex--;
+ return getCurrentStep();
+ }
+
+ @Override
+ public Step nextStep() {
+ stepIndex++;
+ return getCurrentStep();
+ }
+
+ @Override
+ public List<Step> getPredictedSteps() {
+ return Arrays.asList(allSteps);
+ }
+
+ @Override
+ public boolean isStepsPredictionCompleted() {
+ return true;
+ }
+
+ @Override
+ public boolean hasPreviousStep() {
+ return stepIndex > 0;
+ }
+
+ @Override
+ public boolean hasNextStep() {
+ return stepIndex < allSteps.length - 1;
+ }
+
+ @Override
+ public void cancel() {
+ runContextAdapter.onCloseRequest();
+ }
+
+ @Override
+ public void insertStep(Step step, int index) {
+ Step[] newAllStep = new Step[allSteps.length + 1];
+ for (int i = 0; i < newAllStep.length; i++) {
+ if (i < index) {
+ newAllStep[i] = allSteps[i];
+ } else if (i == index) {
+ newAllStep[i] = step;
+ } else {
+ newAllStep[i] = allSteps[i - 1];
+ }
+ }
+ allSteps = newAllStep;
+ getWizardDialog().stepChange();
+
+ }
+
+ @Override
+ public void deleteStep(int index) {
+ Step[] newAllStep = new Step[allSteps.length - 1];
+ for (int i = 0; i < newAllStep.length; i++) {
+ if (i < index) {
+ newAllStep[i] = allSteps[i];
+ } else if (i >= index) {
+ newAllStep[i] = allSteps[i + 1];
+ }
+ }
+ allSteps = newAllStep;
+ getWizardDialog().stepChange();
+ }
+
+ public ImportXemeliosResultStep getImportXemeliosConfirmationStep() {
+ return importXemeliosConfirmationStep;
+ }
+
+ @Override
+ public int getCurrentStepIndex() {
+ return stepIndex;
+ }
+
+ public PESAller getPesAller() {
+ return pesAller;
+ }
+
+ public ConfigHandler getConfigHandler() {
+ return configHandler;
+ }
+
+ public boolean isInXemelios() {
+ return inXemelios;
+ }
+}