/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.runtime.client.admin;
import java.io.InputStream;
import org.teiid.adminapi.Admin;
import org.teiid.adminapi.AdminException;
import org.teiid.adminapi.VDB;
import org.teiid.designer.runtime.spi.ITeiidServer;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.designer.runtime.version.spi.TeiidServerVersion.Version;
import org.teiid.runtime.client.admin.v7.Admin7Spec;
import org.teiid.runtime.client.admin.v8.Admin8Spec;
/**
*
*/
public abstract class AdminSpec {
private final ITeiidServerVersion teiidVersion;
/**
* @param teiidVersion
*/
public AdminSpec(ITeiidServerVersion teiidVersion) {
this.teiidVersion = teiidVersion;
}
protected ITeiidServerVersion getTeiidVersion() {
return this.teiidVersion;
}
/**
* Get the instance of the {@link AdminSpec} appropriate to the version
* of the teiid instance.
* <p>
* Note. the teiid version is wrapped since the implementation of the
* version 8 spec caches against the version.
*
* @param teiidVersion
* @return admin spec for specific teiid version
*/
public static AdminSpec getInstance(ITeiidServerVersion teiidVersion) {
if (teiidVersion.isLessThan(Version.TEIID_8_0))
return new Admin7Spec(teiidVersion);
else
return new Admin8Spec(teiidVersion);
}
/**
* @param teiidServer
* @return new admin instance
* @throws AdminException
*/
public abstract Admin createAdmin(ITeiidServer teiidServer) throws AdminException;
/**
* @return test VDB configuration
*/
public abstract String getTestVDB();
/**
* @return the loading status value
*/
public abstract VDB.Status getLoadingVDBStatus();
/**
* @param admin
* @param fileName
* @param iStream
* @throws AdminException
*/
public abstract void deploy(Admin admin, String fileName, InputStream iStream) throws AdminException;
/**
* @param admin
* @param vdbName
* @param version
* @throws AdminException
*/
public abstract void undeploy(Admin admin, String vdbName, String version) throws AdminException;
}