Search in sources :

Example 16 with IRepositoryFactory

use of org.talend.core.repository.model.IRepositoryFactory in project tdi-studio-se by Talend.

the class LoginDialog method logIn.

/**
     * DOC smallet Comment method "logIn".
     * 
     * @param project
     * @throws Exception
     */
protected boolean logIn(final Project project) {
    final ProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
    ConnectionBean connBean = loginComposite.getConnection();
    final boolean needRestartForLocal = loginComposite.needRestartForLocal();
    if (connBean == null || project == null || project.getLabel() == null) {
        return false;
    }
    try {
        if (!project.getEmfProject().isLocal() && factory.isLocalConnectionProvider()) {
            List<IRepositoryFactory> rfList = RepositoryFactoryProvider.getAvailableRepositories();
            IRepositoryFactory remoteFactory = null;
            for (IRepositoryFactory rf : rfList) {
                if (!rf.isLocalConnectionProvider()) {
                    remoteFactory = rf;
                    break;
                }
            }
            if (remoteFactory != null) {
                factory.setRepositoryFactoryFromProvider(remoteFactory);
                factory.getRepositoryContext().setOffline(true);
            }
        }
    } catch (PersistenceException e) {
        ExceptionHandler.process(e);
    }
    // Save last used parameters
    PreferenceManipulator prefManipulator = new PreferenceManipulator(CorePlugin.getDefault().getPreferenceStore());
    prefManipulator.setLastProject(project.getTechnicalLabel());
    saveLastConnBean(connBean);
    // check for Talendforge
    if (PluginChecker.isExchangeSystemLoaded() && !TalendPropertiesUtil.isHideExchange()) {
        IPreferenceStore prefStore = PlatformUI.getPreferenceStore();
        boolean checkTisVersion = prefStore.getBoolean(ITalendCorePrefConstants.EXCHANGE_CHECK_TIS_VERSION);
        IBrandingService brandingService = (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
        if (!checkTisVersion && brandingService.isPoweredbyTalend()) {
            int count = prefStore.getInt(TalendForgeDialog.LOGINCOUNT);
            if (count < 0) {
                count = 1;
            }
            ExchangeUser exchangeUser = project.getExchangeUser();
            boolean isExchangeLogon = exchangeUser.getLogin() != null && !exchangeUser.getLogin().equals("");
            boolean isUserPassRight = true;
            if (isExchangeLogon) {
                IExchangeService service = (IExchangeService) GlobalServiceRegister.getDefault().getService(IExchangeService.class);
                if (service.checkUserAndPass(exchangeUser.getUsername(), exchangeUser.getPassword()) != null) {
                    isUserPassRight = false;
                }
            }
            if (!isExchangeLogon || !isUserPassRight) {
                if ((count + 1) % 4 == 0) {
                    // if (Platform.getOS().equals(Platform.OS_LINUX)) {
                    // TalendForgeDialog tfDialog = new TalendForgeDialog(this.getShell(), project);
                    // tfDialog.open();
                    // } else {
                    Display.getDefault().asyncExec(new Runnable() {

                        @Override
                        public void run() {
                            String userEmail = null;
                            if (project.getAuthor() != null) {
                                userEmail = project.getAuthor().getLogin();
                            }
                            TalendForgeDialog tfDialog = new TalendForgeDialog(getShell(), userEmail);
                            tfDialog.setBlockOnOpen(true);
                            tfDialog.open();
                        }
                    });
                }
                prefStore.setValue(TalendForgeDialog.LOGINCOUNT, count + 1);
            }
        }
    }
    try {
        if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreTisService.class)) {
            final ICoreTisService service = (ICoreTisService) GlobalServiceRegister.getDefault().getService(ICoreTisService.class);
            if (service != null) {
                // if in TIS then update the bundle status according to the project type
                if (!service.validProject(project, needRestartForLocal)) {
                    LoginComposite.isRestart = true;
                    return true;
                }
            }
        // else not in TIS so ignor caus we may not have a licence so we do not know which bundles belong to
        // DI, DQ or MDM
        }
    } catch (PersistenceException e) {
        e.printStackTrace();
        loginComposite.populateProjectList();
        MessageDialog.openError(getShell(), getShell().getText(), e.getMessage());
        return false;
    }
    final Shell shell = this.getShell();
    ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
    IRunnableWithProgress runnable = new IRunnableWithProgress() {

        @Override
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            // monitorWrap = new EventLoopProgressMonitor(monitor);
            try {
                factory.logOnProject(project, monitor);
            } catch (LoginException e) {
                throw new InvocationTargetException(e);
            } catch (PersistenceException e) {
                throw new InvocationTargetException(e);
            } catch (OperationCanceledException e) {
                throw new InterruptedException(e.getLocalizedMessage());
            }
            monitor.done();
        }
    };
    try {
        dialog.run(true, true, runnable);
    } catch (final InvocationTargetException e) {
        if (PluginChecker.isSVNProviderPluginLoaded()) {
            loginComposite.populateProjectList();
            if (e.getTargetException() instanceof OperationCancelException) {
                Display.getDefault().syncExec(new Runnable() {

                    @Override
                    public void run() {
                        MessageDialog.openError(Display.getDefault().getActiveShell(), Messages.getString("LoginDialog.logonCanceled"), e.getTargetException().getLocalizedMessage());
                    }
                });
            } else {
                MessageBoxExceptionHandler.process(e.getTargetException(), getShell());
            }
        } else {
            loginComposite.populateTOSProjectList();
            MessageBoxExceptionHandler.process(e.getTargetException(), getShell());
        }
        return false;
    } catch (InterruptedException e) {
        if (PluginChecker.isSVNProviderPluginLoaded()) {
            loginComposite.populateProjectList();
        } else {
            loginComposite.populateTOSProjectList();
        }
        return false;
    }
    return true;
}
Also used : PreferenceManipulator(org.talend.core.prefs.PreferenceManipulator) OperationCancelException(org.talend.commons.exception.OperationCancelException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) ICoreTisService(org.talend.core.services.ICoreTisService) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) IExchangeService(org.talend.core.service.IExchangeService) Shell(org.eclipse.swt.widgets.Shell) IRepositoryFactory(org.talend.core.repository.model.IRepositoryFactory) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) IBrandingService(org.talend.core.ui.branding.IBrandingService) ExchangeUser(org.talend.core.model.properties.ExchangeUser) Point(org.eclipse.swt.graphics.Point) InvocationTargetException(java.lang.reflect.InvocationTargetException) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ProxyRepositoryFactory(org.talend.core.repository.model.ProxyRepositoryFactory) PersistenceException(org.talend.commons.exception.PersistenceException) LoginException(org.talend.commons.exception.LoginException) ConnectionBean(org.talend.core.model.general.ConnectionBean) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) TalendForgeDialog(org.talend.registration.wizards.register.TalendForgeDialog)

