/*
* Copyright (c) 2016 wetransform GmbH
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* wetransform GmbH <http://www.wetransform.to>
*/
package eu.esdihumboldt.hale.io.jdbc.msaccess;
import java.util.regex.Pattern;
import eu.esdihumboldt.hale.io.jdbc.extension.JDBCSchemaReaderAdvisor;
import schemacrawler.schemacrawler.InclusionRule;
import schemacrawler.schemacrawler.SchemaCrawlerOptions;
/**
* SchemaReader Advisor for MS Access Database
*
* @author Arun
*/
public class MsAccessSchemaReaderAdvisor implements JDBCSchemaReaderAdvisor {
@Override
public String adaptPathForNamespace(String path) {
if (path == null) {
return null;
}
// extract file name from path
int index = path.lastIndexOf("/");
String name;
if (index >= 0 && index + 1 < path.length()) {
name = path.substring(index + 1).toLowerCase();
}
else {
name = path.toLowerCase();
}
// remove extension
if (name.endsWith(".mdb")) {
name = name.replace(".mdb", "");
}
return name;
}
@Override
public void configureSchemaCrawler(SchemaCrawlerOptions options) {
options.setTableInclusionRule(new InclusionRule() {
private static final long serialVersionUID = -1559715487368953641L;
@Override
public boolean test(String t) {
// pattern for UCA_METADATA tables.
final Pattern uca_metadata_TablePattern = Pattern.compile("\\w*.UCA_METADATA.\\w*");
// pattern for SYS tables.
final Pattern sys_TablePattern = Pattern.compile("\\w*.SYS.\\w*");
boolean isuca_metadata_Table = uca_metadata_TablePattern.matcher(t).matches();
if (isuca_metadata_Table) {
return false;
}
boolean isSys_Table = sys_TablePattern.matcher(t).matches();
if (isSys_Table) {
return false;
}
return true;
}
});
}
}