/* * 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.ProjectDefinition; import com.ptc.tifworkbench.jaxbbinding.ProjectsDefinitions; import com.ptc.tifworkbench.worker.StatusReporter; import java.util.Arrays; /** * * @author pbowden */ public class ProjectReader extends AdminObjectReader { private ProjectsDefinitions projects; public ProjectReader(ProjectsDefinitions projects, StatusReporter reporter) throws IntegrityExceptionEx { super(reporter); this.projects = projects; } @Override void read() throws IntegrityException { log("Reading projects."); Command cmd = new Command(Command.IM, "projects"); Option fopt = new Option("fields"); fopt.add(Arrays.asList("name", "description", "parent", "permittedGroups")); cmd.addOption(fopt); try { Response resp = getApi().execute(cmd); WorkItemIterator wkIt = resp.getWorkItems(); reportStatus(0, "Read projects"); int count=0; while(wkIt.hasNext()) { WorkItem wk = wkIt.next(); String projectName = wk.getId(); if(projectName.startsWith("/")) projectName = projectName.substring(1); log(" Read project " + projectName); reportStatus(50, "Read project: " + projectName); count++; ProjectDefinition pdef = getFactory().createProjectDefinition(); pdef.setName(projectName); String desc = wk.getField("description").getValueAsString(); pdef.setDescription(makeSafe(desc)); String groups = wk.getField("permittedGroups").getValueAsString(); pdef.setPermittedGroups(makeSafe(groups)); String parent = wk.getField("parent").getValueAsString(); pdef.setParent(makeSafe(parent)); projects.getProject().add(pdef); } reportStatus(100, "Read " + count + " projects"); } catch (APIException ex) { throw IntegrityExceptionEx.create("Error reading list of users.", ex); } } }