// ============================================================================
//
// Copyright (C) 2006-2016 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 com.amalto.workbench.models;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import com.amalto.workbench.availablemodel.AvailableModelUtil;
import com.amalto.workbench.availablemodel.IAvailableModel;
import com.amalto.workbench.i18n.Messages;
import com.amalto.workbench.utils.IConstants;
import com.amalto.workbench.utils.Util;
import com.amalto.workbench.utils.XtentisException;
import com.amalto.workbench.webservices.TMDMService;
public class ObjectRetriever implements IRunnableWithProgress {
private static Log log = LogFactory.getLog(ObjectRetriever.class);
TreeParent parentObject = null;
private String endpointaddress;
private String username;
private String password;
private String objectName = "";//$NON-NLS-1$
/**
* @author ymli refresh the parentObject
* @param parentObject
* @param endpointaddress
* @param username
* @param password
*/
public ObjectRetriever(TreeParent parentObject, String endpointaddress, String username, String password) {
super();
this.parentObject = parentObject;
this.endpointaddress = endpointaddress;
this.username = username;
this.password = password;
}
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask(Messages.bind(Messages.ObjectRetriever_TaskName, IConstants.TALEND), "admin".equals(username) ? 12 : 9);//$NON-NLS-1$
// Access to server and get port
try {
switch (parentObject.getType()) {
case TreeObject.WORKFLOW:
objectName = "WorkflowAvailableModel";//$NON-NLS-1$
break;
case TreeObject.JOB_REGISTRY:
objectName = "JobAvailableModel";//$NON-NLS-1$
break;
}
TMDMService service = Util.getMDMService(new URL(endpointaddress), username, password);
// commented this by jsxie to fix bug 21371
// parentObject.getServerRoot().removeChildFromUI(parentObject);
List<IAvailableModel> availablemodels = AvailableModelUtil.getAvailableModels();
for (IAvailableModel model : availablemodels) {
if (model.toString().indexOf(objectName) > 0) {
model.addTreeObjects(service, monitor, parentObject.getServerRoot());
}
}
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
} catch (XtentisException e) {
log.error(e.getMessage(), e);
}
}
}