use of orgomg.cwm.objectmodel.core.Dependency in project tdq-studio-se by Talend.
the class WorkbenchUtils method impactExistingAnalyses.
/**
* DOC qiongli TDQ-3317:move this method from ReloadDatabaseAction. to this class .
*
* @param oldDataProvider
* @throws PartInitException
*/
public static void impactExistingAnalyses(DataProvider oldDataProvider) throws PartInitException {
EList<Dependency> clientDependencies = oldDataProvider.getSupplierDependency();
List<Analysis> unsynedAnalyses = new ArrayList<Analysis>();
for (Dependency dep : clientDependencies) {
for (ModelElement mod : dep.getClient()) {
// MOD mzhao 2009-08-24 The dependencies include "Property" and "Analysis"
if (!(mod instanceof Analysis)) {
continue;
}
Analysis ana = (Analysis) mod;
unsynedAnalyses.add(ana);
}
for (Analysis analysis : unsynedAnalyses) {
// Reload.
IFile file = getTempAnalysisFile(analysis);
Analysis tempAnalysis = (Analysis) AnaResourceFileHelper.getInstance().getModelElement(file);
// MOD qiongli 2010-8-17,bug 14977
if (tempAnalysis != null) {
Resource eResource = tempAnalysis.eResource();
Map<EObject, Collection<Setting>> referenceMaps = EcoreUtil.UnresolvedProxyCrossReferencer.find(eResource);
Iterator<EObject> it = referenceMaps.keySet().iterator();
ModelElement eobj = null;
boolean isModified = false;
while (it.hasNext()) {
eobj = (ModelElement) it.next();
Collection<Setting> settings = referenceMaps.get(eobj);
for (Setting setting : settings) {
if (setting.getEObject() instanceof AnalysisContext) {
tempAnalysis.getContext().getAnalysedElements().remove(eobj);
isModified = true;
} else if (setting.getEObject() instanceof Indicator) {
// the only indicator in the column set analysis. (Added TDQ-8842 20140512 yyin)
if (AnalysisType.COLUMN_SET.equals(tempAnalysis.getParameters().getAnalysisType())) {
// ~
((SimpleStatIndicator) setting.getEObject()).getAnalyzedColumns().remove(eobj);
} else {
tempAnalysis.getResults().getIndicators().remove(setting.getEObject());
}
isModified = true;
}
}
}
if (isModified) {
saveTempAnalysis(file, tempAnalysis);
}
// Should reopen this analyis's editor if it is opened now. what ever it is modified or not.
EventManager.getInstance().publish(tempAnalysis.getName(), EventEnum.DQ_ANALYSIS_REOPEN_EDITOR, null);
}
}
}
}
use of orgomg.cwm.objectmodel.core.Dependency in project tdq-studio-se by Talend.
the class WorkbenchUtils method nodifyDependedAnalysis.
public static void nodifyDependedAnalysis(ConnectionItem connectionItem) {
// Added TDQ-8360 20140410 yyin: notify each depended analysis
EList<Dependency> clientDependencies = connectionItem.getConnection().getSupplierDependency();
for (Dependency dep : clientDependencies) {
for (ModelElement mod : dep.getClient()) {
if (!(mod instanceof Analysis)) {
continue;
}
EventManager.getInstance().publish(mod, EventEnum.DQ_ANALYSIS_REFRESH_DATAPROVIDER_LIST, null);
EventManager.getInstance().publish(mod, EventEnum.DQ_MATCH_ANALYSIS_REFRESH_DATAPROVIDER_LABEL, null);
}
}
}
use of orgomg.cwm.objectmodel.core.Dependency in project tdq-studio-se by Talend.
the class FileSystemImportWriter method removeInvalidDependency.
private void removeInvalidDependency(ModelElement modelElement) {
// remove invalid supplier depenedences,e.g,remove some invalid analyses in connection file .
// remove from model
EList<Dependency> supplierDependencys = modelElement.getSupplierDependency();
for (Dependency dependency : supplierDependencys) {
EList<ModelElement> clients = dependency.getClient();
Iterator<ModelElement> dependencyIterator = clients.iterator();
while (dependencyIterator.hasNext()) {
ModelElement client = dependencyIterator.next();
if (client == null || client.eIsProxy()) {
// remove client here
dependencyIterator.remove();
}
}
}
// remove from resource
Resource modEResource = modelElement.eResource();
if (modEResource != null) {
Iterator<EObject> iterator = modEResource.getContents().iterator();
while (iterator.hasNext()) {
EObject eObject = iterator.next();
if (eObject instanceof Dependency && !supplierDependencys.contains(eObject)) {
iterator.remove();
}
}
}
// remove clint Dependency from model
Iterator<Dependency> ClientDependencyIterator = modelElement.getClientDependency().iterator();
while (ClientDependencyIterator.hasNext()) {
Dependency dependency = ClientDependencyIterator.next();
EList<ModelElement> suppliers = dependency.getSupplier();
// If dependency is empty then remove dependency directly
if (suppliers.isEmpty()) {
ClientDependencyIterator.remove();
continue;
}
// else remove the elemet from dependency
Iterator<ModelElement> suppLiterator = suppliers.iterator();
while (suppLiterator.hasNext()) {
ModelElement supplier = suppLiterator.next();
if (supplier == null || supplier.eIsProxy()) {
suppLiterator.remove();
}
}
}
if (!supplierDependencys.isEmpty() && modEResource != null) {
EMFSharedResources.getInstance().saveResource(modEResource);
}
}
use of orgomg.cwm.objectmodel.core.Dependency in project tdq-studio-se by Talend.
the class WorkbenchUtilsTest method testUpdateDependAnalysisOfDelimitedFile.
// test for 2 remained columns
@Test
public void testUpdateDependAnalysisOfDelimitedFile() throws IOException, URISyntaxException, PartInitException, BusinessException {
// create a file connection
DelimitedFileConnection fileConnection = ConnectionPackage.eINSTANCE.getConnectionFactory().createDelimitedFileConnection();
// $NON-NLS-1$
URL fileUrl = this.getClass().getResource("file1");
MetadataTable metadataTable = UnitTestBuildHelper.initFileConnection(fileUrl, fileConnection);
UnitTestBuildHelper.initColumns(metadataTable);
IFile file = WorkspaceUtils.fileToIFile(new File(FileLocator.toFileURL(fileUrl).toURI()));
IPath itemPath = file.getFullPath();
Property connectionProperty = PropertiesFactory.eINSTANCE.createProperty();
connectionProperty.setAuthor(((RepositoryContext) CoreRuntimePlugin.getInstance().getContext().getProperty(Context.REPOSITORY_CONTEXT_KEY)).getUser());
connectionProperty.setVersion(VersionUtils.DEFAULT_VERSION);
// $NON-NLS-1$
connectionProperty.setStatusCode("");
connectionProperty.setLabel("file1");
DelimitedFileConnectionItem connectionItem = PropertiesFactory.eINSTANCE.createDelimitedFileConnectionItem();
connectionItem.setProperty(connectionProperty);
connectionItem.setConnection(fileConnection);
try {
ProxyRepositoryFactory.getInstance().create(connectionItem, itemPath.removeFirstSegments(3).removeLastSegments(1));
} catch (PersistenceException e) {
Assert.fail(e.getMessage());
}
// create an analysis which use the columns in the file connection
Analysis analysis = UnitTestBuildHelper.createRealAnalysis("Ana01", null, false);
AnalysisContext context = AnalysisPackage.eINSTANCE.getAnalysisFactory().createAnalysisContext();
context.setConnection(fileConnection);
analysis.setContext(context);
context.getAnalysedElements().addAll(metadataTable.getColumns());
DependenciesHandler.getInstance().setDependencyOn(analysis, fileConnection);
ElementWriterFactory.getInstance().createAnalysisWrite().save(analysis);
// change the file's schema
List<MetadataColumn> tempNewColumns = new ArrayList<MetadataColumn>();
MetadataColumn name = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
name.setName("name");
name.setLabel("name");
tempNewColumns.add(name);
MetadataColumn country = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
country.setName("country");
country.setLabel("country");
tempNewColumns.add(country);
MetadataColumn country1 = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
country1.setName("country1");
country1.setLabel("country1");
tempNewColumns.add(country1);
MetadataColumn company = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
company.setName("new column");
company.setLabel("new column");
tempNewColumns.add(company);
metadataTable.getFeature().clear();
metadataTable.getFeature().addAll(tempNewColumns);
// before compare, the analysis has 5 analyzed elements
Assert.assertEquals(5, analysis.getContext().getAnalysedElements().size());
// call the tested method
WorkbenchUtils.reloadMetadataOfDelimitedFile(metadataTable);
List<MetadataColumn> afterCompareColumns = metadataTable.getColumns();
// check the columns
Assert.assertEquals(4, afterCompareColumns.size());
Assert.assertEquals("name", afterCompareColumns.get(0).getLabel());
Assert.assertEquals("country", afterCompareColumns.get(1).getLabel());
Assert.assertEquals("country1", afterCompareColumns.get(2).getLabel());
Assert.assertEquals("new column", afterCompareColumns.get(3).getLabel());
metadataTable.getColumns().clear();
metadataTable.getColumns().addAll(afterCompareColumns);
WorkbenchUtils.impactExistingAnalyses(fileConnection);
// check the depended analysis
EList<Dependency> clientDependencies = fileConnection.getSupplierDependency();
for (Dependency dep : clientDependencies) {
for (ModelElement mod : dep.getClient()) {
if (!(mod instanceof Analysis)) {
continue;
}
Analysis ana = (Analysis) mod;
// assert the column with same name still in the analysis
Assert.assertNotNull(ana.getContext().getAnalysedElements());
// should be: only 2 with same name remained
Assert.assertEquals(2, ana.getContext().getAnalysedElements().size());
Assert.assertEquals("name", ana.getContext().getAnalysedElements().get(0).getName());
Assert.assertEquals("country", ana.getContext().getAnalysedElements().get(1).getName());
}
}
}
use of orgomg.cwm.objectmodel.core.Dependency in project tdq-studio-se by Talend.
the class WorkbenchUtilsTest method testUpdateDependAnalysisOfDelimitedFile_2.
// test for last column remained
@Test
public void testUpdateDependAnalysisOfDelimitedFile_2() throws IOException, URISyntaxException, PartInitException, BusinessException {
// create a file connection
DelimitedFileConnection fileConnection = ConnectionPackage.eINSTANCE.getConnectionFactory().createDelimitedFileConnection();
// $NON-NLS-1$
URL fileUrl = this.getClass().getResource("file1");
MetadataTable metadataTable = UnitTestBuildHelper.initFileConnection(fileUrl, fileConnection);
UnitTestBuildHelper.initColumns(metadataTable);
IFile file = WorkspaceUtils.fileToIFile(new File(FileLocator.toFileURL(fileUrl).toURI()));
IPath itemPath = file.getFullPath();
Property connectionProperty = PropertiesFactory.eINSTANCE.createProperty();
connectionProperty.setAuthor(((RepositoryContext) CoreRuntimePlugin.getInstance().getContext().getProperty(Context.REPOSITORY_CONTEXT_KEY)).getUser());
connectionProperty.setVersion(VersionUtils.DEFAULT_VERSION);
// $NON-NLS-1$
connectionProperty.setStatusCode("");
connectionProperty.setLabel("file2");
DelimitedFileConnectionItem connectionItem = PropertiesFactory.eINSTANCE.createDelimitedFileConnectionItem();
connectionItem.setProperty(connectionProperty);
connectionItem.setConnection(fileConnection);
try {
ProxyRepositoryFactory.getInstance().create(connectionItem, itemPath.removeFirstSegments(3).removeLastSegments(1));
} catch (PersistenceException e) {
Assert.fail(e.getMessage());
}
// create an analysis which use the columns in the file connection
Analysis analysis = UnitTestBuildHelper.createRealAnalysis("Ana01", null, false);
AnalysisContext context = AnalysisPackage.eINSTANCE.getAnalysisFactory().createAnalysisContext();
context.setConnection(fileConnection);
analysis.setContext(context);
context.getAnalysedElements().addAll(metadataTable.getColumns());
DependenciesHandler.getInstance().setDependencyOn(analysis, fileConnection);
ElementWriterFactory.getInstance().createAnalysisWrite().save(analysis);
// change the file's schema
List<MetadataColumn> tempNewColumns = new ArrayList<MetadataColumn>();
MetadataColumn name = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
name.setName("name2");
name.setLabel("name2");
tempNewColumns.add(name);
MetadataColumn country = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
country.setName("country2");
country.setLabel("country2");
tempNewColumns.add(country);
MetadataColumn country1 = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
country1.setName("country1");
country1.setLabel("country1");
tempNewColumns.add(country1);
MetadataColumn company = ConnectionPackage.eINSTANCE.getConnectionFactory().createMetadataColumn();
company.setName("name");
company.setLabel("name");
tempNewColumns.add(company);
metadataTable.getFeature().clear();
metadataTable.getFeature().addAll(tempNewColumns);
// before compare, the analysis has 5 analyzed elements
Assert.assertEquals(5, analysis.getContext().getAnalysedElements().size());
// call the tested method
WorkbenchUtils.reloadMetadataOfDelimitedFile(metadataTable);
List<MetadataColumn> afterCompareColumns = metadataTable.getColumns();
// check the columns
Assert.assertEquals(4, afterCompareColumns.size());
Assert.assertEquals("name", afterCompareColumns.get(0).getLabel());
Assert.assertEquals("country2", afterCompareColumns.get(2).getLabel());
Assert.assertEquals("country1", afterCompareColumns.get(3).getLabel());
Assert.assertEquals("name2", afterCompareColumns.get(1).getLabel());
metadataTable.getColumns().clear();
metadataTable.getColumns().addAll(afterCompareColumns);
WorkbenchUtils.impactExistingAnalyses(fileConnection);
// check the depended analysis
EList<Dependency> clientDependencies = fileConnection.getSupplierDependency();
for (Dependency dep : clientDependencies) {
for (ModelElement mod : dep.getClient()) {
if (!(mod instanceof Analysis)) {
continue;
}
Analysis ana = (Analysis) mod;
// assert the column with same name still in the analysis
Assert.assertNotNull(ana.getContext().getAnalysedElements());
// should be: only 2 with same name remained
Assert.assertEquals(1, ana.getContext().getAnalysedElements().size());
Assert.assertEquals("name", ana.getContext().getAnalysedElements().get(0).getName());
}
}
}
Aggregations