Example 17 with IRepositoryFactory

use of org.talend.core.repository.model.IRepositoryFactory in project tdi-studio-se by Talend.

the class LoginHelper method logIn.

public boolean logIn(ConnectionBean connBean, final Project project) {
    final ProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
    final boolean needRestartForLocal = needRestartForLocal(connBean);
    if (connBean == null || project == null || project.getLabel() == null) {
        return false;
    }
    try {
        if (!project.getEmfProject().isLocal() && factory.isLocalConnectionProvider()) {
            List<IRepositoryFactory> rfList = RepositoryFactoryProvider.getAvailableRepositories();
            IRepositoryFactory remoteFactory = null;
            for (IRepositoryFactory rf : rfList) {
                if (!rf.isLocalConnectionProvider()) {
                    remoteFactory = rf;
                    break;
                }
            }
            if (remoteFactory != null) {
                factory.setRepositoryFactoryFromProvider(remoteFactory);
                factory.getRepositoryContext().setOffline(true);
            }
        }
    } catch (PersistenceException e) {
        ExceptionHandler.process(e);
    }
    // Save last used parameters
    prefManipulator.setLastProject(project.getTechnicalLabel());
    saveLastConnBean(connBean);
    try {
        if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreTisService.class)) {
            final ICoreTisService service = (ICoreTisService) GlobalServiceRegister.getDefault().getService(ICoreTisService.class);
            if (service != null) {
                // if in TIS then update the bundle status according to the project type
                if (!service.validProject(project, needRestartForLocal)) {
                    isRestart = true;
                    return true;
                }
            }
        // else not in TIS so ignor caus we may not have a licence so we do not know which bundles belong to
        // DI, DQ or MDM
        }
    } catch (PersistenceException e) {
        CommonExceptionHandler.process(e);
        MessageDialog.openError(getUsableShell(), getUsableShell().getText(), e.getMessage());
        return false;
    }
    final Shell shell = getUsableShell();
    ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
    IRunnableWithProgress runnable = new IRunnableWithProgress() {

        @Override
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            // monitorWrap = new EventLoopProgressMonitor(monitor);
            try {
                factory.logOnProject(project, monitor);
            } catch (LoginException e) {
                throw new InvocationTargetException(e);
            } catch (PersistenceException e) {
                throw new InvocationTargetException(e);
            } catch (OperationCanceledException e) {
                throw new InterruptedException(e.getLocalizedMessage());
            }
            monitor.done();
        }
    };
    try {
        dialog.run(true, true, runnable);
    } catch (final InvocationTargetException e) {
        // if (PluginChecker.isSVNProviderPluginLoaded()) {
        if (e.getTargetException() instanceof OperationCancelException) {
            Display.getDefault().syncExec(new Runnable() {

                @Override
                public void run() {
                    MessageDialog.openError(Display.getDefault().getActiveShell(), Messages.getString("LoginDialog.logonCanceled"), e.getTargetException().getLocalizedMessage());
                }
            });
        } else {
            MessageBoxExceptionHandler.process(e.getTargetException(), getUsableShell());
        }
        factory.getRepositoryContext().setProject(null);
        // }
        return false;
    } catch (InterruptedException e) {
        // }
        return false;
    }
    return true;
}
Also used : IRepositoryFactory(org.talend.core.repository.model.IRepositoryFactory) OperationCancelException(org.talend.commons.exception.OperationCancelException) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) ICoreTisService(org.talend.core.services.ICoreTisService) InvocationTargetException(java.lang.reflect.InvocationTargetException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) Shell(org.eclipse.swt.widgets.Shell) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ProxyRepositoryFactory(org.talend.core.repository.model.ProxyRepositoryFactory) PersistenceException(org.talend.commons.exception.PersistenceException) LoginException(org.talend.commons.exception.LoginException)

