package org.teiid.runtime.client.admin; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import org.teiid.adminapi.Model; import org.teiid.adminapi.VDB; import org.teiid.adminapi.impl.VDBMetaData; import org.teiid.core.util.ArgCheck; import org.teiid.designer.runtime.spi.ITeiidServer; import org.teiid.designer.runtime.spi.ITeiidVdb; /** * @since 8.0 */ public class TeiidVdb implements ITeiidVdb, Comparable<TeiidVdb> { private static final String PREVIEW = "preview"; //$NON-NLS-1$ private final VDB vdb; private final ITeiidServer teiidServer; private final boolean isPreview; private final boolean isDdlFileVdb; private final boolean isDynamic; public TeiidVdb( VDB vdb, ITeiidServer teiidServer ) { ArgCheck.isNotNull(vdb, "vdb"); //$NON-NLS-1$ ArgCheck.isNotNull(teiidServer, "teiidServer"); //$NON-NLS-1$ this.vdb = vdb; this.teiidServer = teiidServer; isPreview = Boolean.parseBoolean(vdb.getProperties().getProperty(PREVIEW)); isDynamic = ((VDBMetaData)vdb).isXmlDeployment(); boolean ddlFileResult = false; if( !isDynamic ) { for( Model mod : this.vdb.getModels()) { String schemaText = mod.getSchemaText(); if( schemaText != null ) { ddlFileResult = true; break; } } } isDdlFileVdb = ddlFileResult; } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#compareTo(org.teiid.designer.runtime.impl.TeiidVdb) */ @Override public int compareTo( TeiidVdb vdb ) { ArgCheck.isNotNull(vdb, "vdb"); //$NON-NLS-1$ return getName().compareTo(vdb.getName()); } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#equals(java.lang.Object) */ @Override public boolean equals( Object obj ) { if (obj == null) return false; if (obj.getClass() != getClass()) return false; ITeiidVdb other = (ITeiidVdb)obj; if (getName().equals(other.getName())) return true; return false; } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.getName() == null) ? 0 : this.getName().hashCode()); return result; } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#getName() */ @Override public String getName() { return this.vdb.getName(); } @Override public String getDeployedName() { return getName(); } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#getVersion() */ @Override public String getVersion() { return this.vdb.getVersion(); } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#isPreviewVdb() */ @Override public boolean isPreviewVdb() { return isPreview; } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#isDynamicVdb() */ @Override public boolean isDynamicVdb() { return isDynamic; } /* (non-Javadoc) * @see org.teiid.designer.runtime.impl.ITeiidVdb#isDdlFileVdb() */ @Override public boolean isDdlFileVdb() { return isDdlFileVdb; } @Override public boolean isActive() { return vdb.getStatus().equals(VDB.Status.ACTIVE); } @Override public boolean isLoading() { return vdb.getStatus().equals(VDB.Status.LOADING); } @Override public boolean hasFailed() { return vdb.getStatus().equals(VDB.Status.FAILED); } @Override public boolean wasRemoved() { return vdb.getStatus().equals(VDB.Status.REMOVED); } @Override public List<String> getValidityErrors() { List<String> errors = vdb.getValidityErrors(); if (errors != null) return Collections.unmodifiableList(errors); return Collections.emptyList(); } @Override public boolean hasModels() { return !vdb.getModels().isEmpty(); } @Override public String getManifest() { VdbManifestGenerator generator = new VdbManifestGenerator(this.teiidServer, ((VDBMetaData)vdb)); return generator.getManifest(); } @Override public Collection<String> getModelNames() { if (! hasModels()) return Collections.emptyList(); List<String> names = new ArrayList<String>(); for (Model model : vdb.getModels()) { names.add(model.getName()); } return names; } @Override public String getPropertyValue(String key) { return vdb.getPropertyValue(key); } }