package com.clouck.webapp.controller; import java.util.Collection; import java.util.List; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.clouck.exception.ClouckInvalidParrameterException; import com.clouck.exception.CloudVersionException; import com.clouck.model.PageView; import com.clouck.model.Region; import com.clouck.model.ResourceType; import com.clouck.model.aws.AbstractResource; import com.clouck.model.aws.ec2.Ec2Version; import com.clouck.service.AwsService; import com.google.common.base.Optional; @Controller @RequestMapping("/resources") public class ResourcesController extends AbstractController { private static final Logger log = LoggerFactory.getLogger(ResourcesController.class); @Autowired private AwsService awsService; // @SuppressWarnings("rawtypes") // @RequestMapping(value = "/{resourceType}/{millis}/{resourceId}/accounts/{accountId}", method = RequestMethod.GET) // public String load(@PathVariable String resourceType, @PathVariable long millis, @PathVariable String resourceId, @PathVariable String accountId, Model model) { // log.debug("load resources page.."); // prep(accountId, model); // ResourceType rt = ResourceType.find(resourceType); // // Optional<AbstractResource> oResource = awsService.findResource(resourceId, ResourceType.find(resourceType)); // // if (oResource.isPresent()) { // model.addAttribute("ec2Resource", oResource.get()); // model.addAttribute("millis", millis); // return rt.findResourcePage(); // } else { // throw new CloudVersionException("invalid request, id:" + resourceId + // "don't exist"); // } // } // // @RequestMapping(value = "/{resourceType}/{millis}/accounts/{accountId}", method = RequestMethod.GET) // public String loadSummary(@PathVariable String resourceType, @PathVariable long millis, @PathVariable String accountId, Model model) { // log.debug("load resources page.."); // prep(accountId, model); // // ResourceType rt = ResourceType.find(resourceType); // Collection<AbstractResource<?>> ec2Resources = awsService.findResources(accountId, ResourceType.find(resourceType), new DateTime(millis)); // model.addAttribute("ec2Resources", ec2Resources); // model.addAttribute("millis", millis); // return rt.findSummaryVariableName(); // } // @SuppressWarnings("rawtypes") // @RequestMapping(value = "/{resourceType}/accounts/{accountId}", method = RequestMethod.GET) // public String loadResources(@PathVariable String resourceType, @PathVariable String accountId, Model model) { // log.debug("load resources summary page.."); // prep(accountId, model); // ResourceType rt = ResourceType.find(resourceType); // // awsService.findResources(ec2VersionId) // // Optional<AbstractResource> oResource = awsService.findResource(id, ResourceType.find(resourceType)); // // if (oResource.isPresent()) { // model.addAttribute("ec2Resource", oResource.get()); // } else { // throw new CloudVersionException("invalid request, id:" + id + // "don't exist"); // } // return rt.findSingleVariableName(); // } // @RequestMapping(value = "/{resourceType}/versions/{uniqueId}/accounts/{accountId}", method = RequestMethod.GET) // public String loadHistory(@PathVariable String resourceType, @PathVariable String uniqueId, @PathVariable String accountId, Model model) { // log.debug("load resources page.."); // prep(accountId, model); // ResourceType rt = ResourceType.find(resourceType); // //TODO: PASS ACCOUNT ID AND REGION... TO MAKE SURE // List<? extends AbstractResource<?>> resources = awsService.findResources(ResourceType.find(resourceType), accountId, uniqueId); // // model.addAttribute("ec2Resources", resources); // model.addAttribute("uniqueId", uniqueId); // return rt.findResourceHistoryPage(); // } // // @RequestMapping(value = "/{resourceType}/accounts/{accountId}", method = RequestMethod.GET) // public String loadHistory(@PathVariable String resourceType, @PathVariable String accountId, @RequestParam(value="view", required = false) PageView view, // @RequestParam(value="region", required = false) Region region, Model model) { // log.debug("load resources page.."); // if (view == null) { // view = PageView.Chart; // } // prep(accountId, model); // ResourceType rt = ResourceType.find(resourceType); // switch (view) { // case Table: // List<Ec2Version> ec2Versions = null; // if (region == null) { // ec2Versions = awsService.findEc2Versions(accountId, rt); // } else { // ec2Versions = awsService.findEc2Versions(accountId, rt, region); // } // model.addAttribute("ec2Versions", ec2Versions); // return rt.findHistoryVariableName(); // case Chart: // return rt.findVariableName(); // default: // throw new ClouckInvalidParrameterException("view:" + view + " is not recogonized"); // } // } }