Example 18 with IRepositoryFactory

use of org.talend.core.repository.model.IRepositoryFactory in project tdq-studio-se by Talend.

the class TDQResourceChangeHandlerTest method setUp.

@Before
public void setUp() throws Exception {
    if (tdqResourceChangeHandler == null) {
        ProxyRepositoryFactory proxFactory = mock(ProxyRepositoryFactory.class);
        // $NON-NLS-1$
        stub(method(ProxyRepositoryFactory.class, "getInstance")).toReturn(proxFactory);
        IRepositoryFactory repFactory = mock(IRepositoryFactory.class);
        when(proxFactory.getRepositoryFactoryFromProvider()).thenReturn(repFactory);
        XmiResourceManager resManager = mock(XmiResourceManager.class);
        when(repFactory.getResourceManager()).thenReturn(resManager);
        tdqResourceChangeHandler = new TDQResourceChangeHandler();
    }
}
Also used : IRepositoryFactory(org.talend.core.repository.model.IRepositoryFactory) ProxyRepositoryFactory(org.talend.core.repository.model.ProxyRepositoryFactory) XmiResourceManager(org.talend.core.repository.utils.XmiResourceManager) Before(org.junit.Before)

Example 19 with IRepositoryFactory

use of org.talend.core.repository.model.IRepositoryFactory in project tdq-studio-se by Talend.

the class AnalysisEditor method registerUpdateExecutionEvent.

/**
 * currently will not open the editor of the analysis when running from menu, so, if the editor is opened and not
 * the current active one, the page will not know that the result is changed. so we need to add the event/listener
 * to them to handle this. Added 20130725 TDQ-7639
 *
 * @param analysis
 */
