EMMA Coverage Report (generated Mon Aug 23 17:21:34 CEST 2010)
[all classes][dmg.cells.nucleus]

COVERAGE SUMMARY FOR SOURCE FILE [CellRoute.java]

nameclass, %method, %block, %line, %
CellRoute.java0%   (0/1)0%   (0/20)0%   (0/652)0%   (0/134)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class CellRoute0%   (0/1)0%   (0/20)0%   (0/652)0%   (0/134)
<static initializer> 0%   (0/1)0%   (0/32)0%   (0/1)
CellRoute (): void 0%   (0/1)0%   (0/3)0%   (0/1)
CellRoute (Args): void 0%   (0/1)0%   (0/123)0%   (0/22)
CellRoute (String, String, String): void 0%   (0/1)0%   (0/40)0%   (0/8)
CellRoute (String, String, int): void 0%   (0/1)0%   (0/8)0%   (0/3)
_CellRoute (String, String, int): void 0%   (0/1)0%   (0/195)0%   (0/54)
clone (): Object 0%   (0/1)0%   (0/22)0%   (0/6)
equals (Object): boolean 0%   (0/1)0%   (0/24)0%   (0/3)
getCellName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getClone (): CellRoute 0%   (0/1)0%   (0/22)0%   (0/6)
getDomainName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getRouteType (): int 0%   (0/1)0%   (0/3)0%   (0/1)
getRouteTypeName (): String 0%   (0/1)0%   (0/5)0%   (0/1)
getTarget (): CellAddressCore 0%   (0/1)0%   (0/6)0%   (0/1)
getTargetName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
hashCode (): int 0%   (0/1)0%   (0/15)0%   (0/1)
headerToString (): String 0%   (0/1)0%   (0/25)0%   (0/1)
main (String []): void 0%   (0/1)0%   (0/39)0%   (0/8)
splitDestination (String): void 0%   (0/1)0%   (0/50)0%   (0/13)
toString (): String 0%   (0/1)0%   (0/31)0%   (0/1)

