1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.locationtracker.data;
18 
19 import com.android.locationtracker.data.TrackerEntry.EntryType;
20 
21 /**
22  * Formats tracker data as CSV output
23  */
24 class CSVFormatter implements IFormatter {
25 
26     private static final String DELIMITER = ", ";
27 
getHeader()28     public String getHeader() {
29         StringBuilder csvBuilder = new StringBuilder();
30         for (String col : TrackerEntry.ATTRIBUTES) {
31             // skip type and id column
32             if (!TrackerEntry.ENTRY_TYPE.equals(col) &&
33                 !TrackerEntry.ID_COL.equals(col)) {
34                 csvBuilder.append(col);
35                 csvBuilder.append(DELIMITER);
36             }
37         }
38         csvBuilder.append("\n");
39         return csvBuilder.toString();
40     }
41 
getOutput(TrackerEntry entry)42     public String getOutput(TrackerEntry entry) {
43         StringBuilder rowOutput = new StringBuilder();
44         // these must match order of columns added in getHeader
45         rowOutput.append(entry.getTimestamp());
46         rowOutput.append(DELIMITER);
47         rowOutput.append(entry.getTag());
48         rowOutput.append(DELIMITER);
49         //rowOutput.append(entry.getType());
50         //rowOutput.append(DELIMITER);
51         if (entry.getType() == EntryType.LOCATION_TYPE) {
52             if (entry.getLocation().hasAccuracy()) {
53                 rowOutput.append(entry.getLocation().getAccuracy());
54             }
55             rowOutput.append(DELIMITER);
56             rowOutput.append(entry.getLocation().getLatitude());
57             rowOutput.append(DELIMITER);
58             rowOutput.append(entry.getLocation().getLongitude());
59             rowOutput.append(DELIMITER);
60             if (entry.getLocation().hasAltitude()) {
61                 rowOutput.append(entry.getLocation().getAltitude());
62             }
63             rowOutput.append(DELIMITER);
64             if (entry.getLocation().hasSpeed()) {
65                 rowOutput.append(entry.getLocation().getSpeed());
66             }
67             rowOutput.append(DELIMITER);
68             if (entry.getLocation().hasBearing()) {
69                 rowOutput.append(entry.getLocation().getBearing());
70             }
71             rowOutput.append(DELIMITER);
72             rowOutput.append(entry.getDistFromNetLocation());
73             rowOutput.append(DELIMITER);
74             rowOutput.append(DateUtils.getKMLTimestamp(entry.getLocation()
75                     .getTime()));
76             rowOutput.append(DELIMITER);
77         }
78         rowOutput.append(entry.getLogMsg());
79         rowOutput.append("\n");
80         return rowOutput.toString();
81     }
82 
getFooter()83     public String getFooter() {
84         // not needed, return empty string
85         return "";
86     }
87 }
88