private void registerUpdateExecutionEvent() {
    // register: check if the analysis need to be saved or if it can run before running it(from menu's RUN)
    checkBeforeRunReceiver = new EventReceiver() {

        @Override
        public boolean handle(Object data) {
            if (isDirty()) {
                ReturnCode canSave = masterPage.canSave();
                if (canSave.isOk()) {
                    // save the analysis before running
                    // MOD msjian TDQ-8225 : This save action won't invoke any remote repository action such as svn
                    // commit. TDQ-7508
                    IRepositoryFactory localRepository = RepositoryFactoryProvider.getRepositoriyById(RepositoryConstants.REPOSITORY_LOCAL_ID);
                    IRepositoryFactory oldRepository = ProxyRepositoryFactory.getInstance().getRepositoryFactoryFromProvider();
                    ProxyRepositoryFactory.getInstance().setRepositoryFactoryFromProvider(localRepository);
                    try {
                        doSave(null);
                    } catch (Exception e) {
                        log.error(e, e);
                    } finally {
                        ProxyRepositoryFactory.getInstance().setRepositoryFactoryFromProvider(oldRepository);
                    }
                    // TDQ-8225~
                    setDirty(false);
                } else {
                    if (canSave.getMessage() != null && !canSave.getMessage().equals(StringUtils.EMPTY)) {
                        MessageDialogWithToggle.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DefaultMessagesImpl.getString("AbstractAnalysisMetadataPage.SaveAnalysis"), // $NON-NLS-1$
                        canSave.getMessage());
                    }
                    return false;
                }
            }
            ReturnCode canRun = canRun();
            if (!canRun.isOk()) {
                MessageDialogWithToggle.openError(null, DefaultMessagesImpl.getString("RunAnalysisAction.runAnalysisError"), // $NON-NLS-1$
                canRun.getMessage());
                return false;
            }
            // TDQ-8220 change the listener every time( master page or result page)
            changeListener();
            return true;
        }
    };
    EventManager.getInstance().register(getMasterPage().getCurrentModelElement(), EventEnum.DQ_ANALYSIS_CHECK_BEFORERUN, checkBeforeRunReceiver);
    // register: refresh the result page after running it from menu
    refreshReceiver = new EventReceiver() {

        @Override
        public boolean handle(Object data) {
            // enough;TDQ-8270 resultpage is null for overview type
            if (resultPage != null && resultPage.getManagedForm() != null) {
                resultPage.refresh(getMasterPage());
            } else {
                getMasterPage().refreshGraphicsInSettingsPage();
            }
            return true;
        }
    };
    EventManager.getInstance().register(getMasterPage().getCurrentModelElement(), EventEnum.DQ_ANALYSIS_RUN_FROM_MENU, refreshReceiver);
    // register: reopen this editor after reload its depended connection
    reopenEditor = new EventReceiver() {

        @Override
        public boolean handle(Object data) {
            // TDQ-13275 remove 'Display.getDefault().asyncExec' to avoid error with Multi-thread open editors.
            WorkbenchUtils.refreshCurrentAnalysisEditor(getMasterPage().getCurrentModelElement().getName());
            return true;
        }
    };
    EventManager.getInstance().register(getMasterPage().getCurrentModelElement().getName(), EventEnum.DQ_ANALYSIS_REOPEN_EDITOR, reopenEditor);
    // all match indicator in the Indicators section.
    if (analysisType.equals(AnalysisType.COLUMN_SET)) {
        // register: refresh the dataprovider combobox when the name of the data provider is changed.
        refresh2ShowMatchIndicator = new EventReceiver() {

            @Override
            public boolean handle(Object data) {
                ((ColumnSetAnalysisDetailsPage) getMasterPage()).refreshIndicatorsSection();
                return true;
            }
        };
        EventManager.getInstance().register(getMasterPage().getCurrentModelElement(), EventEnum.DQ_COLUMNSET_SHOW_MATCH_INDICATORS, refresh2ShowMatchIndicator);
    }
    // Added TDQ8787 2014-06-16 yyin: for dynamic chart, create all charts before execute the analysis
    if (masterPage instanceof DynamicAnalysisMasterPage) {
        registerDynamicEvent = new EventReceiver() {

            @Override
            public boolean handle(Object data) {
                if (masterPage.equals(activePageInstance)) {
                    ((DynamicAnalysisMasterPage) masterPage).registerDynamicEvent();
                } else {
                    // register result page
                    if (resultPage != null) {
                        if (resultPage instanceof ColumnAnalysisResultPage) {
                            ((ColumnAnalysisResultPage) resultPage).registerDynamicEvent();
                        } else if (resultPage instanceof BusinessRuleAnalysisResultPage) {
                            ((BusinessRuleAnalysisResultPage) resultPage).registerDynamicEvent();
                        }
                    }
                }
                return true;
            }
        };
        EventManager.getInstance().register(getMasterPage().getCurrentModelElement(), EventEnum.DQ_DYNAMIC_REGISTER_DYNAMIC_CHART, registerDynamicEvent);
        unRegisterDynamicEvent = new EventReceiver() {

            @Override
            public boolean handle(Object data) {
                if (masterPage.equals(activePageInstance)) {
                    ((DynamicAnalysisMasterPage) masterPage).unRegisterDynamicEvent();
                } else {
                    // register result page
                    if (resultPage != null) {
                        if (resultPage instanceof ColumnAnalysisResultPage) {
                            ((ColumnAnalysisResultPage) resultPage).unRegisterDynamicEvent();
                        } else if (resultPage instanceof BusinessRuleAnalysisResultPage) {
                            ((BusinessRuleAnalysisResultPage) resultPage).unRegisterDynamicEvent();
                        }
                    }
                }
                return true;
            }
        };
        EventManager.getInstance().register(getMasterPage().getCurrentModelElement(), EventEnum.DQ_DYNAMIC_UNREGISTER_DYNAMIC_CHART, unRegisterDynamicEvent);
    }
}
Also used : IRepositoryFactory(org.talend.core.repository.model.IRepositoryFactory) ReturnCode(org.talend.utils.sugars.ReturnCode) EventReceiver(org.talend.dataprofiler.core.ui.events.EventReceiver) PartInitException(org.eclipse.ui.PartInitException)

