// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dq.indicators; import java.sql.SQLException; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.emf.ecore.EObject; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.cwm.db.connection.ConnectionUtils; import org.talend.cwm.helper.ConnectionHelper; import org.talend.cwm.helper.SwitchHelpers; import org.talend.cwm.management.i18n.Messages; import org.talend.dataquality.helpers.DataqualitySwitchHelper; import org.talend.dataquality.indicators.Indicator; import org.talend.dataquality.indicators.schema.SchemaIndicator; import org.talend.utils.sugars.ReturnCode; import orgomg.cwm.foundation.softwaredeployment.DataProvider; import orgomg.cwm.resource.relational.Catalog; import orgomg.cwm.resource.relational.Schema; /** * DOC scorreia class global comment. Detailled comment */ public class SchemaEvaluator extends AbstractSchemaEvaluator<Schema> { private static Logger log = Logger.getLogger(SchemaEvaluator.class); /* * (non-Javadoc) * * @see org.talend.dq.indicators.AbstractSchemaEvaluator#getDataManager() */ @Override protected Connection getDataManager() { Schema schema = this.getAnalyzedElements().iterator().next(); return schema != null ? ConnectionHelper.getTdDataProvider(schema) : null; } @Override protected ReturnCode executeSqlQuery(String sqlStatement) throws SQLException { ReturnCode ok = new ReturnCode(true); // --- preconditions DataProvider dataProvider = this.getDataManager(); if (this.elementToIndicators.values().isEmpty()) { String msg = Messages.getString("Evaluator.NoInidcator1"); //$NON-NLS-1$ log.error(msg); ok.setReturnCode(msg, false); return ok; } Indicator[] indics = this.getAllIndicators(); if (indics.length == 0) { String msg = Messages.getString("Evaluator.NoInidcator2", dataProvider); //$NON-NLS-1$ log.error(msg); ok.setReturnCode(msg, false); return ok; } for (Indicator indicator : indics) { SchemaIndicator schemaIndicator = DataqualitySwitchHelper.SCHEMA_SWITCH.doSwitch(indicator); if (schemaIndicator == null) { continue; } Schema schema = (Schema) schemaIndicator.getAnalyzedElement(); String catName = schema.getName(); // MOD yyi 2009-11-30 10187 if (!checkSchema(schema)) { ok.setReturnCode(Messages.getString("Evaluator.schemaNotExist", catName), false); //$NON-NLS-1$ return ok; } // ~ // ADD xqliu 2010-01-06 bug 10919 EObject container = schema.eContainer(); if (container != null) { Catalog catalog = SwitchHelpers.CATALOG_SWITCH.doSwitch(container); if (catalog != null) { catName = catalog.getName(); // MOD gdbu 2011-4-21 bug : 20578 if (!ConnectionUtils.isOdbcProgress(connection) && !ConnectionUtils.isOdbcOracle(connection) && StringUtils.isNotEmpty(catName) && dbms().supportCatalogSelection()) { connection.setCatalog(catName); } // ~20578 } } // ~ evalSchemaIndicLow(null, schemaIndicator, null, schema, ok); } return ok; } }