/*
* 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.UserDefinition;
import com.ptc.tifworkbench.jaxbbinding.UsersDefinitions;
import com.ptc.tifworkbench.worker.StatusReporter;
import java.util.Arrays;
/**
*
* @author pbowden
*/
public class UserReader extends AdminObjectReader
{
private UsersDefinitions users;
public UserReader(UsersDefinitions users, StatusReporter reporter) throws IntegrityExceptionEx
{
super(reporter);
this.users = users;
}
@Override
void read() throws IntegrityException
{
log("Reading users.");
Command cmd = new Command(Command.IM, "users");
Option fopt = new Option("fields");
fopt.add(Arrays.asList("name", "description", "fullname", "email", "notificationRule"));
cmd.addOption(fopt);
try
{
Response resp = getApi().execute(cmd);
WorkItemIterator wkIt = resp.getWorkItems();
reportStatus(0, "Read users");
int count=0;
while(wkIt.hasNext())
{
WorkItem wk = wkIt.next();
String userName = wk.getId();
log(" Read user " + userName);
reportStatus(50, "Read user: " + userName);
count++;
UserDefinition udef = getFactory().createUserDefinition();
udef.setName(userName);
String desc = wk.getField("description").getValueAsString();
udef.setDescription(makeSafe(desc));
String rule = wk.getField("notificationRule").getValueAsString();
udef.setNotificationRule(makeSafe(rule));
String fullname = wk.getField("fullname").getValueAsString();
udef.setFullName(makeSafe(fullname));
String email = wk.getField("email").getValueAsString();
udef.setEmail(makeSafe(email));
// TODO - active. Decode binary.
users.getUser().add(udef);
}
reportStatus(100, "Read " + count + " users");
} catch (APIException ex)
{
throw IntegrityExceptionEx.create("Error reading list of users.", ex);
}
}
}