// ============================================================================
//
// Copyright (C) 2006-2012 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.designer.runprocess;
import java.util.List;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.core.model.general.Project;
import org.talend.core.model.properties.JobletProcessItem;
import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
* DOC nrousseau class global comment. Detailled comment
*
* @deprecated
*
* Do not cache anymore. This class actually is only used for compatibility, and keep the system of LASTEST_VERSION
*/
public class ItemCacheManager {
public static final String LATEST_VERSION = "Latest"; //$NON-NLS-1$
public static void clearCache() {
}
public static ProcessItem getProcessItem(Project project, String processId) {
if (processId == null || "".equals(processId)) { //$NON-NLS-1$
return null;
}
ProcessItem lastVersionOfProcess = null;
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
try {
IRepositoryViewObject object = factory.getLastVersion(project, processId);
if (object == null || !(object.getProperty().getItem() instanceof ProcessItem)) {
return null;
}
lastVersionOfProcess = (ProcessItem) object.getProperty().getItem();
return lastVersionOfProcess;
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return null;
}
public static ProcessItem getProcessItem(String processId) {
ProjectManager instance = ProjectManager.getInstance();
ProcessItem processItem = getRefProcessItem(instance.getCurrentProject(), processId);
return processItem;
}
public static ProcessItem getRefProcessItem(Project project, String processId) {
ProjectManager instance = ProjectManager.getInstance();
ProcessItem processItem = getProcessItem(project, processId);
if (processItem == null) {
for (Project p : instance.getReferencedProjects(project)) {
processItem = getRefProcessItem(p, processId);
if (processItem != null) {
break;
}
}
}
return processItem;
}
public static ProcessItem getProcessItem(String processId, String version) {
ProcessItem refProcessItem = getRefProcessItem(ProjectManager.getInstance().getCurrentProject(), processId, version);
return refProcessItem;
}
public static ProcessItem getRefProcessItem(Project project, String processId, String version) {
ProjectManager projectManager = ProjectManager.getInstance();
ProcessItem processItem = getProcessItem(project, processId, version);
if (processItem == null) {
for (Project p : projectManager.getReferencedProjects(project)) {
processItem = getRefProcessItem(p, processId, version);
if (processItem != null) {
break;
}
}
}
return processItem;
}
public static ProcessItem getProcessItem(Project project, String processId, String version) {
if (processId == null || "".equals(processId)) { //$NON-NLS-1$
return null;
}
// feature 19312
if (version == null || version.equals("") || LATEST_VERSION.equals(version)) {
return getProcessItem(project, processId);
}
ProcessItem selectedProcessItem = null;
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
try {
List<IRepositoryViewObject> allVersions = factory.getAllVersion(project, processId, false);
for (IRepositoryViewObject ro : allVersions) {
if (ro.getVersion().equals(version) && ro.getProperty().getItem() instanceof ProcessItem) {
selectedProcessItem = (ProcessItem) ro.getProperty().getItem();
break;
}
}
return selectedProcessItem;
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return null;
}
public static String getProcessNameByProcessId(String processId) {
ProcessItem item = getProcessItem(processId);
if (item != null) {
return item.getProperty().getLabel();
}
return null;
}
public static JobletProcessItem getJobletProcessItem(Project project, String jobletId) {
if (jobletId == null || "".equals(jobletId)) { //$NON-NLS-1$
return null;
}
JobletProcessItem lastVersionOfJoblet = null;
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
try {
IRepositoryViewObject object = factory.getLastVersion(project, jobletId);
if (object == null || object.getRepositoryObjectType() != ERepositoryObjectType.JOBLET) {
return null;
}
lastVersionOfJoblet = (JobletProcessItem) object.getProperty().getItem();
return lastVersionOfJoblet;
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return null;
}
public static JobletProcessItem getJobletProcessItem(String jobletId) {
ProjectManager projectManager = ProjectManager.getInstance();
JobletProcessItem jobletProcessItem = getJobletProcessItem(projectManager.getCurrentProject(), jobletId);
if (jobletProcessItem == null) {
for (Project p : projectManager.getReferencedProjects()) {
jobletProcessItem = getJobletProcessItem(p, jobletId);
if (jobletProcessItem != null) {
break;
}
}
}
return jobletProcessItem;
}
public static JobletProcessItem getJobletProcessItem(Project project, String jobletId, String version) {
if (jobletId == null || "".equals(jobletId)) { //$NON-NLS-1$
return null;
}
if (version == null || LATEST_VERSION.equals(version)) {
return getJobletProcessItem(jobletId);
}
JobletProcessItem selectedProcessItem = null;
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
try {
List<IRepositoryViewObject> allVersions = factory.getAllVersion(project, jobletId, false);
for (IRepositoryViewObject ro : allVersions) {
if (ro.getRepositoryObjectType() == ERepositoryObjectType.JOBLET) {
if (ro.getVersion().equals(version)) {
selectedProcessItem = (JobletProcessItem) ro.getProperty().getItem();
}
}
}
return selectedProcessItem;
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return null;
}
public static JobletProcessItem getJobletProcessItem(String jobletId, String version) {
ProjectManager projectManager = ProjectManager.getInstance();
JobletProcessItem jobletProcessItem = getJobletProcessItem(projectManager.getCurrentProject(), jobletId, version);
if (jobletProcessItem == null) {
for (Project p : projectManager.getReferencedProjects()) {
jobletProcessItem = getJobletProcessItem(p, jobletId, version);
if (jobletProcessItem != null) {
break;
}
}
}
return jobletProcessItem;
}
}