public static CategoryDTO toDTO(Category category, UriInfo uriInfo) {
   CategoryDTO dto = new CategoryDTO();
   dto.id = category.getId();
   dto.name = category.getName();
   Collection<ServiceLink> ls =
       new LinkedServiceBuilder()
           .add("GET", "GET", UriBuilderUtil.getCategory(uriInfo, dto.id))
           .add("INSERT", "PUT", UriBuilderUtil.insertCategory(uriInfo))
           .add("UPDATE", "POST", UriBuilderUtil.updateCategory(uriInfo, dto.id))
           .add("DELETE", "DELETE", UriBuilderUtil.deleteCategory(uriInfo, dto.id))
           .add(
               "INSERT-IN",
               "PUT",
               UriBuilderUtil.insertProductForCategory(uriInfo.getBaseUriBuilder(), dto.id))
           .build();
   dto.links = ls;
   return dto;
 }
 public static CategoryProductsDTO toCategoryProductsDTO(Category category, UriInfo uriInfo) {
   CategoryProductsDTO dto = new CategoryProductsDTO();
   dto.id = category.getId();
   dto.name = category.getName();
   Collection<ServiceLink> ls =
       new LinkedServiceBuilder()
           .add("GET", "GET", UriBuilderUtil.getCategory(uriInfo, dto.id))
           .add("INSERT", "PUT", UriBuilderUtil.insertCategory(uriInfo))
           .add("UPDATE", "POST", UriBuilderUtil.updateCategory(uriInfo, dto.id))
           .add("DELETE", "DELETE", UriBuilderUtil.deleteCategory(uriInfo, dto.id))
           .add(
               "INSERT-IN",
               "PUT",
               UriBuilderUtil.insertProductForCategory(uriInfo.getBaseUriBuilder(), dto.id))
           .add("UP", "GET", uriInfo.getBaseUriBuilder().path("categories").build())
           .build();
   dto.links = ls;
   for (Product p : category.getProducts()) {
     dto.products.add(Converter.toDTO(p, dto.id, uriInfo));
   }
   return dto;
 }
  public static ProductDTO toDTO(Product product, long catId, UriInfo uriInfo) {
    ProductDTO dto = new ProductDTO();
    dto.id = product.getId();
    dto.name = product.getName();
    dto.price = product.getPrice();
    dto.stock = product.getStock();
    dto.categoryId = catId;
    dto.description = product.getDescription();

    Collection<ServiceLink> ls =
        new LinkedServiceBuilder()
            .add(
                "GET",
                "GET",
                UriBuilderUtil.getProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id))
            .add(
                "INSERT",
                "PUT",
                UriBuilderUtil.insertProductForCategory(uriInfo.getBaseUriBuilder(), catId))
            .add(
                "UPDATE",
                "POST",
                UriBuilderUtil.updateProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id))
            .add(
                "DELETE",
                "DELETE",
                UriBuilderUtil.deleteProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id))
            .add("UP", "GET", UriBuilderUtil.getCategory(uriInfo, catId))
            .build();
    dto.links = ls;

    dto.properties = new ArrayList<PropertyDTO>();
    for (Property prop : product.getProperties()) {
      dto.properties.add(Converter.toDTO(prop));
    }
    return dto;
  }