Monday, February 20, 2017

Java 8 stream - GroupingBy sum BigDecimal

Java 8 stream - GroupingBy and summing a BigDecimal field

 import java.math.BigDecimal;  
 import java.util.Arrays;  
 import java.util.List;  
 import java.util.Map;  
 import java.util.stream.Collectors;  
 public class C1 {  
      public static void main(String[] arg){  
           Map<String, BigDecimal> result = data().stream()
               .collect(Collectors.groupingBy(Emp::getDept, 
                        Collectors.mapping(Emp::getSalary, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));  
           System.out.println(result);  
      }  
      static class Emp{  
           public Emp(String name, String dept, BigDecimal salary) {  
                super();  
                this.name = name;  
                this.dept = dept;  
                this.salary = salary;  
           }  
           private String name;  
           private String dept;  
           private BigDecimal salary;  
           public String getName() {  
                return name;  
           }  
           public String getDept() {  
                return dept;  
           }  
           public BigDecimal getSalary() {  
                return salary;  
           }  
      }  
      private static List<Emp> data(){  
           Emp e1 = new Emp("e1", "dept1", BigDecimal.valueOf(1.1));  
           Emp e2 = new Emp("e2", "dept1", BigDecimal.valueOf(1.1));  
           Emp e3 = new Emp("e3", "dept2", BigDecimal.valueOf(2.1));  
           Emp e4 = new Emp("e4", "dept2", BigDecimal.valueOf(1.9));  
           return Arrays.asList(e1, e2, e3, e4);  
      }  
 }  

Saturday, February 6, 2016

Get EC2 tag key-value in Java

The following code snippet is a sample for retrieving AWS EC2 instance's tags in a Java program.

import java.util.Collection;
import java.util.LinkedList;

import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.DescribeTagsRequest;
import com.amazonaws.services.ec2.model.DescribeTagsResult;
import com.amazonaws.services.ec2.model.Filter;
import com.amazonaws.services.ec2.model.TagDescription;
import com.amazonaws.util.EC2MetadataUtils;

public class GetTag{
 
 public static void main(String[] args){
  DescribeTagsRequest req = new DescribeTagsRequest();
  
  Collection filters = new LinkedList<>();
  LinkedList instanceList = new LinkedList<>();
                
                //Get instanceId of the current instance
  String instanceId = EC2MetadataUtils.getInstanceId();
  instanceList.add(instanceId);
  Filter filter = new Filter("resource-id", instanceList);
  filters.add(filter);
  req.setFilters(filters);
  AmazonEC2Client client = new AmazonEC2Client();
  client.setRegion(Region.getRegion(Regions.US_WEST_2));
  DescribeTagsResult tagResult = client.describeTags(req);
  if(tagResult != null){
   for(TagDescription tag:tagResult.getTags()){
    System.out.println(tag.getKey());
    System.out.println(tag.getValue());
   }
  }
 }
 
}


Monday, February 9, 2015

Perforce eclipse error: Error occurred during the SSL handshake: invalid SSL session

How to fix the eclipse's perforce plugin error "Error occurred during the SSL handshake: invalid SSL session"


If you are getting the above error, it means your JVM and Perforce servers are not successfully exchanging SSL certificate. You have install JCE (Java Cryptography Extension) to make it work.

These are the steps to fix this issue:

Download JCE



If the above didn't work, search with the keywords "JCE Java 6" or "JCE Java 7" or "JCE Java 8" depending on the Java version you are using.

Backup existing libraries


Backup the following libraries available under the location "$JAVA_HOME/jre/lib/security" to a safe location. You have to overwritten these libraries in next step.
  • local_policy.jar
  • US_export_policy.jar

Copy libraries

The JCE package downloaded in step one would have two jars (local_policy.jar, US_export_policy.jar). Extract these two files to the location "$JAVA_HOME/jre/lib/security"

Restart Eclipse

Close your eclipse if it is already running. After restarting the eclipse, you should be able to successfully connect to perforce.

Wednesday, August 18, 2010

Arrange Number - Blackberry game

I created my first Blackberry application. It is a simple puzzle game. Objective of the game is to arrange numbers in order by moving the numbers over one empty space available.

It runs all the device with Blackberry OS 4.6. It works very well in my Blackberry pearl flip.
Blackberry user please try this out.



Sunday, May 16, 2010

Deleting all data of a site in Firefox

The latest version of FireFox has good feature which suggest the URLs from your history as you type. But it would be annoying if suggest list the site you are not interested on.

To delete those sites from history.
1. Goto Menu History > Show all history (or) ctrl+shift+H
2. Select the site you can to delete by searching (or) browsing through the history.
3. Right click and say 'Forget about this site'

It will delete all the history of the selected site.

Tuesday, October 27, 2009

Memory Calculator

I have created a utility to calculated the size of memory occupied by different scope variable in ColdFusion.
I have submitted the same in Adobe Cookbooks. It is available at Memory Calculator

Have a look at it and provide your comments/suggestion/rating.

Tuesday, October 14, 2008

Coldfusion debugger common mistake


Step-through debugging is the best method of debugging I ever know. With the introduction of ColdFusion Step-through debugger as eclipse plug-in, coldfusion development became much handy. But I have noticed most of them do a simple careless mistake while setting up the debugger for the first time (including me). Just thought of mentioning it here.

In the RDS configuration under ColdFusion preference, the value of the port number should be the http port number of the ColdFusion server. But as a continuation of server side debugger setup, people used to enter the debugger port specified in the ColdFusion administer.

It would be better if Adobe includes some description for the Port Number field as it does for the Context Root field