// ============================================================================
//
// 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.repository.utils;
import java.util.ArrayList;
import java.util.List;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
/**
* ftang class global comment. Detailled comment <br/>
*
*/
public class JobVersionUtils {
/**
* ftang Comment method "getCurrentJobVersion".
*
* @return
*/
public static String getCurrentVersion(RepositoryNode repositoryNode) {
try {
// alert for bug TDI-20132
if (repositoryNode.getObject() != null
&& !repositoryNode.getObject().getRepositoryObjectType().equals(ERepositoryObjectType.FOLDER)) {
return ProxyRepositoryFactory.getInstance().getLastVersion(repositoryNode.getId()).getVersion();
}
List<IRepositoryNode> nodeChildren = repositoryNode.getChildren();
if (nodeChildren != null) {
for (IRepositoryNode node : nodeChildren) {
if (node.getObject() != null
&& node.getObject().getRepositoryObjectType().equals(ERepositoryObjectType.FOLDER)) {
String currentVersion = getCurrentVersion((RepositoryNode) node);
if (currentVersion != null && !"".equals(currentVersion)) {
return currentVersion;
}
} else {
if (node.getObject() != null) {
return ProxyRepositoryFactory.getInstance().getLastVersion(node.getId()).getVersion();
}
}
}
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return "";
}
/**
* wfy Comment method "getCurrentID",fixed bug TDI-20132.
*
* @return
*/
public static String getCurrentID(RepositoryNode repositoryNode) {
List<IRepositoryNode> nodeChildren = repositoryNode.getChildren();
if (nodeChildren != null) {
for (IRepositoryNode node : nodeChildren) {
if (node.getObject() != null && node.getObject().getRepositoryObjectType().equals(ERepositoryObjectType.FOLDER)) {
String currentID = getCurrentID((RepositoryNode) node);
if (currentID != null && !"".equals(currentID)) {
return currentID;
}
} else {
if (node.getObject() != null) {
return node.getId();
}
}
}
}
return ""; //$NON-NLS-1$
}
/**
* ftang Comment method "getAllVersions".
*
* @return
*/
public static String[] getAllVersions(RepositoryNode repositoryNode) {
List<String> versionList = new ArrayList<String>();
String nodeID = "";
if (repositoryNode.getObject() != null
&& !repositoryNode.getObject().getRepositoryObjectType().equals(ERepositoryObjectType.FOLDER)) {
nodeID = repositoryNode.getId();
} else {
nodeID = getCurrentID(repositoryNode);
}
try {
List<IRepositoryViewObject> allVersion = ProxyRepositoryFactory.getInstance().getAllVersion(
repositoryNode.getRoot().getProject(), nodeID, false);
for (IRepositoryViewObject repositoryObject : allVersion) {
versionList.add(repositoryObject.getVersion());
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return versionList.toArray(new String[versionList.size()]);
}
}