Example 20 with IRepositoryFactory

use of org.talend.core.repository.model.IRepositoryFactory in project tdq-studio-se by Talend.

the class UnitTestBuildHelper method initProxyRepository.

/**
 * DOC talend Comment method "initProxyRepository".
 */
public static void initProxyRepository(IProject rootProject) {
    Project project = null;
    ProxyRepositoryFactory proxyRepository = ProxyRepositoryFactory.getInstance();
    IRepositoryFactory repository = RepositoryFactoryProvider.getRepositoriyById(RepositoryConstants.REPOSITORY_LOCAL_ID);
    if (repository == null) {
        log.fatal(DefaultMessagesImpl.getString(// $NON-NLS-1$
        "No local Repository found! Probably due to a missing plugin in the product."));
    }
    proxyRepository.setRepositoryFactoryFromProvider(repository);
    try {
        proxyRepository.checkAvailability();
        proxyRepository.setFullLogonFinished(false);
        // proxyRepository.initialize();
        XmiResourceManager xmiResourceManager = new XmiResourceManager();
        if (rootProject.getFile(FileConstants.LOCAL_PROJECT_FILENAME).exists()) {
            // Initialize TDQ EMF model packages.
            new EMFUtil();
            project = new Project(xmiResourceManager.loadProject(rootProject));
        } else {
            User user = org.talend.core.model.properties.impl.PropertiesFactoryImpl.eINSTANCE.createUser();
            // $NON-NLS-1$
            user.setLogin("talend@talend.com");
            // $NON-NLS-1$
            user.setPassword("talend@talend.com".getBytes());
            String projectName = rootProject.getName();
            String projectDesc = ResourcesPlugin.getWorkspace().newProjectDescription(projectName).getComment();
            Project projectInfor = ProjectHelper.createProject(projectName, projectDesc, ECodeLanguage.JAVA.getName(), user);
            // MOD zshen create project by proxyRepository
            checkFileName(projectInfor.getLabel(), RepositoryConstants.PROJECT_PATTERN);
            project = proxyRepository.getRepositoryFactoryFromProvider().createProject(projectInfor);
        }
        if (project != null) {
            initRepositoryContext(project);
            // add status
            // $NON-NLS-1$
            String defaultTechnicalStatusList = "DEV development;TEST testing;PROD production";
            List<Status> statusList = StatusHelper.parse(defaultTechnicalStatusList);
            proxyRepository.setTechnicalStatus(statusList);
        }
    } catch (PersistenceException e) {
        Assert.fail(e.getMessage());
    }
}
Also used : Status(org.talend.core.model.properties.Status) Project(org.talend.core.model.general.Project) IProject(org.eclipse.core.resources.IProject) IRepositoryFactory(org.talend.core.repository.model.IRepositoryFactory) ProxyRepositoryFactory(org.talend.core.repository.model.ProxyRepositoryFactory) User(org.talend.core.model.properties.User) EMFUtil(org.talend.commons.emf.EMFUtil) PersistenceException(org.talend.commons.exception.PersistenceException) XmiResourceManager(org.talend.core.repository.utils.XmiResourceManager)

Aggregations

IRepositoryFactory (org.talend.core.repository.model.IRepositoryFactory)24 ProxyRepositoryFactory (org.talend.core.repository.model.ProxyRepositoryFactory)13 PersistenceException (org.talend.commons.exception.PersistenceException)11 Project (org.talend.core.model.general.Project)11 User (org.talend.core.model.properties.User)10 XmiResourceManager (org.talend.core.repository.utils.XmiResourceManager)10 IProject (org.eclipse.core.resources.IProject)7 EMFUtil (org.talend.commons.emf.EMFUtil)6 Status (org.talend.core.model.properties.Status)6 IProxyRepositoryFactory (org.talend.repository.model.IProxyRepositoryFactory)6 Before (org.junit.Before)5 RepositoryContext (org.talend.core.context.RepositoryContext)5 LabelText (org.talend.commons.ui.swt.formtools.LabelText)4 LabelledCombo (org.talend.commons.ui.swt.formtools.LabelledCombo)4 ResourceBundle (java.util.ResourceBundle)3 ImageRegistry (org.eclipse.jface.resource.ImageRegistry)3 Shell (org.eclipse.swt.widgets.Shell)3 LoginException (org.talend.commons.exception.LoginException)3 OperationCancelException (org.talend.commons.exception.OperationCancelException)3 CoreRuntimePlugin (org.talend.core.runtime.CoreRuntimePlugin)3