Coverage Report - org.trails.record.SqueezerDataEncoder
 
Classes in this File Line Coverage Branch Coverage Complexity
SqueezerDataEncoder
91% 
100% 
2.75
 
 1  
 package org.trails.record;
 2  
 
 3  
 import java.util.Arrays;
 4  
 import java.util.List;
 5  
 
 6  
 import org.apache.tapestry.record.PersistentPropertyDataEncoder;
 7  
 import org.apache.tapestry.services.DataSqueezer;
 8  
 
 9  
 
 10  
 /**
 11  
  * Responsible for squeezing lists of {@link org.apache.tapestry.record.PropertyChange}s back and
 12  
  * forth to a URL safe encoded string.
 13  
  */
 14  16
 public class SqueezerDataEncoder implements PersistentPropertyDataEncoder
 15  
 {
 16  
 
 17  
         DataSqueezer dataSqueezer;
 18  
 
 19  
         public void setDataSqueezer(DataSqueezer dataSqueezer)
 20  
         {
 21  8
                 this.dataSqueezer = dataSqueezer;
 22  8
         }
 23  
 
 24  
         public String encodePageChanges(List list)
 25  
         {
 26  4
                 Object[] objects = new Object[list.size()];
 27  4
                 objects = list.toArray(objects);
 28  
 
 29  4
                 String[] results = dataSqueezer.squeeze(objects);
 30  
 
 31  4
                 return arrayToString(results);
 32  
         }
 33  
 
 34  
         public List decodePageChanges(String s)
 35  
         {
 36  4
                 String[] strings = s.trim().substring(1, s.length() - 1).split(",");
 37  4
                 Object[] objects = dataSqueezer.unsqueeze(strings);
 38  4
                 return Arrays.asList(objects);
 39  
         }
 40  
 
 41  
         public String arrayToString(Object[] a)
 42  
         {
 43  4
                 if (a == null)
 44  0
                         return "null";
 45  4
                 int iMax = a.length - 1;
 46  4
                 if (iMax == -1)
 47  0
                         return "{}";
 48  
 
 49  4
                 StringBuilder b = new StringBuilder();
 50  4
                 b.append('{');
 51  16
                 for (int i = 0; ; i++)
 52  
                 {
 53  16
                         b.append(String.valueOf(a[i]));
 54  16
                         if (i == iMax)
 55  4
                                 return b.append('}').toString();
 56  12
                         b.append(",");
 57  
                 }
 58  
         }
 59  
 }