Advertisement
weeez

IPAddress

Dec 17th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.46 KB | None | 0 0
  1. package router;
  2.  
  3. import java.util.ArrayList;
  4. public class IPAddress implements Comparable<IPAddress>{
  5.    
  6.     private int[] ipCim;
  7.  
  8.    
  9.     public IPAddress(int[] tomb){
  10.         ipCim = new int[4];
  11.         for(int i = 0; i < 4; ++i){
  12.             ipCim[i] = tomb[i];    
  13.         }  
  14.     }
  15.    
  16.     private int[] getIpCim(){
  17.         return ipCim;
  18.     }
  19.     public String toString(){
  20.         return ipCim[0] + "." + ipCim[1] + "." + ipCim[2] + "." +ipCim[3];
  21.     }
  22.  
  23.     public static IPAddress fromString(String s) throws IPFormatException{
  24.         int[] sv = new int[4]; 
  25.         String[] darabok = s.split("\\.");
  26.         try{
  27.             for(int i = 0; i < 4; ++i){
  28.                 sv[i] = Integer.parseInt(darabok[i]);
  29.             }
  30.         }
  31.         catch(Exception e){
  32.             throw new IPFormatException(s);
  33.         }  
  34.         boolean jo_e = true;
  35.         for(int i = 0; i < 4; ++i){
  36.             if( sv[i] < 0 || sv[i] > 255){
  37.                 jo_e = false;
  38.             }
  39.         }
  40.         if(jo_e){
  41.             return new IPAddress(sv);
  42.         }else{
  43.             throw new IPFormatException(s);
  44.         }
  45.     }
  46.    
  47.     @Override
  48.     public boolean equals(Object o){
  49.         if(o instanceof IPAddress){
  50.             IPAddress ip = (IPAddress) o;
  51.             return ugyanaz_e(this,ip);
  52.         }else{
  53.             return false;
  54.         }  
  55.     }
  56.    
  57.     private boolean ugyanaz_e(IPAddress seged1, IPAddress seged2){
  58.         int[] ip1 = seged1.getIpCim();
  59.         int[] ip2 = seged2.getIpCim();
  60.        
  61.         double sv1 = 0;
  62.         double sv2 = 0;
  63.         int x = 1000000000;
  64.         for(int i = 0; i < 4; ++i){        
  65.             if(i > 0){
  66.            
  67.                 x = x/1000;
  68.             }
  69.             sv1 += (double)ip1[i]*x;
  70.             sv2 += (double)ip2[i]*x;
  71.         }      
  72.         return sv1==sv2;
  73.     }  
  74.    
  75.     @Override
  76.     public int hashCode(){
  77.         int sv = 0;
  78.         for(int i = 0; i < 4; ++i){
  79.             sv+= ipCim[i];
  80.         }
  81.         return sv;
  82.     }
  83.    
  84.     @Override
  85.     public int compareTo(IPAddress o) throws NullPointerException, ClassCastException{
  86.         if(o == null){
  87.             throw new NullPointerException();
  88.         }
  89.         if(o instanceof IPAddress){
  90.             int[] ip1 = ipCim;
  91.             IPAddress ip = o;
  92.             int[] ip2 = ip.getIpCim();
  93.             double sajat = 0;
  94.             double param = 0;
  95.             int x = 1000000000;
  96.             for(int i = 0; i < 4; ++i){        
  97.                 if(i > 0){
  98.                
  99.                     x = x/1000;
  100.                 }
  101.                 sajat += (double)ip1[i]*x;
  102.                 param += (double)ip2[i]*x;
  103.             }          
  104.             if(param < sajat){
  105.                 return 1;
  106.             }
  107.             if(param == sajat){
  108.                 return 0;
  109.             }
  110.             if(param > sajat){
  111.                 return -1;
  112.             }
  113.         }
  114.         throw new ClassCastException();
  115.     }
  116.    
  117.     public boolean insideRng(IPAddress sv1, IPAddress sv2){
  118.         if((sv1.compareTo(this) == -1 ||sv1.compareTo(this) == 0 )&&
  119.             (sv2.compareTo(this) == 1 || sv2.compareTo(this)== 0)  
  120.             ){
  121.             return true;
  122.         }
  123.         return false;
  124.     }  
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement