package br.ufrgs.inf.dsmoura.repository.controller.asset; import java.io.Serializable; import org.ajax4jsf.model.KeepAlive; import br.ufrgs.inf.dsmoura.repository.controller.util.JSFUtil; @KeepAlive public class WizardMB implements Serializable { private static final long serialVersionUID = 1L; private Integer state; private Integer maxState; private String validationMessage; private final static Integer GENERAL_STATE = 1; private final static Integer CLASSIFICATION_STATE = 2; private final static Integer EFFORT_STATE = 3; private final static Integer REQUIREMENTS_STATE = 4; private final static Integer ANALYSIS_STATE = 5; private final static Integer DESIGN_STATE = 6; private final static Integer IMPLEMENTATION_STATE = 7; private final static Integer TEST_STATE = 8; private final static Integer USAGE_STATE = 9; private final static Integer RELATED_ASSETS_STATE = 10; private final static Integer PUBLISH_STATE = 11; private final static Integer NUMBER_OF_STATES = 11; public WizardMB() { this.maxState = 0; openGeneral(); } public WizardMB(Boolean isFullState) { this.maxState = isFullState ? NUMBER_OF_STATES : 0; openGeneral(); } private boolean validate() { validationMessage = ""; if (state == null) { return true; } else if(state.equals(GENERAL_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.validate(); } else if (state.equals(CLASSIFICATION_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getClassificationMB().validate(); } else if (state.equals(REQUIREMENTS_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getRequirementsMB().validate(); } else if (state.equals(ANALYSIS_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getAnalysisMB().validate(); } else if (state.equals(DESIGN_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getDesignMB().validate(); } else if (state.equals(IMPLEMENTATION_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getImplementationMB().validate(); } else if (state.equals(TEST_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getTestMB().validate(); } else if (state.equals(USAGE_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getUsageMB().validate(); } else if (state.equals(RELATED_ASSETS_STATE)) { AssetMB assetMB = JSFUtil.findBean("assetMB"); validationMessage = assetMB.getRelatedAssetsMB().validate(); } return (validationMessage == null) || (validationMessage.length() == 0); } public String back() { if (validate() && getCanBack()) { this.setState(this.state - 1); } return ""; } public String next() { if (validate() && getCanNext()) { this.setState(this.state + 1); } return ""; } public Boolean getCanBack() { return this.state > 1; } public Boolean getCanNext() { return this.state < NUMBER_OF_STATES; } public Integer getState() { return state; } public void setState(Integer state) { if (validate()) { this.state = state; if (this.state > maxState) { maxState = this.state; } } } public String openGeneral() { this.setState(GENERAL_STATE); return ""; } public String openClassification() { this.setState(CLASSIFICATION_STATE); return ""; } public String openEffort() { this.setState(EFFORT_STATE); return ""; } public String openRequirements() { this.setState(REQUIREMENTS_STATE); return ""; } public String openAnalysis() { this.setState(ANALYSIS_STATE); return ""; } public String openDesign() { this.setState(DESIGN_STATE); return ""; } public String openImplementation() { this.setState(IMPLEMENTATION_STATE); return ""; } public String openTest() { this.setState(TEST_STATE); return ""; } public String openUsage() { this.setState(USAGE_STATE); return ""; } public String openRelatedAssets() { this.setState(RELATED_ASSETS_STATE); return ""; } public String openPublish() { this.setState(PUBLISH_STATE); return ""; } public Boolean getIsGeneralEnabled() { return maxState >= GENERAL_STATE; } public Boolean getIsClassificationEnabled() { return maxState >= CLASSIFICATION_STATE; } public Boolean getIsEffortEnabled() { return maxState >= EFFORT_STATE; } public Boolean getIsRequirementsEnabled() { return maxState >= REQUIREMENTS_STATE; } public Boolean getIsAnalysisEnabled() { return maxState >= ANALYSIS_STATE; } public Boolean getIsDesignEnabled() { return maxState >= DESIGN_STATE; } public Boolean getIsImplementationEnabled() { return maxState >= IMPLEMENTATION_STATE; } public Boolean getIsTestEnabled() { return maxState >= TEST_STATE; } public Boolean getIsUsageEnabled() { return maxState >= USAGE_STATE; } public Boolean getIsRelatedAssetsEnabled() { return maxState >= RELATED_ASSETS_STATE; } public Boolean getIsPublishEnabled() { return maxState >= PUBLISH_STATE; } public Boolean getIsGeneralOpened() { return state.equals(GENERAL_STATE); } public Boolean getIsClassificationOpened() { return state.equals(CLASSIFICATION_STATE); } public Boolean getIsEffortOpened() { return state.equals(EFFORT_STATE); } public Boolean getIsRequirementsOpened() { return state.equals(REQUIREMENTS_STATE); } public Boolean getIsAnalysisOpened() { return state.equals(ANALYSIS_STATE); } public Boolean getIsDesignOpened() { return state.equals(DESIGN_STATE); } public Boolean getIsImplementationOpened() { return state.equals(IMPLEMENTATION_STATE); } public Boolean getIsTestOpened() { return state.equals(TEST_STATE); } public Boolean getIsUsageOpened() { return state.equals(USAGE_STATE); } public Boolean getIsRelatedAssetsOpened() { return state.equals(RELATED_ASSETS_STATE); } public Boolean getIsPublishOpened() { return state.equals(PUBLISH_STATE); } public String getGeneralLabel() { return GENERAL_STATE + ".Description"; } public String getClassificationLabel() { return CLASSIFICATION_STATE + ".Classification"; } public String getEffortLabel() { return EFFORT_STATE + ".Effort"; } public String getRequirementsLabel() { return REQUIREMENTS_STATE + ".Requirements"; } public String getAnalysisLabel() { return ANALYSIS_STATE + ".Analysis"; } public String getDesignLabel() { return DESIGN_STATE + ".Design"; } public String getImplementationLabel() { return IMPLEMENTATION_STATE + ".Implementation"; } public String getTestLabel() { return TEST_STATE + ".Test"; } public String getUsageLabel() { return USAGE_STATE + ".Usage"; } public String getRelatedAssetsLabel() { return RELATED_ASSETS_STATE + ".Related Assets"; } public String getPublishLabel() { return PUBLISH_STATE + ".Publish and Final"; } public String getValidationMessage() { return validationMessage; } public void setValidationMessage(String validationMessage) { this.validationMessage = validationMessage; } }