diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java index 44cdf592ad9..0ba0bce6020 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java @@ -40,6 +40,7 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog @Override protected void addMainContent(Panel mainPanel) { super.addMainContent(mainPanel); + CaptionPanel inputPanel = new CaptionPanel(); Grid inputGrid = new Grid(1, 2); inputPanel.add(inputGrid); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index 8e11d395a6d..e8dd358326a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -33,6 +33,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi static interface CompetitorRegistrationHandler { void getRegisteredCompetitors(Callback, Throwable> callback); + void setRegisteredCompetitors(Set competitors); } @@ -41,6 +42,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi CompetitorRegistrationHandler competitorRegistrationHandler) { super(sailingService, stringMessages, errorReporter, editable); this.competitorRegistrationsHandler = competitorRegistrationHandler; + setupUi(); refreshCompetitors(); } @@ -55,6 +57,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi } }); buttonPanel.add(addCompetitorButton); + super.addButtons(buttonPanel); } @@ -79,6 +82,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi @Override protected void addMainContent(Panel mainPanel) { super.addMainContent(mainPanel); + HorizontalPanel panel = new HorizontalPanel(); mainPanel.add(panel); CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool()); @@ -138,6 +142,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi protected void refreshCompetitors() { registeredCompetitorsTable.getDataProvider().getList().clear(); + allCompetitorsTable.refreshCompetitorList(null, true, new Callback, Throwable>() { @Override public void onSuccess(Iterable result) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeDTO.java old mode 100755 new mode 100644 index 270b0250097..051ab8fcbb7 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeDTO.java @@ -1,24 +1,26 @@ -package com.sap.sailing.gwt.ui.shared; - -import java.io.Serializable; - -import com.sap.sailing.domain.common.Position; - -public class WindLatticeDTO implements Serializable { - /** - * Generated uid for serialisation - */ - private static final long serialVersionUID = -2110785502151983845L; - private Position[][] matrix; - - public WindLatticeDTO() { - } - - public void setMatrix(Position[][] matrix) { - this.matrix = matrix; - } - - public Position[][] getMatrix() { - return matrix; - } -} \ No newline at end of file +package com.sap.sailing.gwt.ui.shared; + +import java.io.Serializable; + +import com.sap.sailing.domain.common.Position; + + +public class WindLatticeDTO implements Serializable { + + /** + * Generated uid for serialisation + */ + private static final long serialVersionUID = -2110785502151983845L; + private Position [][] matrix; + + public WindLatticeDTO() { + } + + public void setMatrix( Position [][] matrix ) { + this.matrix = matrix; + } + + public Position[][] getMatrix() { + return matrix; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeGenParamsDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeGenParamsDTO.java old mode 100755 new mode 100644 index b7f8560e045..d3f5f5d6e28 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeGenParamsDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/WindLatticeGenParamsDTO.java @@ -1,61 +1,64 @@ -package com.sap.sailing.gwt.ui.shared; - -import java.io.Serializable; - -import com.sap.sailing.domain.common.Position; - -public class WindLatticeGenParamsDTO implements Serializable { - /** - * Generated uid for serialisation - */ - private static final long serialVersionUID = 6074038176026601942L; - - private Position center; - private double xSize = 1; - private double ySize = 1; - private int gridsizeX = 20; - private int gridsizeY = 20; - - public WindLatticeGenParamsDTO() { - } - - public void setCenter(Position center) { - this.center = center; - } - - public Position getCenter() { - return center; - } - - public double getxSize() { - return xSize; - } - - public void setxSize(double xSize) { - this.xSize = xSize; - } - - public double getySize() { - return ySize; - } - - public void setySize(double ySize) { - this.ySize = ySize; - } - - public int getGridsizeX() { - return gridsizeX; - } - - public void setGridsizeX(int gridsizeX) { - this.gridsizeX = gridsizeX; - } - - public int getGridsizeY() { - return gridsizeY; - } - - public void setGridsizeY(int gridsizeY) { - this.gridsizeY = gridsizeY; - } -} \ No newline at end of file +package com.sap.sailing.gwt.ui.shared; + +import java.io.Serializable; + +import com.sap.sailing.domain.common.Position; + + +public class WindLatticeGenParamsDTO implements Serializable { + + /** + * Generated uid for serialisation + */ + private static final long serialVersionUID = 6074038176026601942L; + + private Position center; + private double xSize = 1; + private double ySize = 1; + private int gridsizeX = 20; + private int gridsizeY = 20; + + public WindLatticeGenParamsDTO() { + } + + public void setCenter(Position center) { + this.center = center; + } + + public Position getCenter() { + return center; + } + + public double getxSize() { + return xSize; + } + + public void setxSize(double xSize) { + this.xSize = xSize; + } + + public double getySize() { + return ySize; + } + + public void setySize(double ySize) { + this.ySize = ySize; + } + + public int getGridsizeX() { + return gridsizeX; + } + + public void setGridsizeX(int gridsizeX) { + this.gridsizeX = gridsizeX; + } + + public int getGridsizeY() { + return gridsizeY; + } + + public void setGridsizeY(int gridsizeY) { + this.gridsizeY = gridsizeY; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/FlatSmartphoneUuidAndGPSFixMovingJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/FlatSmartphoneUuidAndGPSFixMovingJsonDeserializer.java index 9159f720cb1..e380e6b12b5 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/FlatSmartphoneUuidAndGPSFixMovingJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/FlatSmartphoneUuidAndGPSFixMovingJsonDeserializer.java @@ -23,6 +23,7 @@ import com.sap.sse.common.Util.Pair; */ public class FlatSmartphoneUuidAndGPSFixMovingJsonDeserializer implements JsonDeserializer>> { + @Override public Pair> deserialize(JSONObject object) throws JsonDeserializationException { UUID device = UUID.fromString(object.get(FlatSmartphoneUuidAndGPSFixMovingJsonSerializer.DEVICE_UUID).toString()); diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/CompetitorsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/CompetitorsResource.java index 7b19d52d361..1586f2e4f85 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/CompetitorsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/CompetitorsResource.java @@ -129,6 +129,7 @@ public class CompetitorsResource extends AbstractSailingServerResource { throw new WebApplicationException(Response.status(Status.BAD_REQUEST) .entity("Could not find competitor with id " + competitorId).type(MediaType.TEXT_PLAIN).build()); } + String fileExtension = ""; if (fileType.equals("image/jpeg")) { fileExtension = ".jpg"; diff --git a/mobile/com.sap.sailing.android.shared/pom.xml b/mobile/com.sap.sailing.android.shared/pom.xml index 11146fd8ba0..22a8e9eb9bb 100644 --- a/mobile/com.sap.sailing.android.shared/pom.xml +++ b/mobile/com.sap.sailing.android.shared/pom.xml @@ -1,17 +1,17 @@ - 4.0.0 - - com.sap.sailing - mobile - 1.0.0-SNAPSHOT - - com.sap.sailing.android.shared - apklib + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + 4.0.0 + + com.sap.sailing + mobile + 1.0.0-SNAPSHOT + + com.sap.sailing.android.shared + apklib - + com.sap.sailing org.json.simple @@ -39,7 +39,7 @@ 1.0.0-SNAPSHOT compile - + com.sap.sailing com.sap.sse.common @@ -86,12 +86,12 @@ android android - + - - src - ${project.artifactId} - + + src + ${project.artifactId} + com.jayway.maven.plugins.android.generation2 android-maven-plugin @@ -101,6 +101,6 @@ - - + + diff --git a/mobile/com.sap.sailing.android.shared/res/drawable/list_selector_bg.xml b/mobile/com.sap.sailing.android.shared/res/drawable/list_selector_bg.xml index 081941ccf48..779774cdd20 100644 --- a/mobile/com.sap.sailing.android.shared/res/drawable/list_selector_bg.xml +++ b/mobile/com.sap.sailing.android.shared/res/drawable/list_selector_bg.xml @@ -1,9 +1,5 @@ - - + + diff --git a/mobile/com.sap.sailing.android.shared/res/drawable/spinner_background_holo_dark.xml b/mobile/com.sap.sailing.android.shared/res/drawable/spinner_background_holo_dark.xml index b028bc73784..eb6b18b516c 100644 --- a/mobile/com.sap.sailing.android.shared/res/drawable/spinner_background_holo_dark.xml +++ b/mobile/com.sap.sailing.android.shared/res/drawable/spinner_background_holo_dark.xml @@ -16,10 +16,10 @@ + android:drawable="@drawable/spinner_disabled_holo_dark" /> + android:drawable="@drawable/spinner_pressed_holo_dark" /> - + android:drawable="@drawable/spinner_focused_holo_dark" /> + diff --git a/mobile/com.sap.sailing.android.shared/res/drawable/title_bar_bg.xml b/mobile/com.sap.sailing.android.shared/res/drawable/title_bar_bg.xml index 7fc59b0ef04..9531208fa1c 100644 --- a/mobile/com.sap.sailing.android.shared/res/drawable/title_bar_bg.xml +++ b/mobile/com.sap.sailing.android.shared/res/drawable/title_bar_bg.xml @@ -1,14 +1,14 @@ - + - + + android:startColor="@color/tabMedium" /> - - + + - + @@ -80,7 +80,7 @@ - + diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/LoggableApplication.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/LoggableApplication.java index 02fe550658c..714858bbf94 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/LoggableApplication.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/LoggableApplication.java @@ -13,22 +13,16 @@ import com.sap.sailing.android.shared.logging.LoggingExceptionHandler; import com.sap.sailing.android.shared.util.PrefUtils; /** - *

- * Registers an additional exception handler for uncaught exception to have some crash logging. - *

- *

- * Offers a static {@link StringContext} to handle i18n in ugly cases. - *

- *

- * Sets the default preference values (if not set) - *

+ *

Registers an additional exception handler for uncaught exception to have some crash logging.

+ *

Offers a static {@link StringContext} to handle i18n in ugly cases.

+ *

Sets the default preference values (if not set)

*/ public class LoggableApplication extends Application { private final static String TAG = LoggableApplication.class.getName(); - + private static StringContext stringContext; - + public static StringContext getStringContext() { return stringContext; } @@ -37,15 +31,15 @@ public class LoggableApplication extends Application { public void onCreate() { super.onCreate(); ExLog.i(this, TAG, "Application is starting."); - + Thread.setDefaultUncaughtExceptionHandler(new LoggingExceptionHandler(Thread .getDefaultUncaughtExceptionHandler(), this)); - - LifecycleLogger.enableLifecycleLogging(PrefUtils.getBoolean(this, - R.string.preference_enableLifecycleLogging_key, R.bool.preference_enableLifecycleLogging_default)); + + LifecycleLogger.enableLifecycleLogging(PrefUtils.getBoolean(this, R.string.preference_enableLifecycleLogging_key, + R.bool.preference_enableLifecycleLogging_default)); stringContext = new StringContext(new WeakReference(getApplicationContext())); } - + public static void restartApp(Context context) { Intent i = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/StringContext.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/StringContext.java index 3bcf4d7aac0..472d756b923 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/StringContext.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/application/StringContext.java @@ -18,7 +18,7 @@ public class StringContext { /** * Return a localized string from the application's package's default string table. - * + * * @param resId * Resource id for the string * @return the string diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/FileBasedHttpGetRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/FileBasedHttpGetRequest.java index 219f4271f80..6d7264b8e1c 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/FileBasedHttpGetRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/FileBasedHttpGetRequest.java @@ -19,7 +19,7 @@ public class FileBasedHttpGetRequest extends HttpGetRequest { super(url, listener, context); this.outputFile = outputFile; } - + public File getOutputFile() { return outputFile; } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java index 68ba2be2597..55320b838ca 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java @@ -18,6 +18,8 @@ public class HttpGetRequest extends HttpRequest { super(url, listener, context); } + + @Override protected BufferedInputStream doRequest(HttpURLConnection connection) throws IOException { InputStream stream = connection.getInputStream(); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java index f66a38533ec..831f4121223 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java @@ -18,7 +18,7 @@ public class HttpJsonPostRequest extends HttpRequest { public HttpJsonPostRequest(URL requestUrl, Context context) { this(requestUrl, null, context); } - + public HttpJsonPostRequest(URL requestUrl, String body, Context context) { super(requestUrl, context); this.requestBody = body; diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java index 3790a7fe29f..3ee868a7a8a 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java @@ -67,7 +67,8 @@ public abstract class HttpRequest { } /** - * Returns a copied {@link InputStream} of the server's response. You must close this stream when done. + * Returns a copied {@link InputStream} of the server's response. + * You must close this stream when done. */ public InputStream execute() throws IOException { ExLog.i(context, TAG, String.format("(Request %d) Executing HTTP request on %s.", this.hashCode(), url)); @@ -92,13 +93,13 @@ public abstract class HttpRequest { validateHttpResponseCode(connection); InputStream copiedResponseInputStream = readAndCopyResponse(connection, responseInputStream); - + if (copiedResponseInputStream != null) { ExLog.i(context, TAG, String.format("(Request %d) HTTP request executed.", this.hashCode())); } else { ExLog.i(context, TAG, String.format("(Request %d) HTTP request aborted.", this.hashCode())); } - + connection.disconnect(); return copiedResponseInputStream; } catch (IOException e) { diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/ExLog.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/ExLog.java index 683d4ec6384..1023948a046 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/ExLog.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/ExLog.java @@ -13,13 +13,14 @@ import android.util.Log; /** * Simple wrapper for logging to various targets. - *

+ * * Log by using {@link ExLog#i(String, String)}, {@link ExLog#w(String, String)} and {@link ExLog#e(String, String)}. * Activate a set of targets by using {@link ExLog#activate(Target)} or {@link ExLog#activate(EnumSet)}. Currently * available are logging to android.util.Log LogCat and logging to a file on SD-card. - *

+ * * The file logging in very defensive in a way that opening and writing to the file is secured by various exception * handlers trying to silence all possible errors. + * */ public class ExLog { private final static String TAG = "ExLogInternal"; @@ -45,8 +46,8 @@ public class ExLog { if (UNIQUE_ID == null) { UNIQUE_ID = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); } - i(context, "ID: " + String.valueOf(eventID), System.currentTimeMillis() + ":" - + (UNIQUE_ID == null ? "" : UNIQUE_ID) + ":" + (msg == null ? "" : msg)); + i(context, "ID: " + String.valueOf(eventID), System.currentTimeMillis() + ":" + (UNIQUE_ID == null ? "" : UNIQUE_ID) + + ":" + (msg == null ? "" : msg)); } public static String UNIQUE_ID = null; @@ -62,7 +63,7 @@ public class ExLog { public synchronized static void e(Context context, String tag, String msg) { getInstance().error(context, tag, msg); } - + public synchronized static void ex(Context context, String tag, Exception e) { getInstance().exception(context, tag, e); } @@ -118,13 +119,13 @@ public class ExLog { if (isTargetActive(Target.FILE)) logToFile(context, LogLevel.ERROR, tag, msg); } - + private void exception(Context context, String tag, Exception e) { StringWriter stringWriter = new StringWriter(); PrintWriter stream = new PrintWriter(stringWriter); e.printStackTrace(stream); String msg = stringWriter.toString(); - + if (isTargetActive(Target.LOGCAT)) Log.e(tag, msg); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/FileLoggingTask.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/FileLoggingTask.java index 22e405a7a06..3533686e40b 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/FileLoggingTask.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/FileLoggingTask.java @@ -28,7 +28,7 @@ public class FileLoggingTask implements Runnable { private String logFileName; private File logFile; private BufferedWriter logWriter; - + private final Context context; public FileLoggingTask(BlockingQueue queue, Context context) { diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleCallbacks.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleCallbacks.java index 44cfffa18ef..71ad21e4e6c 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleCallbacks.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleCallbacks.java @@ -2,6 +2,7 @@ package com.sap.sailing.android.shared.logging; /** * Stolen from API Level 14. + * */ public interface LifecycleCallbacks { void onCreate(Object activityOrFragment); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleLogger.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleLogger.java index 0c9dc37ead2..e95f519f7e5 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleLogger.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LifecycleLogger.java @@ -24,8 +24,7 @@ public class LifecycleLogger implements LifecycleCallbacks { context = ((Fragment) activityOrFragment).getActivity(); } if (isLifecycleLoggingEnabled) { - ExLog.i(context, - TAG, + ExLog.i(context, TAG, String.format("%s %s %s", action, activityOrFragment.getClass().getSimpleName(), Integer.toHexString(System.identityHashCode(activityOrFragment)))); } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LoggingExceptionHandler.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LoggingExceptionHandler.java index c1af87f9a61..4f9cd5cbc45 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LoggingExceptionHandler.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/logging/LoggingExceptionHandler.java @@ -7,7 +7,7 @@ import android.content.Context; import android.util.Log; public class LoggingExceptionHandler implements UncaughtExceptionHandler { - + private static final String TAG = LoggingExceptionHandler.class.getName(); private UncaughtExceptionHandler defaultHandler; diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java index e92c5eee5d0..679bcadbeb3 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java @@ -1,5 +1,5 @@ /** - * + * */ package com.sap.sailing.android.shared.services.sending; @@ -14,32 +14,29 @@ import android.net.NetworkInfo; import com.sap.sailing.android.shared.logging.ExLog; /** - * Informs {@link MessageSendingService} whenever connectivity is restored, so that it can start sending messages again. - *

- * Register in manifest: + * Informs {@link MessageSendingService} whenever connectivity is restored, so that it can start sending + * messages again. * - *

- * {@code
+ * Register in manifest:
+ * 
{@code
  * 
  *   
  *     
  *   
  * 
- * }
- * 
+ * }
*/ public class ConnectivityChangedReceiver extends BroadcastReceiver { - + private final static String TAG = ConnectivityChangedReceiver.class.getName(); - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) */ @Override public void onReceive(Context context, Intent intent) { - ConnectivityManager cService = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + ConnectivityManager cService = (ConnectivityManager) + context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = (NetworkInfo) cService.getActiveNetworkInfo(); if (!networkInfo.isConnected()) return; @@ -50,29 +47,23 @@ public class ConnectivityChangedReceiver extends BroadcastReceiver { /** * disables the Connectivity Changed Receiver as there is currently connectivity - * - * @param context - * the context to work on + * @param context the context to work on */ public static void disable(Context context) { ComponentName receiver = new ComponentName(context, ConnectivityChangedReceiver.class); PackageManager packageManager = context.getPackageManager(); - packageManager.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); + packageManager.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); ExLog.w(context, TAG, "Regained connectivity. ConnectivityChangedReceiver disabled"); } /** * enables the Connectivity Changed Receiver to listen on connectivity changes as there is currently no connectivity - * - * @param context - * the context to work on + * @param context the context to work on */ public static void enable(Context context) { ComponentName receiver = new ComponentName(context, ConnectivityChangedReceiver.class); PackageManager packageManager = context.getPackageManager(); - packageManager.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, - PackageManager.DONT_KILL_APP); + packageManager.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); ExLog.w(context, TAG, "Connectivity lost. ConnectivityChangedReceiver enabled"); } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java index aa46d1791b5..eb37655aadf 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java @@ -18,14 +18,14 @@ import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.android.shared.util.FileHandlerUtils; public class MessagePersistenceManager { - + private final static String TAG = MessagePersistenceManager.class.getName(); private final static String delayedMessagesFileName = "delayedMessages.txt"; protected Context context; protected List persistedMessages; - + private final MessageRestorer messageRestorer; public MessagePersistenceManager(Context context, MessageRestorer messageRestorer) { @@ -48,8 +48,7 @@ public class MessagePersistenceManager { persistMessage(url, callbackPayload, payload, callbackClass); } - private void persistMessage(String url, String callbackPayload, String payload, String callbackClass) - throws UnsupportedEncodingException { + private void persistMessage(String url, String callbackPayload, String payload, String callbackClass) throws UnsupportedEncodingException { String messageLine = getSerializedIntentForPersistence(url, callbackPayload, payload, callbackClass); ExLog.i(context, TAG, String.format("Persisting message \"%s\".", messageLine)); if (persistedMessages.contains(messageLine)) { @@ -60,14 +59,14 @@ public class MessagePersistenceManager { } /** - * @param payload - * will be URL-encoded to ensure that the resulting string does not contain newlines - * @throws UnsupportedEncodingException + * @param payload will be URL-encoded to ensure that the resulting string does not contain newlines + * @throws UnsupportedEncodingException */ - private String getSerializedIntentForPersistence(String url, String callbackPayload, String payload, - String callbackClass) throws UnsupportedEncodingException { - String messageLine = String.format("%s;%s;%s;%s", callbackPayload, - URLEncoder.encode(payload, MessageSendingService.charsetName), url, callbackClass); + private String getSerializedIntentForPersistence(String url, String callbackPayload, + String payload, String callbackClass) throws UnsupportedEncodingException { + String messageLine = String.format("%s;%s;%s;%s", callbackPayload, URLEncoder.encode(payload, + MessageSendingService.charsetName), + url, callbackClass); return messageLine; } @@ -80,15 +79,14 @@ public class MessagePersistenceManager { removeMessage(url, callbackPayload, payload, callbackClass); } - private void removeMessage(String url, String callbackPayload, String payload, String callbackClass) - throws UnsupportedEncodingException { + private void removeMessage(String url, String callbackPayload, String payload, String callbackClass) throws UnsupportedEncodingException { if (!persistedMessages.isEmpty()) { ExLog.i(context, TAG, String.format("Removing message \"%s\".", payload)); String messageLine = getSerializedIntentForPersistence(url, callbackPayload, payload, callbackClass); removePersistedMessage(messageLine); } } - + /** * Removes all pending messages and clears the persistence file. */ @@ -108,11 +106,11 @@ public class MessagePersistenceManager { public int getMessageCount() { return persistedMessages.size(); } - + public List getContent() { return persistedMessages; } - + public static interface MessageRestorer { void restoreMessage(Context context, Intent messageIntent); } @@ -127,26 +125,26 @@ public class MessagePersistenceManager { String callbackClassString = lineParts[3]; Class callbackClass = null; - if (!"null".equals(callbackClassString)) { + if (! "null".equals(callbackClassString)) { try { @SuppressWarnings("unchecked") - Class tmp = (Class) Class - .forName(callbackClassString); + Class tmp = + (Class) Class.forName(callbackClassString); callbackClass = tmp; } catch (ClassNotFoundException e) { ExLog.e(context, TAG, "Could not find class for callback name: " + callbackClassString); } } - + // We are passing no message id, because we know it used to suppress message sending and // we want this message to be sent. - Intent messageIntent = MessageSendingService.createMessageIntent(context, url, callbackPayload, null, - payload, callbackClass); - + Intent messageIntent = MessageSendingService.createMessageIntent(context, url, callbackPayload, + null, payload, callbackClass); + if (messageRestorer != null) { messageRestorer.restoreMessage(context, messageIntent); } - + if (messageIntent != null) { delayedIntents.add(messageIntent); } @@ -168,8 +166,7 @@ public class MessagePersistenceManager { fileContent = FileHandlerUtils.convertStreamToString(inputStream, context); inputStream.close(); } catch (IOException e) { - ExLog.w(context, TAG, "In Method getFileContent(): " + e.getClass().getName() + " / " + e.getMessage() - + " fileContent is empty"); + ExLog.w(context, TAG, "In Method getFileContent(): " + e.getClass().getName()+" / "+e.getMessage() + " fileContent is empty"); } return fileContent; } @@ -217,8 +214,7 @@ public class MessagePersistenceManager { outputStream.write(content.getBytes()); outputStream.close(); } catch (IOException e) { - ExLog.e(context, TAG, "In Method writeToFile: " + e.getMessage() + " with content " + content - + " and mode " + mode); + ExLog.e(context, TAG, "In Method writeToFile: " + e.getMessage() + " with content " + content + " and mode " + mode); } } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java index a76f898d2f8..6e2e5b52f6b 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java @@ -15,7 +15,7 @@ import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sse.common.Util; public class MessageSenderTask extends AsyncTask> { - + private static String TAG = MessageSenderTask.class.getName(); public interface MessageSendingListener { @@ -55,8 +55,7 @@ public class MessageSenderTask extends AsyncTask(intent, false, null); @@ -69,4 +68,5 @@ public class MessageSenderTask extends AsyncTask - *

- * Use in the following way: Add the service declaration to your {@code AndroidManifest.xml}, and also specify - * your class implementing the {@link MessagePersistenceManager.MessageRestorer} as a meta-data tag with the key - * {@code com.sap.sailing.android.shared.services.sending.messageRestorer}. Also refer to - * {@link ConnectivityChangedReceiver}, which has to be registered as well. For example: + * Service that handles sending messages to a webservice. Deals with an offline setting + * by buffering the messages in a file, so that they can be sent when the connection is + * re-established.
* - *

- * {@code
+ * Use in the following way: Add the service declaration to your {@code AndroidManifest.xml},
+ * and also specify your class implementing the {@link MessagePersistenceManager.MessageRestorer}
+ * as a meta-data tag with the key {@code com.sap.sailing.android.shared.services.sending.messageRestorer}.
+ * Also refer to {@link ConnectivityChangedReceiver}, which has to be registered as well.
+ * For example:
+ * 
{@code
  * 
  *   
  * 
- * }
- * 
- *

- *

- * Message sending example: + * }

* - *
- * {@code
+ * 
+ * Message sending example: 
+ * 
{@code
  * context.startService(MessageSendingService.createMessageIntent(
  *      context, url, race.getId(), eventId, serializedEventAsJson, callbackClass));
- * }
- * 
+ * }
*/ public class MessageSendingService extends Service implements MessageSendingListener { public final static String URL = "url"; @@ -66,7 +62,7 @@ public class MessageSendingService extends Service implements MessageSendingList public final static String CALLBACK_CLASS = "callback"; public final static String CALLBACK_PAYLOAD = "callbackPayload"; // passed back to callback public final static String MESSAGE_ID = "messageId"; - + public static final String charsetName = "UTF-8"; protected final static String TAG = MessageSendingService.class.getName(); @@ -76,7 +72,7 @@ public class MessageSendingService extends Service implements MessageSendingList private final IBinder mBinder = new MessageSendingBinder(); private MessagePersistenceManager persistenceManager; private boolean isHandlerSet; - + private Set suppressedMessageIds = new HashSet(); private APIConnectivityListener apiConnectivityListener; @@ -117,7 +113,7 @@ public class MessageSendingService extends Service implements MessageSendingList } private Date lastSuccessfulSend; - + public List getDelayedIntentsContent() { return persistenceManager.getContent(); } @@ -129,15 +125,15 @@ public class MessageSendingService extends Service implements MessageSendingList public Date getLastSuccessfulSend() { return lastSuccessfulSend; } - + public void clearDelayedIntents() { persistenceManager.removeAllMessages(); // let's fake a successful send! serviceLogger.onMessageSentSuccessful(); } - public static Intent createMessageIntent(Context context, String url, Serializable callbackPayload, - Serializable messageId, String payload, Class callbackClass) { + public static Intent createMessageIntent(Context context, String url, Serializable callbackPayload, Serializable messageId, String payload, + Class callbackClass) { Intent messageIntent = new Intent(context, MessageSendingService.class); messageIntent.setAction(context.getString(R.string.intent_send_message)); messageIntent.putExtra(CALLBACK_PAYLOAD, callbackPayload); @@ -147,7 +143,7 @@ public class MessageSendingService extends Service implements MessageSendingList messageIntent.putExtra(CALLBACK_CLASS, callbackClass == null ? null : callbackClass.getName()); return messageIntent; } - + public static Intent createSendDelayedIntent(Context context) { Intent intent = new Intent(context, MessageSendingService.class); intent.setAction(context.getString(R.string.intent_send_saved_intents)); @@ -162,7 +158,7 @@ public class MessageSendingService extends Service implements MessageSendingList ExLog.w(this, TAG, "Unable to extract message identifier from message intent."); return null; } - + private MessagePersistenceManager getPersistenceManager() { ComponentName thisService = new ComponentName(this, this.getClass()); MessageRestorer restorer = null; @@ -274,7 +270,7 @@ public class MessageSendingService extends Service implements MessageSendingList private void sendMessage(Intent intent) { boolean sendingActive = PrefUtils.getBoolean(this, R.string.preference_isSendingActive_key, R.bool.preference_isSendingActive_default); - if (!sendingActive) { + if (! sendingActive) { ExLog.i(this, TAG, "Sending deactivated. Message will not be sent to server."); } else { Serializable messageId = getMessageId(intent); @@ -322,7 +318,7 @@ public class MessageSendingService extends Service implements MessageSendingList } lastSuccessfulSend = Calendar.getInstance().getTime(); serviceLogger.onMessageSentSuccessful(); - + String callbackClassString = intent.getStringExtra(CALLBACK_CLASS); ServerReplyCallback callback = null; if (callbackClassString != null) { @@ -344,7 +340,7 @@ public class MessageSendingService extends Service implements MessageSendingList /** * checks if there is network connectivity - * + * * @return connectivity check value */ private boolean isConnected() { @@ -354,21 +350,22 @@ public class MessageSendingService extends Service implements MessageSendingList } return activeNetwork.isConnected(); } - + /** - * a UUID that identifies this client session; can be used, e.g., to let the server identify subsequent requests - * coming from the same client + * a UUID that identifies this client session; can be used, e.g., to let the server identify subsequent requests coming from the same client */ public final static UUID uuid = UUID.randomUUID(); - + public static String getRaceLogEventSendAndReceiveUrl(Context context, final String raceGroupName, final String raceName, final String fleetName) throws UnsupportedEncodingException { - String url = String.format("%s/sailingserver/rc/racelog?" + RaceLogServletConstants.PARAMS_LEADERBOARD_NAME - + "=%s&" + RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME + "=%s&" - + RaceLogServletConstants.PARAMS_RACE_FLEET_NAME + "=%s&" + RaceLogServletConstants.PARAMS_CLIENT_UUID - + "=%s", PrefUtils.getString(context, R.string.preference_server_url_key, - R.string.preference_server_url_default), URLEncoder.encode(raceGroupName, charsetName), URLEncoder - .encode(raceName, charsetName), URLEncoder.encode(fleetName, charsetName), uuid); + String url = String.format("%s/sailingserver/rc/racelog?"+ + RaceLogServletConstants.PARAMS_LEADERBOARD_NAME+"=%s&"+ + RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME+"=%s&"+ + RaceLogServletConstants.PARAMS_RACE_FLEET_NAME+"=%s&"+ + RaceLogServletConstants.PARAMS_CLIENT_UUID+"=%s", + PrefUtils.getString(context, R.string.preference_server_url_key, R.string.preference_server_url_default), + URLEncoder.encode(raceGroupName, charsetName), + URLEncoder.encode(raceName, charsetName), URLEncoder.encode(fleetName, charsetName), uuid); return url; } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ServerReplyCallback.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ServerReplyCallback.java index d60744d737f..0702e39bf25 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ServerReplyCallback.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ServerReplyCallback.java @@ -6,13 +6,13 @@ import android.content.Context; import android.content.Intent; /** - * This callback is used to attach an operation to the sending of a message, so that the server reply to the performed - * POST request can be evaluated. - *

- * Important: As the callback needs to be passed around in an {@link Intent} and also written to a file, a default - * public constructor without parameters is required. - * + * This callback is used to attach an operation to the sending of a message, so + * that the server reply to the performed POST request can be evaluated. + * + * Important: As the callback needs to be passed around in an {@link Intent} and also written + * to a file, a default public constructor without parameters is required. * @author Fredrik Teschke + * */ public interface ServerReplyCallback { /** diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/LoggableActivity.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/LoggableActivity.java index 1142cff94e7..181b82be844 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/LoggableActivity.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/LoggableActivity.java @@ -49,7 +49,7 @@ public abstract class LoggableActivity extends BaseActivity { super.onDestroy(); lifeLogger.onDestroy(this); } - + @Override public void onBackPressed() { super.onBackPressed(); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java index 23e97fc4271..86d836964e0 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java @@ -7,7 +7,7 @@ import com.sap.sailing.android.shared.logging.ExLog; public class ResilientActivity extends LoggableActivity { private static final String TAG = ResilientActivity.class.getName(); - + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -18,7 +18,7 @@ public class ResilientActivity extends LoggableActivity { return super.onOptionsItemSelected(item); } } - + protected boolean onHomeClicked() { return false; } @@ -26,7 +26,7 @@ public class ResilientActivity extends LoggableActivity { protected void fadeActivity(Class activity, boolean newTopTask) { Intent intent = new Intent(getBaseContext(), activity); if (newTopTask) { - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } fadeActivity(intent); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SendingServiceAwareActivity.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SendingServiceAwareActivity.java index cb9073828d6..21b552c66e5 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SendingServiceAwareActivity.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SendingServiceAwareActivity.java @@ -20,7 +20,7 @@ import com.sap.sailing.android.shared.services.sending.MessageSendingService.Mes import com.sap.sailing.android.shared.util.PrefUtils; public abstract class SendingServiceAwareActivity extends ResilientActivity { - + private class MessageSendingServiceConnection implements ServiceConnection, MessageSendingServiceLogger { @Override public void onServiceConnected(ComponentName className, IBinder service) { @@ -55,9 +55,9 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { protected boolean boundSendingService = false; protected MessageSendingService sendingService; private MessageSendingServiceConnection sendingServiceConnection; - + private String sendingServiceStatus = ""; - + public SendingServiceAwareActivity() { this.sendingServiceConnection = new MessageSendingServiceConnection(); } @@ -65,15 +65,15 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { @Override public void onStart() { super.onStart(); - + Intent intent = new Intent(this, MessageSendingService.class); bindService(intent, sendingServiceConnection, Context.BIND_AUTO_CREATE); } - + @Override public void onStop() { super.onStop(); - + if (boundSendingService) { unbindService(sendingServiceConnection); boundSendingService = false; @@ -83,29 +83,28 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { protected void updateSendingServiceInformation() { if (menuItemLive == null) return; - + if (!boundSendingService) return; - + int errorCount = this.sendingService.getDelayedIntentsCount(); if (errorCount > 0) { menuItemLive.setIcon(R.drawable.ic_menu_share_red); Date lastSuccessfulSend = this.sendingService.getLastSuccessfulSend(); - sendingServiceStatus = String.format( - "Currently %d events waiting to be sent.\nLast successful sent was at %s", errorCount, - lastSuccessfulSend == null ? "never" : lastSuccessfulSend); + sendingServiceStatus = String.format("Currently %d events waiting to be sent.\nLast successful sent was at %s", + errorCount, lastSuccessfulSend == null ? "never" : lastSuccessfulSend); } else { menuItemLive.setIcon(R.drawable.ic_menu_share); sendingServiceStatus = String.format("Currently no event waiting to be sent.", errorCount); } } - + /** - * @return the resource ID for the options menu, {@code 0} if none. The menu item displaying the connection status - * is added automatically. + * @return the resource ID for the options menu, {@code 0} if none. + * The menu item displaying the connection status is added automatically. */ protected abstract int getOptionsMenuResId(); - + @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); @@ -116,7 +115,7 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { } return true; } - + @Override public boolean onOptionsItemSelected(MenuItem item) { if (R.id.options_menu_live == item.getItemId()) { @@ -127,7 +126,7 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { return super.onOptionsItemSelected(item); } } - + @Override public boolean onPrepareOptionsMenu(Menu menu) { updateSendingServiceInformation(); @@ -135,8 +134,7 @@ public abstract class SendingServiceAwareActivity extends ResilientActivity { } private String getLiveIconText() { - return String.format("Connected to: %s\n%s", - PrefUtils.getString(this, R.string.preference_server_url_key, R.string.preference_server_url_default), - sendingServiceStatus); + return String.format("Connected to: %s\n%s", PrefUtils.getString(this, R.string.preference_server_url_key, + R.string.preference_server_url_default), sendingServiceStatus); } } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SystemInformationActivityHelper.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SystemInformationActivityHelper.java index 7280b99a725..8b4b96b1d28 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SystemInformationActivityHelper.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/SystemInformationActivityHelper.java @@ -34,12 +34,11 @@ public class SystemInformationActivityHelper { ListView waitingView = (ListView) activity.findViewById(R.id.system_information_persistence_waiting); if (activity.boundSendingService) { Date lastSuccessfulSend = activity.sendingService.getLastSuccessfulSend(); - statusView.setText(String.format( - "Currently %d events waiting to be sent.\nLast successful sent was at: %s.", - activity.sendingService.getDelayedIntentsCount(), lastSuccessfulSend == null ? "never" - : lastSuccessfulSend)); - - waitingView.setAdapter(new ArrayAdapter(activity, android.R.layout.simple_list_item_1, + statusView.setText(String.format("Currently %d events waiting to be sent.\nLast successful sent was at: %s.", + activity.sendingService.getDelayedIntentsCount(), lastSuccessfulSend == null ? "never" : lastSuccessfulSend)); + + waitingView.setAdapter(new ArrayAdapter(activity, + android.R.layout.simple_list_item_1, activity.sendingService.getDelayedIntentsContent())); } else { statusView.setText(activity.getString(R.string.generic_error)); @@ -64,7 +63,7 @@ public class SystemInformationActivityHelper { private void setupVersionView(String deviceIdentifier) { TextView identifierView = (TextView) activity.findViewById(R.id.system_information_application_identifier); identifierView.setText(deviceIdentifier); - + TextView versionView = (TextView) activity.findViewById(R.id.system_information_application_version); PackageInfo info = AppUtils.getPackageInfo(activity); if (info == null) { diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/adapters/ArrayRemoveAdapter.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/adapters/ArrayRemoveAdapter.java index 995fb024f49..00b1560a21a 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/adapters/ArrayRemoveAdapter.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/adapters/ArrayRemoveAdapter.java @@ -14,27 +14,27 @@ import android.widget.TextView; import com.sap.sailing.android.shared.R; public class ArrayRemoveAdapter extends ArrayAdapter { - + public interface NotifyDataSetChangedListener { void onNotifyDataSetChanged(ArrayRemoveAdapter adapter); } - + private NotifyDataSetChangedListener listener; public ArrayRemoveAdapter(Context context, List objects) { super(context, R.layout.array_remove_adapter, objects); } - + @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.array_remove_adapter, parent, false); } - + TextView text = (TextView) convertView.findViewById(android.R.id.text1); ImageButton button = (ImageButton) convertView.findViewById(R.id.array_remove_adapter_remove); - + final T item = getItem(position); text.setText(item.toString()); button.setOnClickListener(new OnClickListener() { @@ -45,7 +45,7 @@ public class ArrayRemoveAdapter extends ArrayAdapter { }); return convertView; } - + @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/fragments/preference/BasePreferenceFragment.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/fragments/preference/BasePreferenceFragment.java index 1da08093b65..d66fbd58fff 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/fragments/preference/BasePreferenceFragment.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/fragments/preference/BasePreferenceFragment.java @@ -21,12 +21,12 @@ import com.sap.sailing.android.shared.ui.views.EditSetPreference; * Created by I074137 on 18.09.13. */ public class BasePreferenceFragment extends PreferenceFragment { - + @SuppressWarnings("unchecked") protected T findPreference(int resourceId) { return (T) findPreference(getString(resourceId)); } - + protected static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object value) { @@ -35,7 +35,10 @@ public class BasePreferenceFragment extends PreferenceFragment { if (preference instanceof ListPreference) { ListPreference listPreference = (ListPreference) preference; int index = listPreference.findIndexOfValue(stringValue); - preference.setSummary(index >= 0 ? listPreference.getEntries()[index] : null); + preference.setSummary( + index >= 0 + ? listPreference.getEntries()[index] + : null); } else if (preference instanceof MultiSelectListPreference || preference instanceof EditSetPreference) { @SuppressWarnings("unchecked") @@ -53,24 +56,28 @@ public class BasePreferenceFragment extends PreferenceFragment { protected static void bindPreferenceSummaryToValue(Preference preference) { addOnPreferenceChangeListener(preference, sBindPreferenceSummaryToValueListener); - sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager - .getDefaultSharedPreferences(preference.getContext()).getString(preference.getKey(), "")); + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getString(preference.getKey(), "")); } - + protected static void bindPreferenceSummaryToInteger(Preference preference) { addOnPreferenceChangeListener(preference, sBindPreferenceSummaryToValueListener); - sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager - .getDefaultSharedPreferences(preference.getContext()).getInt(preference.getKey(), 0)); + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getInt(preference.getKey(), 0)); } - + protected static void bindPreferenceSummaryToSet(Preference preference) { addOnPreferenceChangeListener(preference, sBindPreferenceSummaryToValueListener); - sBindPreferenceSummaryToValueListener.onPreferenceChange( - preference, - PreferenceManager.getDefaultSharedPreferences(preference.getContext()).getStringSet( - preference.getKey(), new HashSet())); + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getStringSet(preference.getKey(), new HashSet())); } protected static void bindPreferenceToCheckbox(CheckBoxPreference checkboxPreference, final Preference target) { @@ -83,7 +90,7 @@ public class BasePreferenceFragment extends PreferenceFragment { } }); } - + protected static void addOnPreferenceChangeListener(Preference preference, OnPreferenceChangeListener newListener) { OnPreferenceChangeListener oldListener = preference.getOnPreferenceChangeListener(); if (oldListener == null) { diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/utils/MultiplePreferenceChangeListener.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/utils/MultiplePreferenceChangeListener.java index c6e7e43b859..3547be32764 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/utils/MultiplePreferenceChangeListener.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/utils/MultiplePreferenceChangeListener.java @@ -7,9 +7,9 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; public class MultiplePreferenceChangeListener implements OnPreferenceChangeListener { - + private final Set listeners; - + public MultiplePreferenceChangeListener() { this.listeners = new HashSet(); } @@ -17,11 +17,12 @@ public class MultiplePreferenceChangeListener implements OnPreferenceChangeListe public void addOnPreferenceChangeListener(OnPreferenceChangeListener listener) { listeners.add(listener); } - + public void removeOnPreferenceChangeListener(OnPreferenceChangeListener listener) { listeners.remove(listener); } + @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean result = true; diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/views/EditSetPreference.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/views/EditSetPreference.java index 39a40ef4dcf..6e222ac2615 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/views/EditSetPreference.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/views/EditSetPreference.java @@ -27,12 +27,12 @@ import com.sap.sailing.android.shared.ui.adapters.ArrayRemoveAdapter; public class EditSetPreference extends DialogPreference { private static final String TAG = EditSetPreference.class.getName(); - + private static final List defaultFallbackValue = new ArrayList(); private List currentValue; - + private List exampleValues; - + public EditSetPreference(Context context, AttributeSet attrs) { super(context, attrs); this.exampleValues = new ArrayList(); @@ -46,19 +46,18 @@ public class EditSetPreference extends DialogPreference { @Override protected View onCreateDialogView() { View view = super.onCreateDialogView(); - + final AutoCompleteTextView inputView = (AutoCompleteTextView) view.findViewById(R.id.edit_set_preference_input); final Button addButton = (Button) view.findViewById(R.id.edit_set_preference_add); final ListView listView = (ListView) view.findViewById(R.id.edit_set_preference_list); - + // setup list view final ArrayRemoveAdapter adapter = new ArrayRemoveAdapter(view.getContext(), currentValue); listView.setEmptyView(view.findViewById(R.id.edit_set_preference_list_empty)); listView.setAdapter(adapter); - + // setup inputView - ArrayAdapter autoCompleteAdapter = new ArrayAdapter(view.getContext(), - android.R.layout.simple_dropdown_item_1line, exampleValues); + ArrayAdapter autoCompleteAdapter = new ArrayAdapter(view.getContext(), android.R.layout.simple_dropdown_item_1line, exampleValues); inputView.setAdapter(autoCompleteAdapter); inputView.addTextChangedListener(new TextWatcher() { @Override @@ -66,19 +65,17 @@ public class EditSetPreference extends DialogPreference { boolean invalid = s.length() == 0 || currentValue.contains(s.toString()); addButton.setEnabled(!invalid); } - + @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - + public void onTextChanged(CharSequence s, int start, int before, int count) { } + @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } + public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); - + // setup add button addButton.setOnClickListener(new OnClickListener() { - + @Override public void onClick(View arg0) { Editable text = inputView.getText(); @@ -86,10 +83,10 @@ public class EditSetPreference extends DialogPreference { text.clear(); } }); - + return view; } - + @SuppressWarnings("unchecked") @Override protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) { @@ -102,7 +99,7 @@ public class EditSetPreference extends DialogPreference { persistStringSet(currentValue); } } - + @Override protected Object onGetDefaultValue(TypedArray a, int index) { Set defaultValue = new HashSet(); @@ -111,7 +108,7 @@ public class EditSetPreference extends DialogPreference { } return defaultValue; } - + @Override protected void onDialogClosed(boolean positiveResult) { if (positiveResult) { @@ -129,27 +126,28 @@ public class EditSetPreference extends DialogPreference { // It's already there, so the same as persisting return true; } - + SharedPreferences.Editor editor = getEditor(); editor.putStringSet(getKey(), new HashSet(value)); if (shouldCommit()) { editor.commit(); } - + return true; } return false; } - + protected List getPersistedStringSet(List defaultReturnValue) { if (!shouldPersist()) { return defaultReturnValue; } - + Set fallbackDefault = defaultReturnValue == null ? null : new HashSet(defaultReturnValue); Set value = getSharedPreferences().getStringSet(getKey(), fallbackDefault); - + return value == null ? null : new ArrayList(value); } + } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/CollectionUtils.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/CollectionUtils.java index 0a2a16ac8da..afb15732e3e 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/CollectionUtils.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/CollectionUtils.java @@ -12,12 +12,12 @@ public class CollectionUtils { Util.addAll(iterable, list); return list; } - + public static boolean isEqualCollection(final Collection left, final Collection right) { if (left.size() != right.size()) { return false; } - + // There may be better implementations ;-) return left.containsAll(right) && right.containsAll(left); } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/FileHandlerUtils.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/FileHandlerUtils.java index ce11ac80b29..cd5c6d0b950 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/FileHandlerUtils.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/FileHandlerUtils.java @@ -31,19 +31,17 @@ public class FileHandlerUtils { stringBuilder.append(line + "\n"); } } catch (IOException e) { - ExLog.e(context, TAG, - "In Method convertStreamToString while converting stream to string: " + e.getMessage()); + ExLog.e(context, TAG, "In Method convertStreamToString while converting stream to string: " + e.getMessage()); } finally { try { inputStream.close(); } catch (IOException e) { - ExLog.e(context, TAG, - "In Method convertStreamToString while closing the input stream: " + e.getMessage()); + ExLog.e(context, TAG, "In Method convertStreamToString while closing the input stream: " + e.getMessage()); } } return stringBuilder.toString(); } - + public static File getExternalApplicationFolder(Context context) { String appFolder = context.getResources().getString(R.string.app_folder); File dir = new File(Environment.getExternalStorageDirectory() + File.separator + appFolder); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/PrefUtils.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/PrefUtils.java index 8adea0e3ef8..b8b1846025f 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/PrefUtils.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/PrefUtils.java @@ -8,7 +8,7 @@ public class PrefUtils { private static String key; private static SharedPreferences prefs; private static Context lastContext; - + private static void setup(Context context, int keyResId) { Context appContext = context.getApplicationContext(); if (appContext != lastContext) { @@ -17,19 +17,19 @@ public class PrefUtils { } key = appContext.getString(keyResId); } - + public static String getString(Context context, int keyResId, int defaultResId) { setup(context, keyResId); String defVal = context.getString(defaultResId); return prefs.getString(key, defVal); } - + public static boolean getBoolean(Context context, int keyResId, int defaultResId) { setup(context, keyResId); boolean defVal = context.getResources().getBoolean(defaultResId); return prefs.getBoolean(key, defVal); } - + public static int getInt(Context context, int keyResId, int defaultResId) { setup(context, keyResId); int defVal = context.getResources().getInteger(defaultResId); diff --git a/mobile/com.sap.sailing.android.tracking.app/pom.xml b/mobile/com.sap.sailing.android.tracking.app/pom.xml index 305fba539b8..649d48dbaa1 100644 --- a/mobile/com.sap.sailing.android.tracking.app/pom.xml +++ b/mobile/com.sap.sailing.android.tracking.app/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - + com.sap.sailing mobile @@ -15,8 +15,7 @@ - com.sap.sailing.android.tracking.app.version - + com.sap.sailing.android.tracking.app.version ${tracking-app-version} @@ -58,10 +57,10 @@ - com.sap.sailing - com.sap.sailing.android.shared - 1.0.0-SNAPSHOT - apklib + com.sap.sailing + com.sap.sailing.android.shared + 1.0.0-SNAPSHOT + apklib @@ -80,7 +79,7 @@ true - + true proguard-project.txt diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/BaseActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/BaseActivity.java index b1d9867e390..ad0a0f37bc8 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/BaseActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/BaseActivity.java @@ -16,7 +16,7 @@ public class BaseActivity extends AbstractBaseActivity { private static final String TAG = BaseActivity.class.getName(); protected AppPreferences prefs; - + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -29,7 +29,7 @@ public class BaseActivity extends AbstractBaseActivity { inflater.inflate(R.menu.options_menu, menu); return true; } - + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java index 14a0dab362c..6a957f11c71 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/RacingActivity.java @@ -52,7 +52,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener private ActionBar actionBar; private List items; - public FilterModeSelectionBinder(ManagedRaceListFragment list, ActionBar actionBar, + public FilterModeSelectionBinder(ManagedRaceListFragment list, ActionBar actionBar, ArrayAdapter adapter, FilterMode... rawItems) { this.targetList = list; this.actionBar = actionBar; @@ -62,7 +62,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener trackSelection(list); } - private void trackSelection(ManagedRaceListFragment list) { + private void trackSelection(ManagedRaceListFragment list) { int selectedIndex = this.items.indexOf(list.getFilterMode()); if (selectedIndex >= 0) { this.actionBar.setSelectedNavigationItem(selectedIndex); @@ -205,7 +205,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener return courseId; } - private void setupActionBar(CourseArea courseArea) { + private void setupActionBar(CourseArea courseArea) { ActionBar actionBar = getActionBar(); AbstractLogEventAuthor author = preferences.getAuthor(); String title = String.format(getString(R.string.racingview_header), courseArea.getName()); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/ResultsCapturingActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/ResultsCapturingActivity.java index e220013ee7d..fd4c2448701 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/ResultsCapturingActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/ResultsCapturingActivity.java @@ -133,7 +133,7 @@ public class ResultsCapturingActivity extends SessionActivity { } } - private int getBackCameraId() { + private int getBackCameraId() { for (int i = 0; i < Camera.getNumberOfCameras(); i++) { CameraInfo info = new CameraInfo(); Camera.getCameraInfo(i, info); diff --git a/mobile/google-play-services_lib/res/values/maps_attrs.xml b/mobile/google-play-services_lib/res/values/maps_attrs.xml index b61410e8f6d..bb1c9f38595 100644 --- a/mobile/google-play-services_lib/res/values/maps_attrs.xml +++ b/mobile/google-play-services_lib/res/values/maps_attrs.xml @@ -8,9 +8,6 @@ - - - diff --git a/mobile/pom.xml b/mobile/pom.xml index 069aa8e6d97..f296c2f7702 100644 --- a/mobile/pom.xml +++ b/mobile/pom.xml @@ -142,4 +142,5 @@ + diff --git a/pom.xml b/pom.xml index 2babac48203..c3d8e251065 100755 --- a/pom.xml +++ b/pom.xml @@ -57,5 +57,7 @@ uni-luebeck http://www.itm.uni-luebeck.de/projects/maven/releases + +