/* * Copyright 2012 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.conf; import javax.annotation.PostConstruct; import javax.enterprise.context.Dependent; import javax.enterprise.event.Event; import javax.inject.Inject; import org.guvnor.asset.management.client.editors.common.BaseAssetsMgmtPresenter; import org.guvnor.asset.management.client.editors.common.BaseAssetsMgmtView; import org.guvnor.asset.management.model.RepositoryStructureModel; import org.guvnor.common.services.project.model.POM; import org.guvnor.structure.repositories.Repository; import org.jboss.errai.bus.client.api.messaging.Message; import org.jboss.errai.common.client.api.ErrorCallback; import org.jboss.errai.common.client.api.RemoteCallback; import org.uberfire.client.annotations.WorkbenchPartTitle; import org.uberfire.client.annotations.WorkbenchPartView; import org.uberfire.client.annotations.WorkbenchScreen; import org.uberfire.client.mvp.UberView; import org.uberfire.client.workbench.events.BeforeClosePlaceEvent; import org.uberfire.client.workbench.widgets.common.ErrorPopupPresenter; import org.uberfire.lifecycle.OnOpen; import org.uberfire.lifecycle.OnStartup; import org.uberfire.mvp.PlaceRequest; @Dependent @WorkbenchScreen( identifier = "Repository Configuration" ) public class RepositoryConfigurationPresenter extends BaseAssetsMgmtPresenter { public interface RepositoryConfigurationView extends UberView<RepositoryConfigurationPresenter>, BaseAssetsMgmtView { void setCurrentVersionText( final String text ); void setVersionText( final String text ); } @Inject protected ErrorPopupPresenter errorPopup; @Inject RepositoryConfigurationView view; @Inject private Event<BeforeClosePlaceEvent> closePlaceEvent; @OnStartup public void onStartup( final PlaceRequest place ) { this.place = place; } @WorkbenchPartTitle public String getTitle() { return constants.Repository_Configuration(); } @WorkbenchPartView public UberView<RepositoryConfigurationPresenter> getView() { return view; } public RepositoryConfigurationPresenter() { } @PostConstruct public void init() { baseView = view; } public void loadRepositoryStructure( String repositoryAlias ) { if ( !repositoryAlias.equals( constants.Select_Repository() ) ) { for ( Repository repository : getRepositories() ) { if ( ( repository.getAlias() ).equals( repositoryAlias ) ) { load( repository ); return; } } } } private void load( final Repository repository ) { repositoryStructureServices.call(new RemoteCallback<RepositoryStructureModel>() { @Override public void callback( RepositoryStructureModel model ) { final POM pom = getPom( model ); if ( pom != null ) { // don't include snapshot for branch names view.setCurrentVersionText( pom.getGav().getVersion().replace( "-SNAPSHOT", "" ) ); view.setVersionText( pom.getGav().getVersion().replace( "-SNAPSHOT", "" ) ); } else { view.setCurrentVersionText( constants.No_Project_Structure_Available() ); view.setVersionText( "1.0.0" ); } } } ).load( repository, repository.getDefaultBranch() ); } private POM getPom( final RepositoryStructureModel model ) { if ( model != null && (model.isSingleProject() || model.isMultiModule()) ) { return model.getActivePom(); } return null; } public void configureRepository( String repository, String sourceBranch, String devBranch, String releaseBranch, String version ) { assetManagementServices.call( new RemoteCallback<Long>() { @Override public void callback( Long taskId ) { view.displayNotification( "Repository Configuration Started!" ); } }, new ErrorCallback<Message>() { @Override public boolean error( Message message, Throwable throwable ) { errorPopup.showMessage( "Unexpected error encountered : " + throwable.getMessage() ); return true; } } ).configureRepository( repository, sourceBranch, devBranch, releaseBranch, version ); } @OnOpen public void onOpen() { view.getChooseRepositoryBox().setFocus( true ); } }