/** * Servico responsavel por obter os dados referentes ao Usage de um ativo de software armezenado * no repositorio. Consome um XML padronizado (Command) contendo o caminho absoluto do repositorio * que se deseja utilizar em conjunto com o nome do ativo que se busca. * * @param command * @return */ @POST @Path("/getUsage") @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public Response getUsage(Command command) throws IOException { Hidra hidra; Usage usage = new Usage(); String assetName = command.getAssetName(); String path = command.getRepositoryPath(); if (path.isEmpty() || assetName.isEmpty()) { throw new DataNotFoundException( "The absolute path of the repository Or Asset Name has not been set"); } if (!new File(path).exists()) { throw new IOException("Could not find the informed repository"); } hidra = new Hidra(path); UsageType usageType = hidra.describleUsage(assetName); if (usageType != null) { List<ArtifactActivy> artAct = usageType.getArtifactActivities(); List<ContextReference> contexRefe = usageType.getContextReferences(); for (ArtifactActivy artifacty : artAct) { ArtifactActivys artifactys = new ArtifactActivys(artifacty.getArtifactId(), artifacty.getContextId()); for (Activity activity : artifacty.getActivities()) { Activities activities = new Activities( activity.getId(), activity.getTask(), activity.getReference(), activity.getRole(), activity.getTaskRole()); for (VariabilityPointBinding variability : activity.getVariability()) { Variability variabili = new Variability(variability.getId(), variability.getBindingRule()); activities.getListOfVariability().add(variabili); } artifactys.getListOfActivities().add(activities); usage.getArtifactActivitie().add(artifactys); } } for (ContextReference context : contexRefe) { ContextReferences cont = new ContextReferences(context.getContextId()); for (Activity activity : context.getActivities()) { Activities activities = new Activities( activity.getId(), activity.getTask(), activity.getReference(), activity.getRole(), activity.getTaskRole()); for (VariabilityPointBinding variability : activity.getVariability()) { Variability variabili = new Variability(variability.getId(), variability.getBindingRule()); activities.getListOfVariability().add(variabili); } cont.getListOfActivities().add(activities); usage.getContextReference().add(cont); } } return Response.status(Status.OK).entity(usage).build(); } throw new DataNotFoundException("Could not return to the Asset Usage "); }