/******************************************************************************* * Copyright (c) 2016 BREDEX GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.handlers.project; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.jubula.client.core.model.IReusedProjectPO; import org.eclipse.jubula.client.core.model.ProjectVersion; import org.eclipse.jubula.client.core.persistence.GeneralStorage; import org.eclipse.jubula.client.core.persistence.ProjectPM; import org.eclipse.jubula.client.ui.handlers.project.AbstractProjectHandler; import org.eclipse.jubula.client.ui.rcp.wizards.pages.UpdateReusedProjectsDialog; import org.eclipse.jubula.tools.internal.exception.JBException; /** * @author BREDEX GmbH * @created 01.07.2016 */ public class UpdateReusedProjectHandler extends AbstractProjectHandler { /** Info about the reused projects and the newest versions */ private Map<IReusedProjectPO, ProjectVersion> m_oldReusedProjects; /** Constructor */ public UpdateReusedProjectHandler() { searchOldReusedProjects(); } @Override protected Object executeImpl(ExecutionEvent event) { showUpdateReusedProjectDialog(); return null; } /** * Brings up the UpdateReusedProjectDiaog * @return the return code of dialog */ public int showUpdateReusedProjectDialog() { UpdateReusedProjectsDialog dialog = new UpdateReusedProjectsDialog( getActiveShell(), m_oldReusedProjects); dialog.setHelpAvailable(true); return dialog.open(); } /** Fill up the m_oldReusedProjects */ private void searchOldReusedProjects() { m_oldReusedProjects = new HashMap<IReusedProjectPO, ProjectVersion>(); Iterator<IReusedProjectPO> reusedProjects = GeneralStorage.getInstance() .getProject().getUsedProjects().iterator(); while (reusedProjects.hasNext()) { IReusedProjectPO reusedProject = reusedProjects.next(); try { ProjectVersion newestVersion = ProjectPM .findHighestVersionNumber( reusedProject.getProjectGuid()); if (newestVersion != null && newestVersion.compareTo( reusedProject.getProjectVersion()) > 0) { m_oldReusedProjects.put(reusedProject, newestVersion); } } catch (JBException e) { e.printStackTrace(); } } } /** @return reused project info */ public Map<IReusedProjectPO, ProjectVersion> getOldReusedProjects() { return m_oldReusedProjects; } /** * @return <code>false</code> if m_oldReusedProjects is null or empty * <code>true</code> otherwise. */ public boolean isThereOldReusedProject() { return m_oldReusedProjects == null || m_oldReusedProjects.isEmpty() ? false : true; } }