create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / db / ConversionUtils.java
1 package net.sf.openrocket.android.db;\r
2 \r
3 import java.io.ByteArrayInputStream;\r
4 import java.io.ByteArrayOutputStream;\r
5 import java.io.ObjectInputStream;\r
6 import java.io.ObjectOutputStream;\r
7 import java.util.ArrayList;\r
8 import java.util.List;\r
9 \r
10 import net.sf.openrocket.motor.Motor;\r
11 import net.sf.openrocket.util.Coordinate;\r
12 \r
13 public abstract class ConversionUtils {\r
14 \r
15         static double[] stringToDelays( String value ) {\r
16                 if (value == null || "".equals(value) ) {\r
17                         return new double[0];\r
18                 }\r
19                 String[] parts = value.split(",");\r
20                 double[] values = new double[parts.length];\r
21                 for( int i =0; i<parts.length; i++ ) {\r
22                         String p = parts[i];\r
23                         if ( "P".equals(p) ) {\r
24                                 values[i] = Motor.PLUGGED;\r
25                         } else {\r
26                                 double d = Double.parseDouble(p);\r
27                                 values[i] = d;\r
28                         }\r
29                 }\r
30                 return values;\r
31         }\r
32         \r
33         public static String delaysToString( double[] delays ) {\r
34                 StringBuilder s = new StringBuilder();\r
35                 boolean first = true;\r
36                 for( double d:delays ) {\r
37                         if (!first) {\r
38                                 s .append(",");\r
39                         } else {\r
40                                 first = false;\r
41                         }\r
42                         if ( d == Motor.PLUGGED ) {\r
43                                 s.append("P");\r
44                         } else {\r
45                                 s.append(Math.round(d));\r
46                         }\r
47                 }\r
48                 return s.toString();\r
49         }\r
50         \r
51         public static List<String> delaysToStringList( double[] delays ) {\r
52                 ArrayList<String> list = new ArrayList<String>( delays.length );\r
53                 for( double d: delays ) {\r
54                         if ( d == Motor.PLUGGED ) {\r
55                                 list.add("P");\r
56                         } else {\r
57                                 list.add(String.valueOf(Math.round(d)));\r
58                         }\r
59                 }\r
60                 return list;\r
61         }\r
62         \r
63         public static double stringToDelay( String s ) {\r
64                 if ( "P".equals(s) ) {\r
65                         return Motor.PLUGGED;\r
66                 }\r
67                 return Long.parseLong(s);\r
68         }\r
69         \r
70         static double[] deserializeArrayOfDouble( byte[] bytes ) throws Exception {\r
71                 double[] data = null;\r
72                 if (bytes != null ) {\r
73                         ObjectInputStream is = new ObjectInputStream( new ByteArrayInputStream(bytes));\r
74                         data = (double[]) is.readObject();\r
75                 }\r
76                 return data;\r
77         }\r
78 \r
79         static byte[] serializeArrayOfDouble( double[] data ) throws Exception {\r
80 \r
81                 byte[] serObj = null;\r
82                 if ( data != null ) {\r
83                         ByteArrayOutputStream b = new ByteArrayOutputStream();\r
84                         ObjectOutputStream os = new ObjectOutputStream(b);\r
85                         os.writeObject(data);\r
86                         os.close();\r
87                         serObj = b.toByteArray();\r
88                 }\r
89                 return serObj;\r
90         }\r
91 \r
92         static Coordinate[] deserializeArrayOfCoordinate( byte[] bytes ) throws Exception {\r
93                 Coordinate[] data = null;\r
94                 if (bytes != null ) {\r
95                         ObjectInputStream is = new ObjectInputStream( new ByteArrayInputStream(bytes));\r
96                         data = (Coordinate[]) is.readObject();\r
97                 }\r
98                 return data;\r
99         }\r
100 \r
101         static byte[] serializeArrayOfCoordinate( Coordinate[] data ) throws Exception {\r
102 \r
103                 byte[] serObj = null;\r
104                 if ( data != null ) {\r
105                         ByteArrayOutputStream b = new ByteArrayOutputStream();\r
106                         ObjectOutputStream os = new ObjectOutputStream(b);\r
107                         os.writeObject(data);\r
108                         os.close();\r
109                         serObj = b.toByteArray();\r
110                 }\r
111                 return serObj;\r
112         }\r
113 \r
114 \r
115 }