package org.basex.api.xqj;
import static org.basex.api.xqj.BXQText.*;
import java.nio.charset.Charset;
import java.util.Set;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQMetaData;
import org.basex.core.Prop;
/**
* Java XQuery API - Meta Data.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
final class BXQMetaData extends BXQAbstract implements XQMetaData {
/**
* Constructor.
* @param c close reference
*/
public BXQMetaData(final BXQAbstract c) {
super(c);
}
@Override
public int getMaxExpressionLength() throws XQException {
opened();
return Integer.MAX_VALUE;
}
@Override
public int getMaxUserNameLength() throws XQException {
opened();
return Integer.MAX_VALUE;
}
@Override
public int getProductMajorVersion() throws XQException {
opened();
return version(Prop.VERSION, true);
}
@Override
public int getProductMinorVersion() throws XQException {
opened();
return version(Prop.VERSION, false);
}
@Override
public String getProductName() throws XQException {
opened();
return Prop.NAME;
}
@Override
public String getProductVersion() throws XQException {
opened();
return Prop.VERSION;
}
@Override
public Set<String> getSupportedXQueryEncodings() throws XQException {
opened();
return Charset.availableCharsets().keySet();
}
@Override
public String getUserName() throws XQException {
opened();
return null;
}
@Override
public int getXQJMajorVersion() throws XQException {
opened();
return version(VERSION, true);
}
@Override
public int getXQJMinorVersion() throws XQException {
opened();
return version(VERSION, false);
}
@Override
public String getXQJVersion() throws XQException {
opened();
return VERSION;
}
@Override
public boolean isFullAxisFeatureSupported() throws XQException {
opened();
return true;
}
@Override
public boolean isModuleFeatureSupported() throws XQException {
opened();
return true;
}
@Override
public boolean isReadOnly() throws XQException {
opened();
return false;
}
@Override
public boolean isSchemaImportFeatureSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isSchemaValidationFeatureSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isSerializationFeatureSupported() throws XQException {
opened();
return true;
}
@Override
public boolean isStaticTypingExtensionsSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isStaticTypingFeatureSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isTransactionSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isUserDefinedXMLSchemaTypeSupported() throws XQException {
opened();
return false;
}
@Override
public boolean isXQueryEncodingDeclSupported() throws XQException {
opened();
return true;
}
@Override
public boolean isXQueryEncodingSupported(final String encoding)
throws XQException {
opened();
return true;
}
@Override
public boolean isXQueryXSupported() throws XQException {
opened();
return false;
}
@Override
public boolean wasCreatedFromJDBCConnection() throws XQException {
opened();
return false;
}
/**
* Returns the pre- or suffix of the specified version.
* @param t input version
* @param pre flag
* @return pre or suffix
*/
private static int version(final String t, final boolean pre) {
return Integer.parseInt(t.replaceAll(pre ? ".*\\.| .*" : "\\..*", ""));
}
}