diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Checkmark.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Checkmark.java index bb6ccc4f3..6683d6543 100644 --- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Checkmark.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Checkmark.java @@ -23,6 +23,8 @@ import org.apache.commons.lang3.builder.*; import javax.annotation.concurrent.*; +import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle; + /** * A Checkmark represents the completion status of the habit for a given day. *
@@ -108,7 +110,7 @@ public final class Checkmark
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("timestamp", timestamp)
.append("value", value)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java
index fa90587d2..7defa5387 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java
@@ -31,6 +31,7 @@ import java.util.*;
import javax.annotation.concurrent.*;
import static org.isoron.uhabits.core.models.Checkmark.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
/**
* The collection of {@link Checkmark}s belonging to a habit.
@@ -396,7 +397,7 @@ public abstract class CheckmarkList
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("begin", begin)
.append("center", center)
.append("end", end)
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Frequency.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Frequency.java
index d12ff8ad2..f16e180e0 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Frequency.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Frequency.java
@@ -23,6 +23,8 @@ import org.apache.commons.lang3.builder.*;
import javax.annotation.concurrent.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
+
/**
* Represents how often is the habit repeated.
*/
@@ -92,7 +94,7 @@ public class Frequency
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("numerator", numerator)
.append("denominator", denominator)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
index 9d63c1476..69e41bead 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
@@ -29,6 +29,7 @@ import javax.annotation.concurrent.*;
import javax.inject.*;
import static org.isoron.uhabits.core.models.Checkmark.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
/**
* The thing that the user wants to track.
@@ -414,7 +415,7 @@ public class Habit
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("name", name)
.append("description", description)
.append("frequency", frequency)
@@ -475,7 +476,7 @@ public class Habit
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("id", id)
.append("data", data)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Reminder.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Reminder.java
index 878da7260..870954605 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Reminder.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Reminder.java
@@ -23,6 +23,8 @@ import android.support.annotation.*;
import org.apache.commons.lang3.builder.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
+
public final class Reminder
{
private final int hour;
@@ -83,7 +85,7 @@ public final class Reminder
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("hour", hour)
.append("minute", minute)
.append("days", days)
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Repetition.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Repetition.java
index 762234696..ea8951ed4 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Repetition.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Repetition.java
@@ -21,6 +21,8 @@ package org.isoron.uhabits.core.models;
import org.apache.commons.lang3.builder.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
+
/**
* Represents a record that the user has performed a certain habit at a certain
* date.
@@ -89,7 +91,7 @@ public final class Repetition
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("timestamp", timestamp)
.append("value", value)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Score.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Score.java
index 93e03f5f2..9e5c1fd97 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Score.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Score.java
@@ -22,6 +22,7 @@ package org.isoron.uhabits.core.models;
import org.apache.commons.lang3.builder.*;
import static java.lang.Math.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
/**
* Represents how strong a habit is at a certain date.
@@ -88,7 +89,7 @@ public final class Score
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("timestamp", timestamp)
.append("value", value)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Streak.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Streak.java
index 00e27b075..4a66bed7a 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Streak.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Streak.java
@@ -21,6 +21,8 @@ package org.isoron.uhabits.core.models;
import org.apache.commons.lang3.builder.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
+
public final class Streak
{
private final Timestamp start;
@@ -64,7 +66,7 @@ public final class Streak
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("start", start)
.append("end", end)
.toString();
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Timestamp.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Timestamp.java
index ba45b19cb..1c58c596e 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Timestamp.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Timestamp.java
@@ -24,6 +24,7 @@ import org.apache.commons.lang3.builder.*;
import java.util.*;
import static java.util.Calendar.DAY_OF_WEEK;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
public final class Timestamp
{
@@ -137,7 +138,7 @@ public final class Timestamp
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("unixTime", unixTime)
.toString();
}
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/WeekdayList.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/WeekdayList.java
index 3c24e7814..67325e915 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/WeekdayList.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/WeekdayList.java
@@ -23,6 +23,8 @@ import org.apache.commons.lang3.builder.*;
import java.util.*;
+import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
+
public final class WeekdayList
{
public static final WeekdayList EVERY_DAY = new WeekdayList(127);
@@ -92,7 +94,7 @@ public final class WeekdayList
@Override
public String toString()
{
- return new ToStringBuilder(this)
+ return new ToStringBuilder(this, defaultToStringStyle())
.append("weekdays", weekdays)
.toString();
}
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/utils/StringUtils.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/utils/StringUtils.java
index 62da96f8d..f12d8b3c0 100644
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/utils/StringUtils.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/utils/StringUtils.java
@@ -19,18 +19,35 @@
package org.isoron.uhabits.core.utils;
+import org.apache.commons.lang3.builder.*;
+
import java.math.*;
import java.util.*;
public class StringUtils
{
+ private static StandardToStringStyle toStringStyle = null;
+
public static String getRandomId()
{
return new BigInteger(260, new Random()).toString(32).substring(0, 32);
}
- public static String removePointers(String original)
+ public static ToStringStyle defaultToStringStyle()
{
- return original.replaceAll("@[0-9a-f]*", "@00000000");
+ if (toStringStyle == null)
+ {
+ toStringStyle = new StandardToStringStyle();
+ toStringStyle.setFieldSeparator(", ");
+ toStringStyle.setUseClassName(false);
+ toStringStyle.setUseIdentityHashCode(false);
+ toStringStyle.setContentStart("{");
+ toStringStyle.setContentEnd("}");
+ toStringStyle.setFieldNameValueSeparator(": ");
+ toStringStyle.setArrayStart("[");
+ toStringStyle.setArrayEnd("]");
+ }
+
+ return toStringStyle;
}
}
diff --git a/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java b/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java
index e741b6fab..bc79140af 100644
--- a/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java
+++ b/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java
@@ -31,7 +31,6 @@ import nl.jqno.equalsverifier.*;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.core.IsEqual.*;
import static org.isoron.uhabits.core.models.Checkmark.*;
-import static org.isoron.uhabits.core.utils.StringUtils.removePointers;
public class CheckmarkListTest extends BaseUnitTest
{
@@ -360,21 +359,14 @@ public class CheckmarkListTest extends BaseUnitTest
{
Timestamp t = Timestamp.ZERO.plus(100);
Checkmark checkmark = new Checkmark(t, 2);
- String s = removePointers(checkmark.toString());
- assertThat(s, equalTo(
- "org.isoron.uhabits.core.models.Checkmark@00000000[" +
- "timestamp=org.isoron.uhabits.core.models.Timestamp@00000000[unixTime=8640000000]," +
- "value=2]"));
-
+ assertThat(checkmark.toString(),
+ equalTo("{timestamp: {unixTime: 8640000000}, value: 2}"));
CheckmarkList.Interval interval =
new CheckmarkList.Interval(t, t.plus(1), t.plus(2));
- s = removePointers(interval.toString());
- assertThat(s, equalTo(
- "org.isoron.uhabits.core.models.CheckmarkList$Interval@00000000[" +
- "begin=org.isoron.uhabits.core.models.Timestamp@00000000[unixTime=8640000000]," +
- "center=org.isoron.uhabits.core.models.Timestamp@00000000[unixTime=8726400000]," +
- "end=org.isoron.uhabits.core.models.Timestamp@00000000[unixTime=8812800000]]"));
+ assertThat(interval.toString(), equalTo(
+ "{begin: {unixTime: 8640000000}, center: {unixTime: 8726400000}," +
+ " end: {unixTime: 8812800000}}"));
}
@Test
diff --git a/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java b/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java
index 87b16fdf4..f864703fb 100644
--- a/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java
+++ b/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java
@@ -27,7 +27,6 @@ import nl.jqno.equalsverifier.*;
import static org.hamcrest.CoreMatchers.*;
import static org.isoron.uhabits.core.utils.DateUtils.*;
-import static org.isoron.uhabits.core.utils.StringUtils.removePointers;
import static org.junit.Assert.*;
public class HabitTest extends BaseUnitTest
@@ -150,22 +149,14 @@ public class HabitTest extends BaseUnitTest
{
Habit h = modelFactory.buildHabit();
h.setReminder(new Reminder(22, 30, WeekdayList.EVERY_DAY));
-
- String s = removePointers(h.toString());
-
- String expected =
- "org.isoron.uhabits.core.models.Habit@00000000[" +
- "id=