/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* 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.pentaho.di.ui.repository.model;
import java.util.ArrayList;
import java.util.List;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.ui.xul.XulEventSourceAdapter;
public class RepositoriesModel extends XulEventSourceAdapter {
private String username;
private String password;
private boolean showDialogAtStartup;
private List<RepositoryMeta> availableRepositories;
private RepositoryMeta selectedRepository;
public RepositoriesModel() {
super();
availableRepositories = new ArrayList<RepositoryMeta>();
}
public String getUsername() {
return username;
}
public void setUsername( String username ) {
String previousValue = this.username;
this.username = username;
this.firePropertyChange( "username", previousValue, username );
checkIfModelValid();
}
public String getPassword() {
return password;
}
public void setPassword( String password ) {
String previousValue = this.password;
this.password = password;
this.firePropertyChange( "password", previousValue, password );
}
public boolean isShowDialogAtStartup() {
return showDialogAtStartup;
}
public void setShowDialogAtStartup( boolean showDialogAtStartup ) {
boolean previousValue = this.showDialogAtStartup;
this.showDialogAtStartup = showDialogAtStartup;
this.firePropertyChange( "showDialogAtStartup", previousValue, showDialogAtStartup );
}
public List<RepositoryMeta> getAvailableRepositories() {
return availableRepositories;
}
public void setAvailableRepositories( List<RepositoryMeta> repositoryList ) {
List<RepositoryMeta> previousValue = new ArrayList<RepositoryMeta>();
previousValue.addAll( this.availableRepositories );
this.availableRepositories = repositoryList;
this.firePropertyChange( "availableRepositories", previousValue, repositoryList );
}
public void addToAvailableRepositories( RepositoryMeta meta ) {
List<RepositoryMeta> previousValue = new ArrayList<RepositoryMeta>();
previousValue.addAll( this.availableRepositories );
this.availableRepositories.add( meta );
this.firePropertyChange( "availableRepositories", previousValue, this.availableRepositories );
}
public void removeFromAvailableRepositories( RepositoryMeta meta ) {
List<RepositoryMeta> previousValue = new ArrayList<RepositoryMeta>();
previousValue.addAll( this.availableRepositories );
this.availableRepositories.remove( meta );
this.firePropertyChange( "availableRepositories", previousValue, this.availableRepositories );
}
public void clear() {
setUsername( null );
setPassword( null );
setShowDialogAtStartup( true );
setAvailableRepositories( null );
}
public void setSelectedRepositoryUsingName( String repositoryName ) {
setSelectedRepository( getRepository( repositoryName ) );
}
public void setSelectedRepository( RepositoryMeta selectedRepository ) {
RepositoryMeta previousValue = this.selectedRepository;
this.selectedRepository = selectedRepository;
this.firePropertyChange( "selectedRepository", previousValue, selectedRepository );
checkIfModelValid();
}
public RepositoryMeta getSelectedRepository() {
return selectedRepository;
}
public RepositoryMeta getRepository( String repositoryName ) {
if ( availableRepositories != null && availableRepositories.size() > 0 ) {
for ( RepositoryMeta meta : availableRepositories ) {
if ( meta != null && meta.getName().equals( repositoryName ) ) {
return meta;
}
}
}
return null;
}
public int getRepositoryIndex( RepositoryMeta repositoryMeta ) {
int index = 0;
if ( repositoryMeta != null && availableRepositories != null && availableRepositories.size() > 0 ) {
for ( RepositoryMeta meta : availableRepositories ) {
if ( meta != null && meta.getName().equals( repositoryMeta.getName() ) ) {
break;
} else {
index++;
}
}
} else {
index = -1;
}
return index;
}
public RepositoryMeta getRepository( int index ) {
return availableRepositories.get( index );
}
public void checkIfModelValid() {
this.firePropertyChange( "valid", null, isValid() );
}
public boolean isValid() {
return username != null && username.length() > 0 && selectedRepository != null;
}
}