// ============================================================================ // // 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.core.ui.editor.update; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.talend.core.model.process.IProcess2; import org.talend.core.model.properties.JobletProcessItem; import org.talend.core.model.properties.ProcessItem; import org.talend.core.model.update.UpdateResult; import org.talend.core.model.update.UpdatesConstants; import org.talend.designer.core.model.utils.emf.talendfile.NodeType; import org.talend.designer.core.ui.editor.nodes.Node; /** * ggu class global comment. Detailled comment */ public class UpdateContentProvider implements ITreeContentProvider { public Object[] getChildren(Object parentElement) { if (parentElement instanceof Job) { return ((Job) parentElement).getCategories().toArray(); } else if (parentElement instanceof Category) { return ((Category) parentElement).getItems().toArray(); } return null; } public Object getParent(Object element) { if (element instanceof Job) { return null; } else if (element instanceof Category) { return ((Category) element).getParent(); } else if (element instanceof Item) { return ((Item) element).getParent(); } return null; } public boolean hasChildren(Object element) { if (element instanceof Job) { return !((Job) element).getCategories().isEmpty(); } else if (element instanceof Category) { return !((Category) element).getItems().isEmpty(); } else if (element instanceof Item) { return false; } return false; } @SuppressWarnings("unchecked") public Object[] getElements(Object inputElement) { List<Job> jobs = new ArrayList<Job>(); if (inputElement instanceof Collection) { for (UpdateResult result : (List<UpdateResult>) inputElement) { String jobName = result.getJobInfor(); if (jobName == null) { jobName = UpdatesConstants.EMPTY; } Job job = getJob(jobs, jobName); if (job == null) { job = new Job(jobName); Object job2 = result.getJob(); if (job2 != null) { if (job2 instanceof IProcess2) { job.setJoblet(((IProcess2) job2).disableRunJobView()); // ?? joblet job.setReadOnlyProcess(result.isReadOnlyProcess()); IProcess2 process = (IProcess2) job2; org.talend.core.model.properties.Item processItem = process.getProperty().getItem(); if (processItem instanceof ProcessItem) { job.setJoblet(false); } else if (processItem instanceof JobletProcessItem) { job.setJoblet(true); } } } else { job.setJoblet(result.isJoblet()); } jobs.add(job); } Category category = job.getCategory(result.getCategory()); if (category == null) { category = new Category(job, result.getCategory()); category.setType(result.getUpdateType()); // for icon if (result.getUpdateObject() instanceof Node) { // for node icon category.setNode((Node) result.getUpdateObject()); } if (result.getUpdateObject() instanceof NodeType) { // for node icon category.setNode((NodeType) result.getUpdateObject()); } if (result.getUpdateObject() instanceof List) { // for node icon List list = (List) result.getUpdateObject(); if (list.size() > 0) { Object object = list.get(0); if (object instanceof Node) { category.setNode((Node) object); } } } job.addCategory(category); } Item item = new Item(category, result); category.addItem(item); } } return jobs.toArray(); } private Job getJob(List<Job> jobs, String name) { if (jobs == null || name == null) { return null; } for (Job job : jobs) { if (name.equals(job.getName())) { return job; } } return null; } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }