blob: fb1a447e6da8e5e1a62ebc81dd798caf0072d549 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ats.world.search;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.osee.ats.AtsPlugin;
import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.artifact.VersionArtifact;
import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType;
import org.eclipse.osee.ats.util.widgets.dialog.TeamDefinitionDialog;
import org.eclipse.osee.ats.util.widgets.dialog.VersionListDialog;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.search.Active;
import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
/**
* @author Donald G. Dunne
*/
public class VersionTargetedForTeamSearchItem extends WorldUISearchItem {
private final VersionArtifact versionArt;
private VersionArtifact selectedVersionArt;
private final boolean returnAction;
private final TeamDefinitionArtifact teamDef;
private TeamDefinitionArtifact selectedTeamDef;
public VersionTargetedForTeamSearchItem(TeamDefinitionArtifact teamDef, VersionArtifact versionArt, boolean returnAction, LoadView loadView) {
this(null, teamDef, versionArt, returnAction, loadView);
}
public VersionTargetedForTeamSearchItem(String name, TeamDefinitionArtifact teamDef, VersionArtifact versionArt, boolean returnAction, LoadView loadView) {
super(name != null ? name : (returnAction ? "Actions" : "Workflows") + " Targeted-For Version", loadView,
FrameworkImage.VERSION);
this.teamDef = teamDef;
this.versionArt = versionArt;
this.returnAction = returnAction;
}
public VersionTargetedForTeamSearchItem(VersionTargetedForTeamSearchItem versionTargetedForTeamSearchItem) {
super(versionTargetedForTeamSearchItem, FrameworkImage.VERSION);
this.versionArt = versionTargetedForTeamSearchItem.versionArt;
this.returnAction = versionTargetedForTeamSearchItem.returnAction;
this.teamDef = versionTargetedForTeamSearchItem.teamDef;
}
@Override
public String getSelectedName(SearchType searchType) throws OseeCoreException {
if (getSearchVersionArtifact() != null) return super.getName() + " - " + getSearchVersionArtifact();
return "";
}
public VersionArtifact getSearchVersionArtifact() {
if (versionArt != null) return versionArt;
return selectedVersionArt;
}
@Override
public Collection<Artifact> performSearch(SearchType searchType) throws OseeCoreException {
if (getSearchVersionArtifact() == null) throw new IllegalArgumentException("Invalid release version");
ArrayList<Artifact> arts = new ArrayList<Artifact>();
for (Artifact art : getSearchVersionArtifact().getTargetedForTeamArtifacts())
if (returnAction)
arts.add(((TeamWorkFlowArtifact) art).getParentActionArtifact());
else
arts.add(art);
if (isCancelled()) return EMPTY_SET;
return arts;
}
@Override
public void performUI(SearchType searchType) throws OseeCoreException {
super.performUI(searchType);
if (searchType == SearchType.ReSearch && selectedVersionArt != null) return;
if (versionArt != null) return;
try {
selectedTeamDef = teamDef;
if (versionArt == null && selectedTeamDef == null) {
TeamDefinitionDialog ld = new TeamDefinitionDialog("Select Team", "Select Team");
ld.setInput(TeamDefinitionArtifact.getTeamReleaseableDefinitions(Active.Both));
int result = ld.open();
if (result == 0) {
selectedTeamDef = (TeamDefinitionArtifact) ld.getResult()[0];
} else
cancelled = true;
}
if (versionArt == null && selectedTeamDef != null) {
final VersionListDialog vld =
new VersionListDialog("Select Version", "Select Version",
selectedTeamDef.getVersionsArtifacts(VersionReleaseType.Both));
if (vld.open() == 0) {
selectedVersionArt = (VersionArtifact) vld.getResult()[0];
return;
}
}
} catch (Exception ex) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
}
cancelled = true;
}
/**
* @param selectedVersionArt the selectedVersionArt to set
*/
public void setSelectedVersionArt(VersionArtifact selectedVersionArt) {
this.selectedVersionArt = selectedVersionArt;
}
/* (non-Javadoc)
* @see org.eclipse.osee.ats.world.search.WorldUISearchItem#copy()
*/
@Override
public WorldUISearchItem copy() {
return new VersionTargetedForTeamSearchItem(this);
}
}