{"id":9286,"date":"2012-11-30T23:46:33","date_gmt":"2012-11-30T18:16:33","guid":{"rendered":"https:\/\/2thenew.online\/blog\/?p=9286"},"modified":"2012-11-30T23:46:33","modified_gmt":"2012-11-30T18:16:33","slug":"using-category-in-groovy","status":"publish","type":"post","link":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/","title":{"rendered":"Using Category in groovy"},"content":{"rendered":"<p>In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. <\/p>\n<p style=\"padding-bottom:5px\">\n<p>[java]<br \/>\nclass FileBinaryCategory {<br \/>\n    def static leftShift(File file, URL url) {<br \/>\n        url.withInputStream {is -&gt;<br \/>\n            file.withOutputStream {os -&gt;<br \/>\n                def bs = new BufferedOutputStream(os)<br \/>\n                bs &lt;&lt; is<br \/>\n            }<br \/>\n        }<br \/>\n    }<br \/>\n}<br \/>\n[\/java]<\/p>\n<p style=\"padding-bottom:5px\">\n<p>Here, I created a category class and created a static method named leftShift inside it. Here is how I used the category to download the file.<\/p>\n<p style=\"padding-bottom:5px\">\n<p>[java]<br \/>\nFile download(String address) {<br \/>\n        def file = File.createTempFile(address.encodeAsMD5(), &quot;.zip&quot;)<br \/>\n        use(FileBinaryCategory) {<br \/>\n            file &lt;&lt; address.toURL()<br \/>\n        }<br \/>\n        return file<br \/>\n}<br \/>\n[\/java]<\/p>\n<p style=\"padding-bottom:5px\">\n<p>A category class consists of static methods. The first argument of the method defines the type to which that method is applied. In my case, the first argument is of type File.<br \/>\nThe advantage of using category is that it can be applied to a specific part of the code by using the use keyword.<\/p>\n<p style=\"padding-bottom:5px\">\n<p>In line 4, the static method leftShift is called and a temporary file is passed as first argument and address.toURL() is passed as the second argument. The leftShift method simply copies the content from given address to the file.<\/p>\n<p style=\"padding-bottom:5px\">\n<p>Grails provides @Category annotation to achieve the same. You can find more about it <a href=\"https:\/\/2thenew.online\/blog\/groovy-category-annotation\/\">here<\/a>.<\/p>\n<p style=\"padding-bottom:10px\">\n<p>Raj Gupta<br \/>\nraj.gupta@intelligrape.com<br \/>\n@rajdgreat007<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs &lt;&lt; is } } } } [\/java] Here, [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":4,"footnotes":""},"categories":[7],"tags":[1119,1118],"class_list":["post-9286","post","type-post","status-publish","format-standard","hentry","category-grails","tag-download-file","tag-groovy-category"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"raj\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Using Category in groovy | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Using Category in groovy | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#article\",\"name\":\"Using Category in groovy | TO THE NEW Blog\",\"headline\":\"Using Category in groovy\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/raj\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-11-30T23:46:33+05:30\",\"dateModified\":\"2012-11-30T23:46:33+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#webpage\"},\"articleSection\":\"Grails, download-file, groovy-category\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"position\":2,\"name\":\"Grails\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#listItem\",\"name\":\"Using Category in groovy\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#listItem\",\"position\":3,\"name\":\"Using Category in groovy\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/raj\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/raj\\\/\",\"name\":\"raj\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9d46e1b8343293e046cadae61788af301ac4dd357dd9b9da5ddb3e9e5000222?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"raj\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/\",\"name\":\"Using Category in groovy | TO THE NEW Blog\",\"description\":\"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -> file.withOutputStream {os -> def bs = new BufferedOutputStream(os) bs\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-category-in-groovy\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/raj\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/raj\\\/#author\"},\"datePublished\":\"2012-11-30T23:46:33+05:30\",\"dateModified\":\"2012-11-30T23:46:33+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Using Category in groovy | TO THE NEW Blog","description":"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -> file.withOutputStream {os -> def bs = new BufferedOutputStream(os) bs","canonical_url":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#article","name":"Using Category in groovy | TO THE NEW Blog","headline":"Using Category in groovy","author":{"@id":"https:\/\/2thenew.online\/blog\/author\/raj\/#author"},"publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"},"datePublished":"2012-11-30T23:46:33+05:30","dateModified":"2012-11-30T23:46:33+05:30","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#webpage"},"articleSection":"Grails, download-file, groovy-category"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.online\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","name":"Grails"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","position":2,"name":"Grails","item":"https:\/\/2thenew.online\/blog\/category\/grails\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#listItem","name":"Using Category in groovy"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#listItem","position":3,"name":"Using Category in groovy","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","name":"Grails"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.online\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.online\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.online\/blog\/author\/raj\/#author","url":"https:\/\/2thenew.online\/blog\/author\/raj\/","name":"raj","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a9d46e1b8343293e046cadae61788af301ac4dd357dd9b9da5ddb3e9e5000222?s=96&d=mm&r=g","width":96,"height":96,"caption":"raj"}},{"@type":"WebPage","@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#webpage","url":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/","name":"Using Category in groovy | TO THE NEW Blog","description":"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -> file.withOutputStream {os -> def bs = new BufferedOutputStream(os) bs","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.online\/blog\/author\/raj\/#author"},"creator":{"@id":"https:\/\/2thenew.online\/blog\/author\/raj\/#author"},"datePublished":"2012-11-30T23:46:33+05:30","dateModified":"2012-11-30T23:46:33+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.online\/blog\/#website","url":"https:\/\/2thenew.online\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Using Category in groovy | TO THE NEW Blog","og:description":"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs","og:url":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/","og:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Using Category in groovy | TO THE NEW Blog","twitter:description":"In one of my projects, I needed to save file from a particular url. I found a groovier way of doing this using category. [java] class FileBinaryCategory { def static leftShift(File file, URL url) { url.withInputStream {is -&gt; file.withOutputStream {os -&gt; def bs = new BufferedOutputStream(os) bs","twitter:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"9286","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-30 08:08:02","updated":"2024-02-29 10:53:23","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\/category\/grails\/\" title=\"Grails\">Grails<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tUsing Category in groovy\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.online\/blog"},{"label":"Grails","link":"https:\/\/2thenew.online\/blog\/category\/grails\/"},{"label":"Using Category in groovy","link":"https:\/\/2thenew.online\/blog\/using-category-in-groovy\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/9286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/comments?post=9286"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/9286\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/media?parent=9286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/categories?post=9286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/tags?post=9286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}