/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.guvnor.asset.management.client.editors.repository.wizard.pages; import javax.inject.Inject; import com.google.gwt.user.client.ui.Widget; import org.guvnor.asset.management.client.editors.repository.wizard.CreateRepositoryWizardModel; import org.guvnor.asset.management.client.i18n.Constants; import org.guvnor.asset.management.service.RepositoryStructureService; import org.jboss.errai.bus.client.api.base.DefaultErrorCallback; import org.jboss.errai.common.client.api.Caller; import org.jboss.errai.common.client.api.RemoteCallback; import org.uberfire.client.callbacks.Callback; public class RepositoryStructurePage extends RepositoryWizardPage implements RepositoryStructurePageView.Presenter { private RepositoryStructurePageView view; private boolean isProjectValid = false; private boolean isGroupIdValid = false; private boolean isArtifactIdValid = false; private boolean isValidVersion = false; private Caller<RepositoryStructureService> repositoryStructureService; @Inject public RepositoryStructurePage( RepositoryStructurePageView view, Caller <RepositoryStructureService> repositoryStructureService ) { this.view = view; view.init( this ); this.repositoryStructureService = repositoryStructureService; } @Override public String getTitle() { return Constants.INSTANCE.RepositoryStructurePage(); } @Override public void isComplete( final Callback<Boolean> callback ) { boolean isComplete = structurePageWasVisited && isProjectValid && isGroupIdValid && isArtifactIdValid && isValidVersion; callback.callback( isComplete ); } @Override public void setModel( CreateRepositoryWizardModel model ) { super.setModel( model ); model.setConfigureRepository( view.isConfigureRepository() ); model.setMultiModule( view.isMultiModule() ); } @Override public void initialise() { //no additional processing required } @Override public void prepareView() { //no additional processing required } @Override public Widget asWidget() { return view.asWidget(); } @Override public void setProjectName( String projectName ) { model.setProjectName( projectName ); view.setProjectName( projectName ); view.clearProjectNameErrorMessage(); isProjectValid = true; } @Override public void onProjectNameChange() { String projectName = view.getProjectName(); projectName = projectName != null ? projectName.trim() : null; if ( projectName != null && !projectName.equals( view.getProjectName() ) ) { view.setProjectName( projectName ); } model.setProjectName( projectName ); repositoryStructureService.call( new RemoteCallback<Boolean>() { @Override public void callback( Boolean isValid ) { if ( isValid ) { view.clearProjectNameErrorMessage(); } else { view.setProjectNameErrorMessage( Constants.INSTANCE.InvalidProjectName() ); } if ( isValid != isProjectValid ) { isProjectValid = isValid; fireEvent(); } } }, new DefaultErrorCallback() ).isValidProjectName( projectName ); } @Override public void setProjectDescription( String projectDescription ) { model.setProjectDescription( projectDescription ); view.setProjectDescription( projectDescription ); } @Override public void onProjectDescriptionChange() { model.setProjectDescription( view.getProjectDescription().trim() ); } @Override public void setGroupId( String groupId ) { model.setGroupId( groupId ); view.setGroupId( groupId ); view.clearGroupIdErrorMessage(); isGroupIdValid = true; } @Override public void onGroupIdChange() { String groupId = view.getGroupId(); groupId = groupId != null ? groupId.trim() : null; if ( groupId != null && !groupId.equals( view.getGroupId() ) ) { view.setGroupId( groupId ); } model.setGroupId( groupId ); repositoryStructureService.call( new RemoteCallback<Boolean>() { @Override public void callback( Boolean isValid ) { if ( isValid ) { view.clearGroupIdErrorMessage(); } else { view.setGroupIdErrorMessage( Constants.INSTANCE.InvalidGroupId() ); } if ( isValid != isGroupIdValid ) { isGroupIdValid = isValid; fireEvent(); } } }, new DefaultErrorCallback() ).isValidGroupId( groupId ); } @Override public void setArtifactId( String artifactId ) { model.setArtifactId( artifactId ); view.setArtifactId( artifactId ); view.clearArtifactIdErrorMessage(); isArtifactIdValid = true; } @Override public void onArtifactIdChange() { String artifactId = view.getArtifactId(); artifactId = artifactId != null ? artifactId.trim() : null; if ( artifactId != null && !artifactId.equals( view.getArtifactId() ) ) { view.setArtifactId( artifactId ); } model.setArtifactId( artifactId ); repositoryStructureService.call( new RemoteCallback<Boolean>() { @Override public void callback( Boolean isValid ) { if ( isValid ) { view.clearArtifactIdErrorMessage(); } else { view.setArtifactIdErrorMessage( Constants.INSTANCE.InvalidArtifactId() ); } if ( isValid != isArtifactIdValid ) { isArtifactIdValid = isValid; fireEvent(); } } }, new DefaultErrorCallback() ).isValidArtifactId( artifactId ); } @Override public void setConfigureRepository( boolean configureRepository ) { model.setConfigureRepository( configureRepository ); view.setConfigureRepository( configureRepository ); } @Override public void setVersion( String version ) { model.setVersion( version ); view.setVersion( version ); view.clearVersionErrorMessage(); isValidVersion = true; } @Override public void onVersionChange() { String version = view.getVersion(); version = version != null ? version.trim() : null; if ( version != null && !version.equals( view.getVersion() ) ) { view.setVersion( version ); } model.setVersion( version ); repositoryStructureService.call( new RemoteCallback<Boolean>() { @Override public void callback( Boolean isValid ) { if ( isValid ) { view.clearVersionErrorMessage(); } else { view.setVersionErrorMessage( Constants.INSTANCE.InvalidVersion() ); } if ( isValid != isValidVersion ) { isValidVersion = isValid; fireEvent(); } } }, new DefaultErrorCallback() ).isValidVersion( version ); } @Override public void onSingleModuleChange() { model.setMultiModule( !view.isSingleModule() ); } @Override public void onMultiModuleChange() { model.setMultiModule( view.isMultiModule() ); } @Override public void onConfigureRepositoryChange() { model.setConfigureRepository( view.isConfigureRepository() ); } }