/*
* 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.datasource.management.client.editor.driver;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import org.jboss.errai.ui.client.local.spi.TranslationService;
import org.kie.workbench.common.screens.datasource.management.client.resources.i18n.DataSourceManagementConstants;
import org.kie.workbench.common.screens.datasource.management.client.validation.ClientValidationService;
import org.kie.workbench.common.screens.datasource.management.model.DriverDef;
import org.uberfire.ext.editor.commons.client.validation.ValidatorCallback;
@Dependent
public class DriverDefEditorHelper {
private TranslationService translationService;
private DriverDef driverDef;
private DriverDefMainPanel mainPanel;
private DriverDefMainPanelView.Handler handler;
private ClientValidationService validationService;
private boolean nameValid = false;
private boolean driverClassValid = false;
private boolean groupIdValid = false;
private boolean artifactIdValid = false;
private boolean versionValid = false;
@Inject
public DriverDefEditorHelper( final TranslationService translationService,
final ClientValidationService validationService ) {
this.translationService = translationService;
this.validationService = validationService;
}
public void init( final DriverDefMainPanel mainPanel ) {
this.mainPanel = mainPanel;
mainPanel.setHandler( new DriverDefMainPanelView.Handler() {
@Override
public void onNameChange() {
DriverDefEditorHelper.this.onNameChange();
}
@Override
public void onDriverClassChange() {
DriverDefEditorHelper.this.onDriverClassChange();
}
@Override
public void onGroupIdChange() {
DriverDefEditorHelper.this.onGroupIdChange();
}
@Override
public void onArtifactIdChange() {
DriverDefEditorHelper.this.onArtifactIdChange();
}
@Override
public void onVersionChange() {
DriverDefEditorHelper.this.onVersionIdChange();
}
} );
}
public void setHandler( final DriverDefMainPanelView.Handler handler ) {
this.handler = handler;
}
public void onNameChange() {
final String newValue = mainPanel.getName().trim();
validationService.isValidDriverName( newValue, new ValidatorCallback() {
@Override
public void onSuccess() {
onNameChange( newValue, true );
}
@Override
public void onFailure() {
onNameChange( newValue, false );
}
} );
}
private void onNameChange( String newValue, boolean isValid ) {
driverDef.setName( newValue );
nameValid = isValid;
if ( !nameValid ) {
mainPanel.setNameErrorMessage(
getMessage( DataSourceManagementConstants.DriverDefEditor_InvalidNameMessage ) );
} else {
mainPanel.clearNameErrorMessage();
}
if ( handler != null ) {
handler.onNameChange();
}
}
public void onDriverClassChange() {
final String newValue = mainPanel.getDriverClass().trim();
validationService.isValidClassName( newValue, new ValidatorCallback() {
@Override
public void onSuccess() {
onDriverClassChange( newValue, true );
}
@Override
public void onFailure() {
onDriverClassChange( newValue, false );
}
} );
}
private void onDriverClassChange( String newValue, boolean isValid ) {
driverDef.setDriverClass( newValue );
driverClassValid = isValid;
if ( !driverClassValid ) {
mainPanel.setDriverClassErrorMessage(
getMessage( DataSourceManagementConstants.DriverDefEditor_InvalidDriverClassMessage ) );
} else {
mainPanel.clearDriverClassErrorMessage();
}
if ( handler != null ) {
handler.onDriverClassChange();
}
}
public void onGroupIdChange() {
final String newValue = mainPanel.getGroupId().trim();
validationService.isValidGroupId( newValue, new ValidatorCallback() {
@Override
public void onSuccess() {
onGroupIdChange( newValue, true );
}
@Override
public void onFailure() {
onGroupIdChange( newValue, false );
}
} );
}
private void onGroupIdChange( String newValue, boolean isValid ) {
driverDef.setGroupId( newValue );
groupIdValid = isValid;
if ( !groupIdValid ) {
mainPanel.setGroupIdErrorMessage(
getMessage( DataSourceManagementConstants.DriverDefEditor_InvalidGroupIdMessage ) );
} else {
mainPanel.clearGroupIdErrorMessage();
}
if ( handler != null ) {
handler.onGroupIdChange();
}
}
public void onArtifactIdChange() {
final String newValue = mainPanel.getArtifactId().trim();
validationService.isValidArtifactId( newValue, new ValidatorCallback() {
@Override
public void onSuccess() {
onArtifactIdChange( newValue, true );
}
@Override
public void onFailure() {
onArtifactIdChange( newValue, false );
}
} );
}
private void onArtifactIdChange( String newValue, boolean isValid ) {
driverDef.setArtifactId( newValue );
artifactIdValid = isValid;
if ( !artifactIdValid ) {
mainPanel.setArtifactIdErrorMessage(
getMessage( DataSourceManagementConstants.DriverDefEditor_InvalidArtifactIdMessage ) );
} else {
mainPanel.clearArtifactIdErrorMessage();
}
if ( handler != null ) {
handler.onArtifactIdChange();
}
}
public void onVersionIdChange() {
final String newValue = mainPanel.getVersion().trim();
validationService.isValidVersionId( newValue, new ValidatorCallback() {
@Override
public void onSuccess() {
onVersionIdChange( newValue, true );
}
@Override
public void onFailure() {
onVersionIdChange( newValue, false );
}
} );
}
private void onVersionIdChange( String newValue, boolean isValid ) {
driverDef.setVersion( newValue );
versionValid = isValid;
if ( !versionValid ) {
mainPanel.setVersionErrorMessage(
getMessage( DataSourceManagementConstants.DriverDefEditor_InvalidVersionMessage ) );
} else {
mainPanel.clearVersionErrorMessage();
}
if ( handler != null ) {
handler.onVersionChange();
}
}
public boolean isNameValid() {
return nameValid;
}
public boolean isDriverClassValid() {
return driverClassValid;
}
public boolean isGroupIdValid() {
return groupIdValid;
}
public boolean isArtifactIdValid() {
return artifactIdValid;
}
public boolean isVersionValid() {
return versionValid;
}
public void setValid( boolean valid ) {
this.nameValid = valid;
this.driverClassValid = valid;
this.groupIdValid = valid;
this.artifactIdValid = valid;
this.versionValid = valid;
}
public void setDriverDef( DriverDef driverDef ) {
this.driverDef = driverDef;
mainPanel.clear();
mainPanel.setName( driverDef.getName() );
mainPanel.setDriverClass( driverDef.getDriverClass() );
mainPanel.setGroupId( driverDef.getGroupId() );
mainPanel.setArtifactId( driverDef.getArtifactId() );
mainPanel.setVersion( driverDef.getVersion() );
}
public String getMessage( String messageKey ) {
return translationService.getTranslation( messageKey );
}
public String getMessage( String messageKey, Object... args ) {
return translationService.format( messageKey, args );
}
}