1package dmg.cells.nucleus ;
2 
3import  dmg.util.*;
4import  java.io.Serializable ;
5 
6/**
7  *  
8  *
9  * @author Patrick Fuhrmann
10  * @version 0.1, 15 Feb 1998
11  */
12  /*
13   * route add -default             <cell>[@<domain>]
14   * route add -domain  <domain>    <cell>[@<domain>]
15  *   WARNING : This Class is designed to be imutual.
16  *             All other class rely on that fact and
17  *             a lot of things may fail at runtime
18  *             if this design item is changed.
19   */
20public class CellRoute implements Cloneable , Serializable {
21   static final long serialVersionUID = 4566260400288960984L;
22   private String  _destCell ;
23   private String  _destDomain ;
24   private String  _gateway ;
25   private int     _type  ;
26   
27   public static final int AUTO      = 0 ;
28   public static final int EXACT     = 1 ;
29   public static final int WELLKNOWN = 2 ;
30   public static final int DOMAIN    = 3 ;
31   public static final int DEFAULT   = 4 ;
32   public static final int DUMPSTER  = 5 ;
33   public static final int ALIAS     = 6 ;
34   
35   private final static String [] __typeNames =
36     { "Auto"    , "Exact"    , "Wellknown" , "Domain" , 
37       "Default" , "Dumpster" , "Alias"                  } ;
38   
39   public CellRoute(){}
40   public CellRoute( Args args )
41          throws IllegalArgumentException {
42          
43      String  opt = args.optc() == 0 ? "-auto" : args.optv(0) ;
44      int type ;
45      
46      if( args.argc() == 0 )
47         throw new IllegalArgumentException("Not enough arguments" ) ;
48      
49      type = AUTO ;
50           if( opt.equals( "-auto")     ) type = AUTO ;
51      else if( opt.equals( "-domain"    ))type = DOMAIN ;
52      else if( opt.equals( "-wellknown" ))type = WELLKNOWN ;
53      else if( opt.equals( "-exact"     ))type = EXACT ;
54      else if( opt.equals( "-default"   ))type = DEFAULT ;
55      else if( opt.equals( "-dumpster"  ))type = DUMPSTER ;
56      else if( opt.equals( "-alias"     ))type = ALIAS ;
57        
58      if( args.argc() == 1 ){
59        if( ( type == DEFAULT ) || ( type == DUMPSTER ) ){
60           _CellRoute( null , args.argv(0) , type ) ;
61        }else{
62           throw new IllegalArgumentException("Not enough arguments" ) ;
63        }
64      }else if( args.argc() == 2 ){
65        if( ( type == DEFAULT ) || ( type == DUMPSTER ) ){
66           throw new IllegalArgumentException("Too many arguments" ) ;
67        }else{
68           _CellRoute( args.argv(0) , args.argv(1) , type ) ;
69        }
70      }else
71         throw new IllegalArgumentException("Too many arguments" ) ;
72          
73   } 
74   public CellRoute( String dest , String gateway , int type )
75          throws IllegalArgumentException {
76          
77          _CellRoute( dest , gateway , type ) ;
78   }
79   public CellRoute( String dest , String gateway , String type )
80          throws IllegalArgumentException {
81          
82        int i ;
83        for( i = 0 ; 
84             ( i < __typeNames.length ) &&
85             ( ! __typeNames[i].equals( type )  )  ; i++ ) ;
86        if( ( i == 0 ) || ( i == __typeNames.length ) )
87          throw new IllegalArgumentException("Illegal Route Type "+type ) ;
88        _CellRoute( dest , gateway , i ) ;
89   }
90   public void _CellRoute( String dest , String gateway , int type )
91          throws IllegalArgumentException {
92      splitDestination( dest ) ;
93      _gateway    = gateway ;
94      _type       = type ;
95      switch( _type ){
96        case EXACT :
97        case ALIAS :
98           if( _destCell == null )
99             throw new IllegalArgumentException("No destination cell spec." ) ;
100           if( _destDomain == null )_destDomain = "local" ;
101        break ;
102        case WELLKNOWN :
103           if( _destCell == null )
104             throw new IllegalArgumentException("No destination cell spec." ) ;
105           if( _destDomain != null )
106             throw new IllegalArgumentException("WELLKNOWN doesn't accept domain" ) ;
107           _destDomain = "*" ;
108        break ;
109        case DOMAIN :
110           if( _destDomain != null )
111             throw new IllegalArgumentException("DOMAIN doesn't accept cell" ) ;
112           if( _destCell == null )
113             throw new IllegalArgumentException("No destination domain spec." ) ;
114           _destDomain = _destCell ;
115           _destCell   = "*" ;
116        break ;
117        case DUMPSTER :
118           if( _destCell != null )
119             throw new IllegalArgumentException("DUMPSTER doesn't accept cell" ) ;
120           if( _destDomain != null )
121             throw new IllegalArgumentException("DUMPSTER doesn't accept domain" ) ;
122           _destDomain = "*" ;
123           _destCell   = "*" ;
124        break ;
125        case DEFAULT :
126           if( _destCell != null )
127             throw new IllegalArgumentException("DEFAULT doesn't accept cell" ) ;
128           if( _destDomain != null )
129             throw new IllegalArgumentException("DEFAULT doesn't accept domain" ) ;
130           _destDomain = "*" ;
131           _destCell   = "*" ;
132        break ;
133        case AUTO :
134           if( ( _destCell != null ) && ( _destDomain != null ) ){
135             if( _destCell.equals("*") && _destDomain.equals("*") ){
136                _type = DEFAULT ;
137             }else if( _destCell.equals("*") ){
138                _type = DOMAIN ;
139             }else if( _destDomain.equals("*") ){
140                _type = WELLKNOWN ;
141             }else{
142                _type = EXACT ;
143             }
144           }else if( _destCell == null ){
145             _destCell = "*" ;
146             _type     = DOMAIN ;
147           }else if( _destDomain == null ){
148             _destDomain = "*" ;
149             _type       = WELLKNOWN ;
150           }else{
151             _destCell   = "*" ;
152             _destDomain = "*" ;
153             _type       = DEFAULT ;
154           }
155        break ;
156        default :
157           throw new IllegalArgumentException( "Unknown Route type" ) ;
158      
159      }
160   }
161   public String getCellName(){   return _destCell ; }
162   public String getDomainName(){ return _destDomain ; }
163   public String getTargetName(){ return _gateway ; }
164   
165   public int    getRouteType(){  return _type ; }
166   public CellAddressCore getTarget(){
167   
168      return new CellAddressCore( _gateway  ) ;
169   }
170   public String getRouteTypeName(){
171      return __typeNames[_type] ;
172   }
173   private void splitDestination( String dest ){
174       if( ( dest == null ) || ( dest.equals("") ) ){
175           _destCell   = null ;
176           _destDomain = null ;
177           return ;
178       }
179       int ind = dest.indexOf( '@' ) ;
180       if( ind < 0 ){
181           _destCell   = dest ;
182           _destDomain = null ;
183       }else{
184           _destCell = dest.substring( 0 , ind ) ;
185           if( ind == ( dest.length() -1 ) )
186              _destDomain = null ;
187           else
188              _destDomain = dest.substring( ind+1 ) ;
189       }
190   
191   }
192   public int hashCode(){  
193      return  (_destCell+_destDomain+_gateway).hashCode() ;
194   } 
195   public boolean equals( Object x ){
196           
197           if( !(x instanceof CellRoute) ) return false;
198           
199      CellRoute route = (CellRoute)x ;
200      return ( route._destCell.equals( _destCell ) ) &&
201             ( route._destDomain.equals( _destDomain ) ) ;
202   }
203   private static final int _destLength   = 15 ;
204   private static final int _domainLength = 15 ;
205   private static final int _gateLength   = 25 ;
206   public static String headerToString(){
207      return Formats.field( "Dest Cell"    , _destLength   , Formats.CENTER ) +
208             Formats.field( "Dest Domain"  , _domainLength , Formats.CENTER ) +
209             Formats.field( "Gateway"      , _gateLength   , Formats.CENTER ) +
210             Formats.field( "Type"        , 10 , Formats.CENTER );
211   }
212   public String toString(){
213      return Formats.field( _destCell    , _destLength   , Formats.CENTER ) +
214             Formats.field( _destDomain  , _domainLength , Formats.CENTER ) +
215             Formats.field( _gateway     , _gateLength   , Formats.CENTER ) +
216             Formats.field( __typeNames[_type]  , 10 , Formats.LEFT );
217   }
218   /*
219   CellRoute getClone(){ 
220      try { 
221         return (CellRoute)this.clone() ; 
222      }catch( CloneNotSupportedException cnse ){
223         return null ;
224      }
225   }
226   */
227   CellRoute getClone(){ 
228      CellRoute cr   = new CellRoute() ;
229      cr._destCell   = _destCell ;
230      cr._destDomain = _destDomain ;
231      cr._gateway    = _gateway ;
232      cr._type       = _type ;
233      return cr ;
234   }
235   protected Object clone(){ 
236      CellRoute cr   = new CellRoute() ;
237      cr._destCell   = _destCell ;
238      cr._destDomain = _destDomain ;
239      cr._gateway    = _gateway ;
240      cr._type       = _type ;
241      return cr ;
242   }
243   public static void main( String [] args ){
244     if( args.length < 3 )System.exit(4);
245     
246     try{
247        CellRoute route ;
248        route = new CellRoute( args[0] , args[1] , args[2] ) ;
249        System.out.println( CellRoute.headerToString() ) ;
250        System.out.println( route.toString() ) ;
251     }catch( IllegalArgumentException iae ){
252        System.out.println( "exception : "+iae ) ;
253     }
254   }
255 
256 
257}
258 

[all classes][dmg.cells.nucleus]
EMMA 2.0.5312 (C) Vladimir Roubtsov