/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.ptc.tifworkbench.reader;
import com.mks.api.Command;
import com.mks.api.Option;
import com.mks.api.response.APIException;
import com.mks.api.response.Response;
import com.mks.api.response.WorkItem;
import com.mks.api.response.WorkItemIterator;
import com.ptc.tifworkbench.integrity.IntegrityException;
import com.ptc.tifworkbench.integrity.IntegrityExceptionEx;
import com.ptc.tifworkbench.jaxbbinding.DynamicGroupDefinition;
import com.ptc.tifworkbench.jaxbbinding.DynamicGroupsDefinition;
import com.ptc.tifworkbench.worker.StatusReporter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* @author pbowden
*/
public class DynamicGroupReader extends AdminObjectReader
{
private DynamicGroupsDefinition dynGroups;
public DynamicGroupReader(DynamicGroupsDefinition dynGroups, StatusReporter reporter) throws IntegrityExceptionEx
{
super(reporter);
this.dynGroups = dynGroups;
}
@Override
void read() throws IntegrityException
{
log("Reading dynamic groups.");
Command cmd = new Command(Command.IM, "dynamicgroups");
Option fopt = new Option("fields");
fopt.add(Arrays.asList("membership"," name", "description", "image"));
cmd.addOption(fopt);
List<String> names = new ArrayList<String>();
try
{
Response resp = getApi().execute(cmd);
WorkItemIterator wkIt = resp.getWorkItems();
reportStatus(0, "Read dynamic groups.");
int count=0;
while(wkIt.hasNext())
{
WorkItem wk = wkIt.next();
String groupName = wk.getId();
log(" Read dynamic group: " + groupName);
reportStatus(50, "Read dynamic group: " + groupName);
count++;
DynamicGroupDefinition gdef = getFactory().createDynamicGroupDefinition();
gdef.setName(groupName);
String desc = wk.getField("description").getValueAsString();
gdef.setDescription(makeSafe(desc));
dynGroups.getDynamicGroup().add(gdef);
}
reportStatus(100, "Read " + count + " dynamic groups");
} catch (APIException ex)
{
throw IntegrityExceptionEx.create("Error reading list of dynamic groups.", ex);
}
}
}