protected override void ProcessRecord()
{
if (Scope.ToLower() == "workspace")
{
WriteObject(Sdk.GetDataset(GetWorkspaceSetting()), true);
return;
}
if (string.IsNullOrEmpty(ExperimentId))
{
WriteWarning("ExperimentId must be specified.");
return;
}
List<Dataset> datasetInWorkspace = new List<Dataset>(Sdk.GetDataset(GetWorkspaceSetting()));
Dictionary<string, UserAssetBase> datasetInExperiment = new Dictionary<string, UserAssetBase>();
string rawJson;
Experiment exp = Sdk.GetExperimentById(GetWorkspaceSetting(), ExperimentId, out rawJson);
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic graph = jss.Deserialize<object>(rawJson);
foreach (var node in graph["Graph"]["ModuleNodes"])
foreach (var inputPort in node["InputPortsInternal"])
{
string id = inputPort["DataSourceId"];
if (!string.IsNullOrEmpty(id))
{
string familyId = id.Split('.')[1];
UserAssetBase dataset = datasetInWorkspace.SingleOrDefault(tm => tm.Id == id || tm.FamilyId == familyId);
if (dataset != null && !datasetInExperiment.ContainsKey(id))
{
bool isLatest = (datasetInWorkspace.SingleOrDefault(t => t.Id == id) != null);
datasetInExperiment.Add(id, new UserAssetBase
{
Id = id,
FamilyId = familyId,
DataTypeId = dataset.DataTypeId,
IsLatest = isLatest,
Name = dataset.Name
});
}
}
}
WriteObject(datasetInExperiment.Values, true);
}
}