// ============================================================================
//
// 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.writer;
import static org.junit.Assert.assertTrue;
import junit.framework.Assert;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.ITDQItemService;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.dataquality.analysis.Analysis;
import org.talend.dataquality.analysis.AnalysisContext;
import org.talend.dataquality.analysis.AnalysisFactory;
import org.talend.dataquality.analysis.AnalysisResult;
import org.talend.dataquality.domain.pattern.Pattern;
import org.talend.dataquality.domain.pattern.PatternFactory;
import org.talend.dataquality.indicators.definition.DefinitionFactory;
import org.talend.dataquality.indicators.definition.IndicatorDefinition;
import org.talend.dataquality.indicators.sql.IndicatorSqlFactory;
import org.talend.dataquality.indicators.sql.WhereRuleIndicator;
import org.talend.dataquality.properties.PropertiesFactory;
import org.talend.dataquality.properties.TDQAnalysisItem;
import org.talend.dataquality.properties.TDQBusinessRuleItem;
import org.talend.dataquality.properties.TDQIndicatorDefinitionItem;
import org.talend.dataquality.properties.TDQPatternItem;
import org.talend.dataquality.properties.TDQReportItem;
import org.talend.dataquality.reports.ReportsFactory;
import org.talend.dataquality.reports.TdReport;
import org.talend.dataquality.rules.DQRule;
import org.talend.dataquality.rules.ParserRule;
import org.talend.dataquality.rules.RulesFactory;
import org.talend.dataquality.rules.WhereRule;
import org.talend.dq.helper.UnitTestBuildHelper;
import org.talend.dq.writer.impl.AnalysisWriter;
import org.talend.dq.writer.impl.DQRuleWriter;
import org.talend.dq.writer.impl.ElementWriterFactory;
import org.talend.dq.writer.impl.IndicatorDefinitionWriter;
import org.talend.dq.writer.impl.PatternWriter;
import org.talend.dq.writer.impl.ReportWriter;
import org.talend.utils.sugars.ReturnCode;
import orgomg.cwmx.analysis.informationreporting.InformationreportingFactory;
import orgomg.cwmx.analysis.informationreporting.Report;
/**
* created by xqliu on Jul 23, 2013 Detailled comment
*
*/
public class AElementPersistanceRealTest {
@Before
public void setUp() throws Exception {
System.setProperty("studio.version", "6.3");
UnitTestBuildHelper.initProjectStructure();
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQItemService.class)) {
ITDQItemService tdqService = (ITDQItemService) GlobalServiceRegister.getDefault().getService(ITDQItemService.class);
tdqService.createDQStructor();
}
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemAnalysis() {
AnalysisWriter createAnalysisWrite = ElementWriterFactory.getInstance().createAnalysisWrite();
// test normal name
String anaName = "ana1"; //$NON-NLS-1$
String exceptedFileName = anaName + "_0.1.ana"; //$NON-NLS-1$
Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
createAnalysis.setName(anaName);
Item createItem = createAnalysisWrite.createItem(createAnalysis);
assertTrue(createItem instanceof TDQAnalysisItem);
TDQAnalysisItem analysisItem = (TDQAnalysisItem) createItem;
assertTrue(analysisItem.getFilename().equals(exceptedFileName));
// test special name
String anaNameWithSpecialChar = "ana1~!`"; //$NON-NLS-1$
String exceptedFileName2 = "ana1____0.1.ana"; //$NON-NLS-1$
Analysis createAnalysis2 = AnalysisFactory.eINSTANCE.createAnalysis();
createAnalysis2.setName(anaNameWithSpecialChar);
Item createItem2 = createAnalysisWrite.createItem(createAnalysis2);
assertTrue(createItem2 instanceof TDQAnalysisItem);
TDQAnalysisItem analysisItem2 = (TDQAnalysisItem) createItem2;
assertTrue(analysisItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemReport() {
ReportWriter createReportWriter = ElementWriterFactory.getInstance().createReportWriter();
// test normal name
String repName = "rep1"; //$NON-NLS-1$
String exceptedFileName = repName + "_0.1.rep"; //$NON-NLS-1$
Report createReport = InformationreportingFactory.eINSTANCE.createReport();
createReport.setName(repName);
Item createItem = createReportWriter.createItem(createReport);
assertTrue(createItem instanceof TDQReportItem);
TDQReportItem reportItem = (TDQReportItem) createItem;
assertTrue(reportItem.getFilename().equals(exceptedFileName));
// test special name
String repName2 = "rep1#^&"; //$NON-NLS-1$
String exceptedFileName2 = "rep1____0.1.rep"; //$NON-NLS-1$
Report createReport2 = InformationreportingFactory.eINSTANCE.createReport();
createReport2.setName(repName2);
Item createItem2 = createReportWriter.createItem(createReport2);
assertTrue(createItem2 instanceof TDQReportItem);
TDQReportItem reportItem2 = (TDQReportItem) createItem2;
assertTrue(reportItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemWhereRule() {
DQRuleWriter createdRuleWriter = ElementWriterFactory.getInstance().createdRuleWriter();
// test normal name
String whereRuleName = "whereRule1"; //$NON-NLS-1$
String exceptedFileName = whereRuleName + "_0.1.rules"; //$NON-NLS-1$
WhereRule createWhereRule = RulesFactory.eINSTANCE.createWhereRule();
createWhereRule.setName(whereRuleName);
Item createItem = createdRuleWriter.createItem(createWhereRule);
assertTrue(createItem instanceof TDQBusinessRuleItem);
TDQBusinessRuleItem ruleItem = (TDQBusinessRuleItem) createItem;
assertTrue(ruleItem.getFilename().equals(exceptedFileName));
// test special name
String whereRuleName2 = "whereRule1*\\/?"; //$NON-NLS-1$
String exceptedFileName2 = "whereRule1_____0.1.rules"; //$NON-NLS-1$
WhereRule createWhereRule2 = RulesFactory.eINSTANCE.createWhereRule();
createWhereRule2.setName(whereRuleName2);
Item createItem2 = createdRuleWriter.createItem(createWhereRule2);
assertTrue(createItem2 instanceof TDQBusinessRuleItem);
TDQBusinessRuleItem ruleItem2 = (TDQBusinessRuleItem) createItem2;
assertTrue(ruleItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemParserRule() {
DQRuleWriter createdRuleWriter = ElementWriterFactory.getInstance().createdRuleWriter();
// test normal name
String parserRuleName = "parserRule1"; //$NON-NLS-1$
String exceptedFileName = parserRuleName + "_0.1.rules"; //$NON-NLS-1$
ParserRule createParserRule = RulesFactory.eINSTANCE.createParserRule();
createParserRule.setName(parserRuleName);
Item createItem = createdRuleWriter.createItem(createParserRule);
assertTrue(createItem instanceof TDQBusinessRuleItem);
TDQBusinessRuleItem ruleItem = (TDQBusinessRuleItem) createItem;
assertTrue(ruleItem.getFilename().equals(exceptedFileName));
// test special name
String parserRuleName2 = "parserRule1:;\"."; //$NON-NLS-1$
String exceptedFileName2 = "parserRule1_____0.1.rules"; //$NON-NLS-1$
ParserRule createParserRule2 = RulesFactory.eINSTANCE.createParserRule();
createParserRule2.setName(parserRuleName2);
Item createItem2 = createdRuleWriter.createItem(createParserRule2);
assertTrue(createItem2 instanceof TDQBusinessRuleItem);
TDQBusinessRuleItem ruleItem2 = (TDQBusinessRuleItem) createItem2;
assertTrue(ruleItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemPattern() {
PatternWriter createPatternWriter = ElementWriterFactory.getInstance().createPatternWriter();
// test normal name
String patternName = "pattern1"; //$NON-NLS-1$
String exceptedFileName = patternName + "_0.1.pattern"; //$NON-NLS-1$
Pattern createPattern = PatternFactory.eINSTANCE.createPattern();
createPattern.setName(patternName);
Item createItem = createPatternWriter.createItem(createPattern);
assertTrue(createItem instanceof TDQPatternItem);
TDQPatternItem patternItem = (TDQPatternItem) createItem;
assertTrue(patternItem.getFilename().equals(exceptedFileName));
// test special name
String patternName2 = "pattern1(),。"; //$NON-NLS-1$
String exceptedFileName2 = "pattern1_____0.1.pattern"; //$NON-NLS-1$
Pattern createPattern2 = PatternFactory.eINSTANCE.createPattern();
createPattern2.setName(patternName2);
Item createItem2 = createPatternWriter.createItem(createPattern2);
assertTrue(createItem2 instanceof TDQPatternItem);
TDQPatternItem patternItem2 = (TDQPatternItem) createItem2;
assertTrue(patternItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#createItem(orgomg.cwm.objectmodel.core.ModelElement)}.
*/
@Test
public void testCreateItemIndicatorDefinition() {
IndicatorDefinitionWriter createIndicatorDefinitionWriter = ElementWriterFactory.getInstance()
.createIndicatorDefinitionWriter();
// test normal name
String indDefName = "indDef1"; //$NON-NLS-1$
String exceptedFileName = indDefName + "_0.1.definition"; //$NON-NLS-1$
IndicatorDefinition createIndicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition();
createIndicatorDefinition.setName(indDefName);
Item createItem = createIndicatorDefinitionWriter.createItem(createIndicatorDefinition);
assertTrue(createItem instanceof TDQIndicatorDefinitionItem);
TDQIndicatorDefinitionItem indDefItem = (TDQIndicatorDefinitionItem) createItem;
assertTrue(indDefItem.getFilename().equals(exceptedFileName));
// test special name
String indDefName2 = "indDef1'¥‘”、《,》<> "; //$NON-NLS-1$
String exceptedFileName2 = "indDef1____________0.1.definition"; //$NON-NLS-1$
IndicatorDefinition createIndicatorDefinition2 = DefinitionFactory.eINSTANCE.createIndicatorDefinition();
createIndicatorDefinition2.setName(indDefName2);
Item createItem2 = createIndicatorDefinitionWriter.createItem(createIndicatorDefinition2);
assertTrue(createItem2 instanceof TDQIndicatorDefinitionItem);
TDQIndicatorDefinitionItem indDefItem2 = (TDQIndicatorDefinitionItem) createItem2;
assertTrue(indDefItem2.getFilename().equals(exceptedFileName2));
}
/**
* Test method for {@link org.talend.dq.writer.AElementPersistance#save(Item, boolean)}.
*
* @throws PersistenceException
*
* case1: between UDI and analysis
*/
@Ignore
@Test
public void testSaveAnalysisCase1() throws PersistenceException {
// AnalysisWriter createAnalysisWriter = ElementWriterFactory.getInstance().createAnalysisWrite();
// // create analysis
// Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
// AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
// AnalysisContext createAnalysisContext = AnalysisFactory.eINSTANCE.createAnalysisContext();
// createAnalysis.setResults(createAnalysisResult);
// createAnalysis.setContext(createAnalysisContext);
// createAnalysis.setName("AElementPersistanceRealTestanalysis1"); //$NON-NLS-1$
//
// // create analysis item
// TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
// createTDQAnalysisItem.setAnalysis(createAnalysis);
// Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis1"); //$NON-NLS-1$
// createTDQAnalysisItem.setProperty(createAnalysisProperty);
// createAnalysisProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
//
// // create UDI
// UserDefIndicator createUserDefIndicator = IndicatorSqlFactory.eINSTANCE.createUserDefIndicator();
// createAnalysisResult.getIndicators().add(createUserDefIndicator);
//
// // create definition
// UDIndicatorDefinition createUDIndicatorDefinition = UserdefineFactory.eINSTANCE.createUDIndicatorDefinition();
// createUserDefIndicator.setIndicatorDefinition(createUDIndicatorDefinition);
// createAnalysisResult.getIndicators().add(createUserDefIndicator);
// TDQIndicatorDefinitionItem createTDQIndicatorDefinitionItem = PropertiesFactory.eINSTANCE
// .createTDQIndicatorDefinitionItem();
// createTDQIndicatorDefinitionItem.setIndicatorDefinition(createUDIndicatorDefinition);
// Property createProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createProperty.setLabel("AElementPersistanceRealTestUDIIndicatorDefinition1"); //$NON-NLS-1$
// createTDQIndicatorDefinitionItem.setProperty(createProperty);
// createProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQIndicatorDefinitionItem,
// new Path(ERepositoryObjectType.TDQ_USERDEFINE_INDICATORS.getFolder()).removeFirstSegments(2), false);
// // case add dependency
// ReturnCode save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
//
// Assert.assertEquals(1, createAnalysis.getClientDependency().size());
// Assert.assertEquals(1, createUDIndicatorDefinition.getSupplierDependency().size());
// Assert.assertEquals(1, createUDIndicatorDefinition.getSupplierDependency().get(0).getClient().size());
// // case remove dependency
// createAnalysisResult.getIndicators().remove(createUserDefIndicator);
// save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
//
// Assert.assertEquals(0, createAnalysis.getClientDependency().size());
//
// Assert.assertEquals(1, createUDIndicatorDefinition.getSupplierDependency().size());
// Assert.assertEquals(0, createUDIndicatorDefinition.getSupplierDependency().get(0).getClient().size());
}
/**
* Test method for {@link org.talend.dq.writer.AElementPersistance#save(Item, boolean)}.
*
* @throws PersistenceException
*
* case2: between Pattern and analysis
*/
@Ignore
@Test
public void testSaveAnalysisCase2() throws PersistenceException {
// AnalysisWriter createAnalysisWriter = ElementWriterFactory.getInstance().createAnalysisWrite();
// // create analysis
// Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
// AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
// AnalysisContext createAnalysisContext = AnalysisFactory.eINSTANCE.createAnalysisContext();
// createAnalysis.setResults(createAnalysisResult);
// createAnalysis.setContext(createAnalysisContext);
// createAnalysis.setName("AElementPersistanceRealTestanalysis2"); //$NON-NLS-1$
//
// // create analysis item
// TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
// createTDQAnalysisItem.setAnalysis(createAnalysis);
// Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis2"); //$NON-NLS-1$
// createTDQAnalysisItem.setProperty(createAnalysisProperty);
// createAnalysisProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
//
// // create pattern match indicator
// RegexpMatchingIndicator regexMatchingIndicator = IndicatorsFactory.eINSTANCE.createRegexpMatchingIndicator();
//
// // create pattern parameter
// IndicatorParameters createIndicatorParameters = IndicatorsFactory.eINSTANCE.createIndicatorParameters();
// regexMatchingIndicator.setParameters(createIndicatorParameters);
//
// // create definition
// IndicatorDefinition createIndicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition();
// regexMatchingIndicator.setIndicatorDefinition(createIndicatorDefinition);
// TDQIndicatorDefinitionItem createTDQIndicatorDefinitionItem = PropertiesFactory.eINSTANCE
// .createTDQIndicatorDefinitionItem();
// createTDQIndicatorDefinitionItem.setIndicatorDefinition(createIndicatorDefinition);
// Property createProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createProperty.setLabel("AElementPersistanceRealTestUDIIndicatorDefinition2"); //$NON-NLS-1$
// createTDQIndicatorDefinitionItem.setProperty(createProperty);
// createProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQIndicatorDefinitionItem, Path.EMPTY, false);
//
// // create pattern
// Pattern pattern = PatternFactory.eINSTANCE.createPattern();
// createAnalysisResult.getIndicators().add(regexMatchingIndicator);
// TDQPatternItem createTDQPatternItem = PropertiesFactory.eINSTANCE.createTDQPatternItem();
// createTDQPatternItem.setPattern(pattern);
// Property createPatternProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createPatternProperty.setLabel("AElementPersistanceRealTestpattern2"); //$NON-NLS-1$
// createTDQPatternItem.setProperty(createPatternProperty);
// createPatternProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQPatternItem,
// new Path(ERepositoryObjectType.TDQ_PATTERN_REGEX.getFolder()).removeFirstSegments(2), false);
//
// // create Domain
// Domain createDomain = DomainFactory.eINSTANCE.createDomain();
// createIndicatorParameters.setDataValidDomain(createDomain);
// createIndicatorParameters.getDataValidDomain().getPatterns().add(pattern);
// // case add dependency
// ReturnCode save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
// Assert.assertEquals(1, createAnalysis.getClientDependency().size());
//
// Assert.assertEquals(1, pattern.getSupplierDependency().size());
// Assert.assertEquals(1, pattern.getSupplierDependency().get(0).getClient().size());
// // case remove dependency
// createAnalysisResult.getIndicators().remove(regexMatchingIndicator);
// save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
//
// Assert.assertEquals(0, createAnalysis.getClientDependency().size());
//
// Assert.assertEquals(1, pattern.getSupplierDependency().size());
// Assert.assertEquals(0, pattern.getSupplierDependency().get(0).getClient().size());
}
/**
* Test method for {@link org.talend.dq.writer.AElementPersistance#save(Item, boolean)}.
*
* @throws PersistenceException
*
* case3: between Rule and analysis
*/
@Ignore
@Test
public void testSaveAnalysisCase3() throws PersistenceException {
// AnalysisWriter createAnalysisWriter = ElementWriterFactory.getInstance().createAnalysisWrite();
// // create analysis
// Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
// AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
// AnalysisContext createAnalysisContext = AnalysisFactory.eINSTANCE.createAnalysisContext();
// createAnalysis.setResults(createAnalysisResult);
// createAnalysis.setContext(createAnalysisContext);
// createAnalysis.setName("AElementPersistanceRealTestanalysis3"); //$NON-NLS-1$
//
// // create analysis item
// TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
// createTDQAnalysisItem.setAnalysis(createAnalysis);
// Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis3"); //$NON-NLS-1$
// createTDQAnalysisItem.setProperty(createAnalysisProperty);
// createAnalysisProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
//
// // create pattern match indicator
// WhereRuleIndicator whereRuleIndicator = IndicatorSqlFactory.eINSTANCE.createWhereRuleIndicator();
// // create definition
//
// createAnalysisResult.getIndicators().add(whereRuleIndicator);
// DQRule dqRule = RulesFactory.eINSTANCE.createWhereRule();
// whereRuleIndicator.setIndicatorDefinition(dqRule);
// TDQBusinessRuleItem createTDQBusinessRuleItem = PropertiesFactory.eINSTANCE.createTDQBusinessRuleItem();
// createTDQBusinessRuleItem.setDqrule(dqRule);
// Property createPatternProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createPatternProperty.setLabel("AElementPersistanceRealTestDQRule3"); //$NON-NLS-1$
// createTDQBusinessRuleItem.setProperty(createPatternProperty);
// createPatternProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQBusinessRuleItem, Path.EMPTY, false);
//
// // case add dependency
// ReturnCode save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
// Assert.assertEquals(1, createAnalysis.getClientDependency().size());
//
// Assert.assertEquals(1, dqRule.getSupplierDependency().size());
// Assert.assertEquals(1, dqRule.getSupplierDependency().get(0).getClient().size());
// // case remove dependency
// createAnalysisResult.getIndicators().remove(whereRuleIndicator);
// save = createAnalysisWriter.save(createTDQAnalysisItem, true);
// Assert.assertTrue(save.isOk());
//
// Assert.assertEquals(0, createAnalysis.getClientDependency().size());
//
// Assert.assertEquals(1, dqRule.getSupplierDependency().size());
// Assert.assertEquals(0, dqRule.getSupplierDependency().get(0).getClient().size());
}
/**
* Test method for {@link org.talend.dq.writer.AElementPersistance#save(Item, boolean)}.
*
* @throws PersistenceException
*
* case1: between analysis and report
*/
@Ignore
@Test
public void testSaveReportCase1() throws PersistenceException {
// ReportWriter createReportWriter = ElementWriterFactory.getInstance().createReportWriter();
// // create analysis
// Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
// AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
// createAnalysis.setResults(createAnalysisResult);
// createAnalysis.setName("AElementPersistanceRealTestanalysis4"); //$NON-NLS-1$
//
// // create analysis item
// TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
// createTDQAnalysisItem.setAnalysis(createAnalysis);
// Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis4"); //$NON-NLS-1$
// createAnalysisProperty.setId(EcoreUtil.generateUUID());
// createTDQAnalysisItem.setProperty(createAnalysisProperty);
// ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
//
// // create report
// TdReport createTdReport = ReportsFactory.eINSTANCE.createTdReport();
// TDQReportItem createTDQReportItem = PropertiesFactory.eINSTANCE.createTDQReportItem();
// createTDQReportItem.setReport(createTdReport);
// Property createReportProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
// createReportProperty.setLabel("AElementPersistanceRealTestreport4"); //$NON-NLS-1$
// createTDQReportItem.setProperty(createReportProperty);
// createReportProperty.setId(EcoreUtil.generateUUID());
// ProxyRepositoryFactory.getInstance().create(createTDQReportItem, Path.EMPTY, false);
// createTdReport.addAnalysis(createAnalysis);
//
// // case add dependency
// ReturnCode save = createReportWriter.save(createTDQReportItem, true);
// Assert.assertTrue(save.isOk());
// Assert.assertEquals(1, createTdReport.getClientDependency().size());
//
// Assert.assertEquals(1, createAnalysis.getSupplierDependency().size());
// Assert.assertEquals(1, createAnalysis.getSupplierDependency().get(0).getClient().size());
// // case remove dependency
// createTdReport.removeAnalysis(createAnalysis);
// save = createReportWriter.save(createTDQReportItem, true);
// Assert.assertTrue(save.isOk());
//
// Assert.assertEquals(0, createTdReport.getClientDependency().size());
//
// Assert.assertEquals(1, createAnalysis.getSupplierDependency().size());
// Assert.assertEquals(0, createAnalysis.getSupplierDependency().get(0).getClient().size());
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#saveWithDependencies(org.talend.core.model.properties.Item, orgomg.cwm.objectmodel.core.ModelElement)}
* .
*
* @throws PersistenceException
*/
@Test
public void testSaveWithDependenciesAnalysis() throws PersistenceException {
AnalysisWriter createAnalysisWriter = ElementWriterFactory.getInstance().createAnalysisWrite();
String anaName = "AElementPersistanceRealTestanalysis5";
// create analysis
Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
AnalysisContext createAnalysisContext = AnalysisFactory.eINSTANCE.createAnalysisContext();
createAnalysis.setResults(createAnalysisResult);
createAnalysis.setContext(createAnalysisContext);
createAnalysis.setName(anaName);
// create analysis item
TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
createTDQAnalysisItem.setAnalysis(createAnalysis);
Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis5"); //$NON-NLS-1$
createTDQAnalysisItem.setProperty(createAnalysisProperty);
createAnalysisProperty.setId(EcoreUtil.generateUUID());
ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
// create pattern match indicator
WhereRuleIndicator whereRuleIndicator = IndicatorSqlFactory.eINSTANCE.createWhereRuleIndicator();
// create definition
createAnalysisResult.getIndicators().add(whereRuleIndicator);
DQRule dqRule = RulesFactory.eINSTANCE.createWhereRule();
whereRuleIndicator.setIndicatorDefinition(dqRule);
TDQBusinessRuleItem createTDQBusinessRuleItem = PropertiesFactory.eINSTANCE.createTDQBusinessRuleItem();
createTDQBusinessRuleItem.setDqrule(dqRule);
Property createPatternProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
createPatternProperty.setLabel("AElementPersistanceRealTestDQRule5"); //$NON-NLS-1$
createTDQBusinessRuleItem.setProperty(createPatternProperty);
createPatternProperty.setId(EcoreUtil.generateUUID());
ProxyRepositoryFactory.getInstance().create(createTDQBusinessRuleItem, Path.EMPTY, false);
String exceptedFileName = anaName + "_0.1.ana"; //$NON-NLS-1$
ReturnCode create = createAnalysisWriter.saveWithDependencies(createTDQAnalysisItem, createAnalysis);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName, createTDQAnalysisItem.getFilename());
String anaName2 = "ana52"; //$NON-NLS-1$
String exceptedFileName2 = anaName2 + "_0.1.ana"; //$NON-NLS-1$
createAnalysis.setName(anaName2);
create = createAnalysisWriter.saveWithDependencies(createTDQAnalysisItem, createAnalysis);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName2, createTDQAnalysisItem.getFilename());
}
/**
* Test method for
* {@link org.talend.dq.writer.AElementPersistance#saveWithoutDependencies(org.talend.core.model.properties.Item, orgomg.cwm.objectmodel.core.ModelElement)}
* .
*
* @throws PersistenceException
*/
@Test
public void testSaveWithoutDependenciesReport() throws PersistenceException {
ReportWriter createReportWriter = ElementWriterFactory.getInstance().createReportWriter();
// create analysis
Analysis createAnalysis = AnalysisFactory.eINSTANCE.createAnalysis();
AnalysisResult createAnalysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
createAnalysis.setResults(createAnalysisResult);
createAnalysis.setName("AElementPersistanceRealTestanalysis6"); //$NON-NLS-1$
// create analysis item
TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
createTDQAnalysisItem.setAnalysis(createAnalysis);
Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis6"); //$NON-NLS-1$
createAnalysisProperty.setId(EcoreUtil.generateUUID());
createTDQAnalysisItem.setProperty(createAnalysisProperty);
ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
// create report
TdReport createTdReport = ReportsFactory.eINSTANCE.createTdReport();
TDQReportItem createTDQReportItem = PropertiesFactory.eINSTANCE.createTDQReportItem();
createTDQReportItem.setReport(createTdReport);
Property createReportProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
createReportProperty.setLabel("AElementPersistanceRealTestreport6"); //$NON-NLS-1$
createTDQReportItem.setProperty(createReportProperty);
createReportProperty.setId(EcoreUtil.generateUUID());
ProxyRepositoryFactory.getInstance().create(createTDQReportItem, Path.EMPTY, false);
createTdReport.addAnalysis(createAnalysis);
String repName = "rep61"; //$NON-NLS-1$
String exceptedFileName = repName + "_0.1.rep"; //$NON-NLS-1$
createTdReport.setName(repName);
ReturnCode create = createReportWriter.saveWithoutDependencies(createTDQReportItem, createTdReport);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName, createTDQReportItem.getFilename());
String repName2 = "rep62"; //$NON-NLS-1$
String exceptedFileName2 = repName2 + "_0.1.rep"; //$NON-NLS-1$
createTdReport.setName(repName2);
create = createReportWriter.saveWithDependencies(createTDQReportItem, createTdReport);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName2, createTDQReportItem.getFilename());
}
}