/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.dataaccess.datasource.ui.service;
import org.pentaho.platform.dataaccess.datasource.IDatasourceInfo;
import com.google.gwt.core.client.JavaScriptObject;
public class JSDatasourceInfo implements IDatasourceInfo {
private JavaScriptObject jsDatasourceInfo;
public JSDatasourceInfo( JavaScriptObject jsDatasourceInfo ) {
this.jsDatasourceInfo = jsDatasourceInfo;
}
// JSNI methods to get datasource info data.
private final native String getDatasourceName( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.name;
}-*/;
private final native String getDatasourceId( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.id;
}-*/;
private final native String getDatasourceType( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.type;
}-*/;
private final native String getDatasourceDisplayType( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.displayType;
}-*/;
private final native boolean isDatasourceEditable( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.editable;
}-*/;
private final native boolean isDatasourceRemovable( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.removable;
}-*/;
private final native boolean isDatasourceImportable( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.importable;
}-*/;
private final native boolean isDatasourceExportable( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.exportable;
}-*/;
private final native boolean isDatasourceCreatable( JavaScriptObject jsDatasourceInfo ) /*-{
return jsDatasourceInfo.creatable;
}-*/;
@Override
public final String getName() {
return getDatasourceName( this.jsDatasourceInfo );
}
@Override
public final String getId() {
return getDatasourceId( this.jsDatasourceInfo );
}
@Override
public final String getType() {
return getDatasourceType( this.jsDatasourceInfo );
}
@Override
public final boolean isEditable() {
return isDatasourceEditable( this.jsDatasourceInfo );
}
@Override
public final boolean isRemovable() {
return isDatasourceRemovable( this.jsDatasourceInfo );
}
@Override
public final boolean isImportable() {
return isDatasourceImportable( this.jsDatasourceInfo );
}
@Override
public final boolean isExportable() {
return isDatasourceExportable( this.jsDatasourceInfo );
}
@Override
public final boolean isCreatable() {
return isDatasourceCreatable( this.jsDatasourceInfo );
}
@Override
public String getDisplayType() {
String type = null;
try {
type = getDatasourceDisplayType( this.jsDatasourceInfo );
} catch ( Exception e ) {
// no displayType defined, fall back to type
type = getType();
}
return type;
}
}