/*
* Copyright 2016 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.kie.workbench.common.screens.server.management.client.widget.config.process;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import org.jboss.errai.ui.client.local.spi.TranslationService;
import org.kie.server.controller.api.model.spec.ContainerSpecKey;
import org.kie.server.controller.api.model.spec.ProcessConfig;
import org.kie.workbench.common.screens.server.management.client.util.ClientMergeMode;
import org.kie.workbench.common.screens.server.management.client.util.ClientRuntimeStrategy;
import org.uberfire.client.mvp.UberView;
import static org.uberfire.commons.validation.PortablePreconditions.*;
@Dependent
public class ProcessConfigPresenter {
public interface View extends UberView<ProcessConfigPresenter> {
void setContent( final String runtimeStrategy,
final String kbase,
final String ksession,
final String mergeMode );
String getKBase();
String getKSession();
String getMergeMode();
String getRuntimeStrategy();
void disable();
void clear();
TranslationService getTranslationService();
String getConfigPageTitle();
}
private final View view;
private ContainerSpecKey containerSpecKey;
private ProcessConfig processConfig;
@Inject
public ProcessConfigPresenter( final View view ) {
this.view = view;
}
@PostConstruct
public void init() {
this.view.init( this );
}
public View getView() {
return view;
}
public void setup( final ContainerSpecKey containerSpecKey,
final ProcessConfig processConfig ) {
this.processConfig = checkNotNull( "processConfig", processConfig );
this.containerSpecKey = checkNotNull( "containerSpecKey", containerSpecKey );
setupView( processConfig );
}
public void clear() {
processConfig = null;
containerSpecKey = null;
view.clear();
}
public void setProcessConfig( final ProcessConfig processConfig ) {
this.processConfig = processConfig;
setupView( processConfig );
}
public ContainerSpecKey getContainerSpecKey() {
return containerSpecKey;
}
public ProcessConfig getProcessConfig() {
return processConfig;
}
private void setupView( final ProcessConfig processConfig ) {
final String runtimeStrategy = ClientRuntimeStrategy.valueOf( processConfig.getRuntimeStrategy() ).getValue( view.getTranslationService() );
final String mergeMode = ClientMergeMode.valueOf( processConfig.getMergeMode() ).getValue( view.getTranslationService() );
this.view.setContent( runtimeStrategy,
processConfig.getKBase(),
processConfig.getKSession(),
mergeMode );
}
public void disable() {
view.disable();
}
public void cancel() {
setupView( this.processConfig );
}
public ProcessConfig buildProcessConfig() {
return new ProcessConfig( ClientRuntimeStrategy.convert( view.getRuntimeStrategy(), view.getTranslationService() ).getRuntimeStrategy().toString(),
view.getKBase(),
view.getKSession(),
ClientMergeMode.convert( view.getMergeMode(), view.getTranslationService() ).getMergeMode().toString() );
}
public List<String> getRuntimeStrategies() {
return ClientRuntimeStrategy.listRuntimeStrategiesValues( view.getTranslationService() );
}
public List<String> getMergeModes() {
return ClientMergeMode.listMergeModeValues( view.getTranslationService() );
}
}