use of org.talend.dataquality.properties.TDQAnalysisItem in project tdq-studio-se by Talend.
the class ItemRecordTest method testLoadProperty.
/**
* Test method for {@link org.talend.dataprofiler.core.ui.imex.model.ItemRecord#loadProperty()}.
*
* @throws PersistenceException
*/
@Test
public void testLoadProperty() throws PersistenceException {
chooseRightProject();
// $NON-NLS-1$
Property analysisProperty = createAnalysis("ItemRecordTestanalysis1");
TDQAnalysisItem item = (TDQAnalysisItem) analysisProperty.getItem();
Analysis analysis = item.getAnalysis();
AnalysisResult createAnalysisResult = analysis.getResults();
Assert.assertEquals(0, createAnalysisResult.getIndicators().size());
// create Indicator
RowCountIndicator rowCountIndicator = IndicatorsFactory.eINSTANCE.createRowCountIndicator();
String rowCountPropertyID = EcoreUtil.generateUUID();
// $NON-NLS-1$
saveIndicatorDefintion(rowCountPropertyID, "ItemRecordWithRefreshedTestIndicatorDefinition1");
rowCountIndicator.setIndicatorDefinition(((TDQIndicatorDefinitionItem) ProxyRepositoryFactory.getInstance().getLastVersion(rowCountPropertyID).getProperty().getItem()).getIndicatorDefinition());
// $NON-NLS-1$
Assert.assertNotNull("Row count indicator definition should not be null", rowCountIndicator.getIndicatorDefinition());
Assert.assertEquals("ItemRecordWithRefreshedTestIndicatorDefinition1", // $NON-NLS-1$
rowCountIndicator.getIndicatorDefinition().getLabel());
createAnalysisResult.getIndicators().add(rowCountIndicator);
Assert.assertEquals(1, createAnalysisResult.getIndicators().size());
ReturnCode saveAnalysis = saveAnalysis(analysis);
Assert.assertEquals(1, ((TDQAnalysisItem) analysisProperty.getItem()).getAnalysis().getResults().getIndicators().size());
// $NON-NLS-1$
Assert.assertTrue("The analysis first time saving is not work", saveAnalysis.isOk());
File analysisFile = WorkspaceUtils.ifileToFile(PropertyHelper.getItemFile(analysisProperty));
ItemRecord itemRecord = new ItemRecord(analysisFile);
Assert.assertEquals(1, itemRecord.getDependencySet().size());
// create Indicator
NullCountIndicator nullCountIndicator = IndicatorsFactory.eINSTANCE.createNullCountIndicator();
String nullCountPropertyID = EcoreUtil.generateUUID();
// $NON-NLS-1$
saveIndicatorDefintion(nullCountPropertyID, "ItemRecordWithRefreshedTestIndicatorDefinition2");
nullCountIndicator.setIndicatorDefinition(((TDQIndicatorDefinitionItem) ProxyRepositoryFactory.getInstance().getLastVersion(nullCountPropertyID).getProperty().getItem()).getIndicatorDefinition());
analysis = item.getAnalysis();
analysis.getResults().getIndicators().add(nullCountIndicator);
ReturnCode saveAnalysis2 = saveAnalysis(analysis);
// $NON-NLS-1$
Assert.assertTrue("The analysis second time saving is not work", saveAnalysis2.isOk());
// get last resource so that the dependecy will not changed
itemRecord = new ItemRecord(analysisFile);
Assert.assertEquals(1, itemRecord.getDependencySet().size());
// after clear the resource will be lastest so that the dependency is added
ItemRecord.clear();
itemRecord = new ItemRecord(analysisFile);
Assert.assertEquals(2, itemRecord.getDependencySet().size());
}
use of org.talend.dataquality.properties.TDQAnalysisItem in project tdq-studio-se by Talend.
the class ItemRecordTest method createAnalysis.
private Property createAnalysis(String name) throws PersistenceException {
// 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(name);
// create analysis item
TDQAnalysisItem createTDQAnalysisItem = PropertiesFactory.eINSTANCE.createTDQAnalysisItem();
createTDQAnalysisItem.setAnalysis(createAnalysis);
Property createAnalysisProperty = org.talend.core.model.properties.PropertiesFactory.eINSTANCE.createProperty();
createAnalysisProperty.setLabel(name);
createTDQAnalysisItem.setProperty(createAnalysisProperty);
createAnalysisProperty.setId(EcoreUtil.generateUUID());
ProxyRepositoryFactory.getInstance().create(createTDQAnalysisItem, Path.EMPTY, false);
return createAnalysisProperty;
}
use of org.talend.dataquality.properties.TDQAnalysisItem in project tdq-studio-se by Talend.
the class AElementPersistanceRealTest method testSaveWithDependenciesAnalysis.
/**
* 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();
// $NON-NLS-1$
createAnalysisProperty.setLabel("AElementPersistanceRealTestanalysis5");
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();
// $NON-NLS-1$
createPatternProperty.setLabel("AElementPersistanceRealTestDQRule5");
createTDQBusinessRuleItem.setProperty(createPatternProperty);
createPatternProperty.setId(EcoreUtil.generateUUID());
ProxyRepositoryFactory.getInstance().create(createTDQBusinessRuleItem, Path.EMPTY, false);
// $NON-NLS-1$
String exceptedFileName = anaName + "_0.1.ana";
ReturnCode create = createAnalysisWriter.saveWithDependencies(createTDQAnalysisItem, createAnalysis);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName, createTDQAnalysisItem.getFilename());
// $NON-NLS-1$
String anaName2 = "ana52";
// $NON-NLS-1$
String exceptedFileName2 = anaName2 + "_0.1.ana";
createAnalysis.setName(anaName2);
create = createAnalysisWriter.saveWithDependencies(createTDQAnalysisItem, createAnalysis);
assertTrue(create.isOk());
Assert.assertEquals(exceptedFileName2, createTDQAnalysisItem.getFilename());
}
use of org.talend.dataquality.properties.TDQAnalysisItem in project tdq-studio-se by Talend.
the class EMFSharedResourcesTest method testReloadModelElementInNode.
/**
* Test method for
* {@link org.talend.dq.writer.EMFSharedResources#reloadModelElementInNode(org.talend.repository.model.IRepositoryNode)}
* .
*/
@Test
public void testReloadModelElementInNode() {
IRepositoryViewObject viewObject = UnitTestBuildHelper.buildRepositoryViewObjectSystemFolder(currentProject.getEmfProject(), currentProject.getAuthor(), ERepositoryObjectType.TDQ_ANALYSIS_ELEMENT);
RepositoryNode node = new RepositoryNode(viewObject, null, ENodeType.SYSTEM_FOLDER);
viewObject.setRepositoryNode(node);
// $NON-NLS-1$
Item anaItem = createRealAnalysis("analysis_emfreload", null, false);
IRepositoryViewObject object = null;
try {
object = ProxyRepositoryFactory.getInstance().getLastVersion(anaItem.getProperty().getId());
} catch (PersistenceException e1) {
// $NON-NLS-1$
fail("testReloadModelElementInNode fail: " + e1.getMessage());
}
anaNode = new AnalysisRepNode(object, node, ENodeType.REPOSITORY_ELEMENT, currentProject);
anaNode.setProperties(EProperties.LABEL, ERepositoryObjectType.TDQ_ANALYSIS_ELEMENT);
anaNode.setProperties(EProperties.CONTENT_TYPE, ERepositoryObjectType.TDQ_ANALYSIS_ELEMENT);
URI uri = anaItem.eResource().getURI();
String fileExtension = anaItem.getFileExtension();
// $NON-NLS-1$
String removeEnd = StringUtils.removeEnd(uri.path(), "." + FactoriesUtil.PROPERTIES_EXTENSION);
Analysis analysis = ((TDQAnalysisItem) anaItem).getAnalysis();
try {
// $NON-NLS-1$ //$NON-NLS-2$
ProxyRepositoryFactory.getInstance().unloadResources(uri.scheme() + ":" + removeEnd + "." + fileExtension);
} catch (PersistenceException e) {
// $NON-NLS-1$
fail("testReloadModelElementInNode fail: " + e.getMessage());
}
// ModelElement modelElement = PropertyHelper.getModelElement(anaItem.getProperty());
assertTrue(analysis.eIsProxy());
ModelElement reloadModelElement = EMFSharedResources.getInstance().reloadModelElementInNode(anaNode);
assertFalse(reloadModelElement.eIsProxy());
}
use of org.talend.dataquality.properties.TDQAnalysisItem in project tdq-studio-se by Talend.
the class OpenItemEditorAction method computeEditorInput.
/**
* get the ItemEditorInput according to the repNode, if there no ItemEditorInput return null.
*
* @param repNode
* @param isOpenItemEditorAction
* @return IEditorInput
* @throws PersistenceException
*/
public IEditorInput computeEditorInput(IRepositoryNode repNode, boolean isOpenItemEditorAction) throws BusinessException {
// TDQ-12499 msjian add : when click the node under recyclebin, no need to find a EditorInput
if (repNode != null && !isOpenItemEditorAction) {
IRepositoryNode currentNode = repNode;
do {
RepositoryNode parentNode = currentNode.getParent();
if (parentNode != null && parentNode instanceof RecycleBinRepNode) {
return null;
}
currentNode = parentNode;
} while (currentNode != null);
}
// TDQ-12499~
IEditorInput result = null;
IRepositoryViewObject repViewObj = repNode.getObject();
if (repViewObj != null) {
// Connection editor
String key = repViewObj.getRepositoryObjectType().getKey();
Item item = repViewObj.getProperty().getItem();
if (item instanceof TDQItem && !(item instanceof TDQFileItem)) {
ModelElement modelElement = PropertyHelper.getModelElement(repViewObj.getProperty());
if (modelElement.eIsProxy() && repNode != null) {
modelElement = (ModelElement) EObjectHelper.resolveObject(modelElement);
item = repViewObj.getProperty().getItem();
}
if (modelElement == null || modelElement.eResource() == null) {
throw ExceptionFactory.getInstance().createBusinessException(((TDQItem) item).getFilename());
}
}
if (ERepositoryObjectType.METADATA_CONNECTIONS.getKey().equals(key) || ConnectionUtils.isTcompJdbc(key)) {
result = new ConnectionItemEditorInput(repNode);
Connection connection = ((ConnectionItem) item).getConnection();
if (connection == null || connection.getDataPackage().size() == 0) {
throw ExceptionFactory.getInstance().createBusinessException(repViewObj);
}
editorID = ConnectionEditor.class.getName();
} else if (ERepositoryObjectType.TDQ_ANALYSIS_ELEMENT.getKey().equals(key)) {
result = new AnalysisItemEditorInput(repNode);
Analysis analysis = ((TDQAnalysisItem) item).getAnalysis();
if (analysis == null || analysis.getContext() == null) {
throw ExceptionFactory.getInstance().createBusinessException(repViewObj);
}
EList<ModelElement> analysedElements = analysis.getContext().getAnalysedElements();
RepositoryNode connectionRepositoryNode = null;
if (!analysedElements.isEmpty()) {
Connection connection = null;
ModelElement modelElement = analysedElements.get(0);
if (modelElement instanceof Connection) {
connection = (Connection) modelElement;
} else if (modelElement instanceof Catalog) {
Catalog catalog = SwitchHelpers.CATALOG_SWITCH.caseCatalog((Catalog) modelElement);
connection = ConnectionHelper.getConnection(catalog);
} else if (modelElement instanceof Schema) {
Schema schema = SwitchHelpers.SCHEMA_SWITCH.caseSchema((Schema) modelElement);
if (schema != null) {
connection = ConnectionHelper.getConnection(schema);
}
} else if (modelElement instanceof TdTable) {
TdTable tdTable = SwitchHelpers.TABLE_SWITCH.caseTdTable((TdTable) modelElement);
connection = ConnectionHelper.getConnection(tdTable);
} else if (modelElement instanceof TdView) {
TdView tdView = SwitchHelpers.VIEW_SWITCH.caseTdView((TdView) modelElement);
connection = ConnectionHelper.getConnection(tdView);
} else if (modelElement instanceof TdColumn) {
TdColumn tdColumn = SwitchHelpers.COLUMN_SWITCH.caseTdColumn((TdColumn) modelElement);
connection = ConnectionHelper.getConnection(tdColumn);
} else if (modelElement instanceof MetadataColumn) {
MetadataColumn mColumn = SwitchHelpers.METADATA_COLUMN_SWITCH.doSwitch(modelElement);
connection = ConnectionHelper.getTdDataProvider(mColumn);
}
connectionRepositoryNode = RepositoryNodeHelper.recursiveFind(connection);
}
((AnalysisItemEditorInput) result).setConnectionNode(connectionRepositoryNode);
if (analysis.getParameters() != null && analysis.getParameters().getAnalysisType().equals(AnalysisType.MATCH_ANALYSIS)) {
editorID = MatchAnalysisEditor.class.getName();
} else {
editorID = AnalysisEditor.class.getName();
}
} else if (ERepositoryObjectType.TDQ_INDICATOR_ELEMENT.getKey().equals(key)) {
result = new IndicatorDefinitionItemEditorInput(repNode);
TDQIndicatorDefinitionItem definitionItem = (TDQIndicatorDefinitionItem) item;
if (definitionItem.getIndicatorDefinition().eResource() == null) {
throw ExceptionFactory.getInstance().createBusinessException(definitionItem.getFilename());
}
if (UDIHelper.getUDICategory(definitionItem.getIndicatorDefinition()) == null) {
throw ExceptionFactory.getInstance().createBusinessException(definitionItem.getFilename());
}
editorID = IndicatorEditor.class.getName();
} else if (ERepositoryObjectType.TDQ_RULES_SQL.getKey().equals(key) || ERepositoryObjectType.TDQ_RULES_PARSER.getKey().equals(key) || ERepositoryObjectType.TDQ_RULES_MATCHER.getKey().equals(key)) {
result = new BusinessRuleItemEditorInput(repNode);
editorID = DQRuleEditor.class.getName();
} else if (ERepositoryObjectType.TDQ_PATTERN_ELEMENT.getKey().equals(key)) {
result = new PatternItemEditorInput(repNode);
TDQPatternItem patternItem = (TDQPatternItem) item;
if (patternItem.getPattern() == null || patternItem.getPattern().eResource() == null) {
throw ExceptionFactory.getInstance().createBusinessException(patternItem.getFilename());
}
editorID = PatternEditor.class.getName();
} else if (ERepositoryObjectType.TDQ_REPORT_ELEMENT.getKey().equals(key)) {
result = new ReportItemEditorInput(repNode);
TDQReportItem reportItem = (TDQReportItem) item;
if (!(reportItem.getReport() instanceof TdReport)) {
throw ExceptionFactory.getInstance().createBusinessException(reportItem.getFilename());
}
for (AnalysisMap anaMap : ((TdReport) reportItem.getReport()).getAnalysisMap()) {
Analysis analysis = anaMap.getAnalysis();
if (analysis.eResource() == null) {
throw ExceptionFactory.getInstance().createBusinessException(reportItem.getFilename());
}
}
// $NON-NLS-1$
editorID = "org.talend.dataprofiler.core.tdq.ui.editor.report.ReportEditror";
} else if (ERepositoryObjectType.TDQ_SOURCE_FILE_ELEMENT.getKey().equals(key) || ERepositoryObjectType.TDQ_JRAXML_ELEMENT.getKey().equals(key)) {
IPath append = WorkbenchUtils.getFilePath(repViewObj.getRepositoryNode());
DQRepositoryNode node = (DQRepositoryNode) repViewObj.getRepositoryNode();
file = ResourceManager.getRoot().getProject(node.getProject().getTechnicalLabel()).getFile(append);
if (!file.exists()) {
throw ExceptionFactory.getInstance().createBusinessException(repViewObj);
}
if (ERepositoryObjectType.TDQ_SOURCE_FILE_ELEMENT.getKey().equals(key)) {
editorID = SqlExplorerUtils.SQLEDITOR_ID;
} else {
editorID = TDQFileEditorInput.DEFAULT_EDITOR_ID;
}
result = new TDQFileEditorInput(file);
// Added TDQ-7143 yyin 20130531
((TDQFileEditorInput) result).setFileItem(item);
CorePlugin.getDefault().refreshDQView(repNode);
// ~
}
// ADD msjian TDQ-4209 2012-2-7 : return the editorInput of *.jrxml and *.sql files
if (!isOpenItemEditorAction) {
if (ERepositoryObjectType.TDQ_JRAXML_ELEMENT.getKey().equals(key) || ERepositoryObjectType.TDQ_SOURCE_FILE_ELEMENT.getKey().equals(key)) {
// if there don't found the correct ItemEditorInput, try to open it as a File
result = new FileEditorInput(file);
editorID = FileEditorInput.class.getName();
}
}
// TDQ-4209~
}
return result;
}
Aggregations