/*******************************************************************************
* Copyright (c) 2013 Cloud Bees, Inc.
* All rights reserved.
* This program is 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:
* Cloud Bees, Inc. - initial API and implementation
*******************************************************************************/
package com.cloudbees.eclipse.dev.ui.views.build;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import com.cloudbees.eclipse.core.jenkins.api.ArtifactPathItem;
import com.cloudbees.eclipse.core.jenkins.api.JenkinsBuildDetailsResponse;
import com.cloudbees.eclipse.core.jenkins.api.JenkinsBuildDetailsResponse.Artifact;
public class ArtifactsContentProvider implements ITreeContentProvider {
private JenkinsBuildDetailsResponse buildDetails;
public void dispose() {
this.buildDetails = null;
}
public JenkinsBuildDetailsResponse getBuildDetails() {
return this.buildDetails;
}
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
if (newInput instanceof JenkinsBuildDetailsResponse) {
this.buildDetails = (JenkinsBuildDetailsResponse) newInput;
} else {
this.buildDetails = null;
}
}
public Object[] getElements(final Object inputElement) {
return getChildren(inputElement);
}
public Object[] getChildren(final Object parentElement) {
if (parentElement instanceof String) {
return new String[0];
}
if (parentElement == null || parentElement instanceof JenkinsBuildDetailsResponse) {
Artifact[] artifacts = (this.buildDetails).artifacts;
List<ArtifactPathItem> ret = new ArrayList<ArtifactPathItem>();
if (artifacts != null) {
for (Artifact art : artifacts) {
ret.add(new ArtifactPathItem(this.buildDetails, art));
}
}
return ret.toArray(new ArtifactPathItem[ret.size()]);
}
// if (parentElement instanceof JenkinsBuildDetailsResponse.Artifact[]) {
// return (JenkinsBuildDetailsResponse.Artifact[]) parentElement;
// }
//
// if (parentElement instanceof JenkinsBuildDetailsResponse.Artifact) {
// List<String> ret = new ArrayList<String>();
// ret.add(((JenkinsBuildDetailsResponse.Artifact) parentElement).relativePath);
// return ret.toArray(new String[ret.size()]);
// }
//System.out.println("Unknown parent: " + parentElement);
return null;
}
public Object getParent(final Object element) {
// if (element instanceof ChangeSetPathItem) {
// return ((ChangeSetPathItem) element).parent;
// }
return null;
}
public boolean hasChildren(final Object element) {
Object[] children = getChildren(element);
return children != null && children.length > 0;
// if (element instanceof ChangeSetItem) {
// ChangeSetItem item = (ChangeSetItem) element;
// if (item.addedPaths != null && item.addedPaths.length > 0) {
// return true;
// }
// if (item.deletedPaths != null && item.deletedPaths.length > 0) {
// return true;
// }
// if (item.modifiedPaths != null && item.modifiedPaths.length > 0) {
// return true;
// }
// if (item.paths != null && item.paths.length > 0) {
// return true;
// }
// }
// if (element instanceof ChangeSetItem[]) {
// return ((ChangeSetItem[]) element).length > 0;
// }
// if (element instanceof JenkinsBuildDetailsResponse) {
// return ((JenkinsBuildDetailsResponse) element).changeSet != null
// && ((JenkinsBuildDetailsResponse) element).changeSet.items != null
// && ((JenkinsBuildDetailsResponse) element).changeSet.items.length > 0;
// }
// return false;
}
}