/** @file TDLog.java
*
* @author marco corvi
* @date nov 2011
*
* @brief TopoDroid application (consts and prefs)
* --------------------------------------------------------
* Copyright This sowftare is distributed under GPL-3.0 or later
* See the file COPYING.
* --------------------------------------------------------
*/
package com.topodroid.DistoX;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
// import java.io.FileNotFoundException;
import android.content.SharedPreferences;
import android.util.Log;
class TDLog
{
// ---------------------------------------------------------
// DEBUG: logcat flags
static final String TAG = "DistoX";
static int mLogStream = 0; // log stream
static PrintWriter mLog = null;
static long mMillis;
static boolean LOG_BEZIER = false;
static boolean LOG_BT = false; // bluetooth
static boolean LOG_CALIB = false;
static boolean LOG_COMM = false; // connection
static boolean LOG_CSURVEY = false;
static boolean LOG_DATA = false; // shot data
static boolean LOG_DB = false; // sqlite database
static boolean LOG_DEBUG = false;
static boolean LOG_DEVICE = false;
static boolean LOG_DISTOX = false; // DistoX packets
static boolean LOG_ERR = true;
static boolean LOG_FIXED = false;
static boolean LOG_INPUT = false; // user input
static boolean LOG_LOC = false; // location manager
static boolean LOG_NOTE = false; // annotation
static boolean LOG_MAIN = false; // main app
static boolean LOG_NAME = false; // names
static boolean LOG_NUM = false;
static boolean LOG_PATH = false;
static boolean LOG_PLOT = false;
static boolean LOG_PHOTO = false; // photos
static boolean LOG_PREFS = false; // preferences
static boolean LOG_PROTO = false; // protocol
static boolean LOG_PTOPO = false; // PocketTopo
static boolean LOG_SENSOR = false; // sensors and measures
static boolean LOG_SHOT = false; // shot
static boolean LOG_STATS = false;
static boolean LOG_SURVEY = false;
static boolean LOG_THERION= false;
static boolean LOG_ZIP = false; // archive
static boolean LOG_UNITS = false;
static boolean LOG_SYNC = false;
// --------------- LOG PREFERENCES ----------------------
public static final String[] log_key = {
"DISTOX_LOG_DEBUG", // + 0
"DISTOX_LOG_ERR",
"DISTOX_LOG_INPUT", // + 2
"DISTOX_LOG_BT", // + 3
"DISTOX_LOG_COMM",
"DISTOX_LOG_PROTO",
"DISTOX_LOG_DISTOX",
"DISTOX_LOG_DEVICE", // + 7
"DISTOX_LOG_DATA",
"DISTOX_LOG_DB", // + 9
"DISTOX_LOG_CALIB",
"DISTOX_LOG_FIXED",
"DISTOX_LOG_LOC", // +12
"DISTOX_LOG_PHOTO",
"DISTOX_LOG_SENSOR", // +14
"DISTOX_LOG_SHOT",
"DISTOX_LOG_SURVEY",
"DISTOX_LOG_NUM", // +17
"DISTOX_LOG_THERION",
"DISTOX_LOG_PLOT", // +19
"DISTOX_LOG_BEZIER",
"DISTOX_LOG_CSURVEY", // +21
"DISTOX_LOG_PTOPO", // +22
"DISTOX_LOG_ZIP",
"DISTOX_LOG_UNITS",
"DISTOX_LOG_SYNC"
};
// static void Profile( String msg )
// {
// mMillis = System.currentTimeMillis() % 600000;
// Log.v("DistoX", Long.toString(mMillis) + " PROFILE " + msg );
// }
static void TimeStart() { mMillis = System.currentTimeMillis(); }
static void TimeEnd( String msg )
{
long millis = System.currentTimeMillis() - mMillis;
Log.v( TAG, msg + " " + millis );
}
static void LogFile( String msg )
{
mMillis = System.currentTimeMillis() % 600000;
mLog.format( "%d: %s\n", mMillis, msg );
}
static void Debug( String msg )
{
if ( LOG_DEBUG && msg != null ) {
mMillis = System.currentTimeMillis() % 600000;
if ( mLogStream == 0 ) {
Log.v( TAG, mMillis + " " + msg );
} else {
mLog.format( "%d: %s\n", mMillis, msg );
// mLog.flush(); // autoflush ?
}
}
}
static void Error( String msg )
{
if ( LOG_ERR && msg != null ) {
mMillis = System.currentTimeMillis() % 600000;
if ( mLogStream == 0 ) {
Log.v( TAG, mMillis + " " + msg );
} else {
mLog.format( "%d: %s\n", mMillis, msg );
// mLog.flush(); // autoflush ?
}
}
}
static void Log( boolean flag, String msg )
{
if ( flag && msg != null ) {
mMillis = System.currentTimeMillis() % 600000;
if ( mLogStream == 0 ) {
Log.v( TAG, mMillis + " " + msg );
} else {
mLog.format( "%d: %s\n", mMillis, msg );
// mLog.flush(); // autoflush ?
}
}
}
static void LogStackTrace( Exception e )
{
StackTraceElement[] trace = e.getStackTrace();
if ( trace == null ) return;
if ( mLogStream == 0 ) {
for ( StackTraceElement st : trace ) Log.v( TAG, st.toString() );
} else {
for ( StackTraceElement st : trace ) mLog.format( "%s\n", st.toString() );
}
}
static void setLogTarget()
{
if ( mLog == null ) {
try {
File log_file = TDPath.getLogFile();
FileWriter fw = new FileWriter( log_file );
mLog = new PrintWriter( fw, true ); // true = autoflush
mLog.format( "TopoDroid version %s\n", TopoDroidApp.VERSION );
} catch ( IOException e ) {
Log.e("DistoX", "cannot create log file" );
}
}
}
static void loadLogPreferences( SharedPreferences prefs )
{
int lk = 0;
mLogStream = Integer.parseInt( prefs.getString("DISTOX_LOG_STREAM", "0") );
LOG_DEBUG = prefs.getBoolean( log_key[lk++], false );
LOG_ERR = prefs.getBoolean( log_key[lk++], true );
LOG_INPUT = prefs.getBoolean( log_key[lk++], false );
LOG_BT = prefs.getBoolean( log_key[lk++], false );
LOG_COMM = prefs.getBoolean( log_key[lk++], false );
LOG_PROTO = prefs.getBoolean( log_key[lk++], false );
LOG_DISTOX = prefs.getBoolean( log_key[lk++], false );
LOG_DEVICE = prefs.getBoolean( log_key[lk++], false );
LOG_DATA = prefs.getBoolean( log_key[lk++], false );
LOG_DB = prefs.getBoolean( log_key[lk++], false );
LOG_CALIB = prefs.getBoolean( log_key[lk++], false );
LOG_FIXED = prefs.getBoolean( log_key[lk++], false );
LOG_LOC = prefs.getBoolean( log_key[lk++], false );
LOG_PHOTO = prefs.getBoolean( log_key[lk++], false );
LOG_SENSOR = prefs.getBoolean( log_key[lk++], false );
LOG_SHOT = prefs.getBoolean( log_key[lk++], false );
LOG_SURVEY = prefs.getBoolean( log_key[lk++], false );
LOG_NUM = prefs.getBoolean( log_key[lk++], false );
LOG_THERION = prefs.getBoolean( log_key[lk++], false );
LOG_PLOT = prefs.getBoolean( log_key[lk++], false );
LOG_BEZIER = prefs.getBoolean( log_key[lk++], false );
LOG_CSURVEY = prefs.getBoolean( log_key[lk++], false );
LOG_PTOPO = prefs.getBoolean( log_key[lk++], false );
LOG_ZIP = prefs.getBoolean( log_key[lk++], false );
LOG_UNITS = prefs.getBoolean( log_key[lk++], false );
LOG_SYNC = prefs.getBoolean( log_key[lk++], false );
}
static void checkLogPreferences( SharedPreferences sp, String k )
{
int lk = 0;
if ( k.equals( "DISTOX_LOG_STREAM" ) ) { // "DISTOX_LOG_STREAM",
mLogStream = Integer.parseInt( sp.getString(k, "0") );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_DEBUG",
LOG_DEBUG = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_ERR",
LOG_ERR = sp.getBoolean( k, true );
} else if ( k.equals( log_key[ lk++ ] )) { // "DISTOX_LOG_INPUT",
LOG_INPUT = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_BT",
LOG_BT = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_COMM",
LOG_COMM = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_PROTO",
LOG_PROTO = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_DISTOX",
LOG_DISTOX = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_DEVICE", // 40
LOG_DEVICE = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_DATA",
LOG_DATA = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_DB",
LOG_DB = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_CALIB",
LOG_CALIB = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_FIXED",
LOG_FIXED = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_LOC", // 45
LOG_LOC = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_PHOTO",
LOG_PHOTO = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_SENSOR" // 47
LOG_SENSOR = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_SHOT"
LOG_SHOT = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_SURVEY"
LOG_SURVEY = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_NUM"
LOG_NUM = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_THERION"
LOG_THERION = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_PLOT"
LOG_PLOT = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_BEZIER"
LOG_BEZIER = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_CSURVEY"
LOG_CSURVEY = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_PTOPO"
LOG_PTOPO = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_ZIP"
LOG_ZIP = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_UNITS"
LOG_UNITS = sp.getBoolean( k, false );
} else if ( k.equals( log_key[ lk++ ] ) ) { // "DISTOX_LOG_SYNC"
LOG_SYNC = sp.getBoolean( k, false );
}
}
}