Skip to content

Commit 5c8c403

Browse files
authored
Migrated util module files from java to kotlin (#5935)
* Rename .java to .kt * Migrated the following files in util module to Kotlin - AbstractTextWatcher - ActivityUtils - CommonsDateUtil - DateUtil * Rename .java to .kt * Migrated the following files in util module to Kotlin - DeviceInfoUtil - ExecutorUtils - FragmentUtils
1 parent 248c7b0 commit 5c8c403

22 files changed

+288
-290
lines changed

app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
import fr.free.nrw.commons.campaigns.models.Campaign;
1313
import fr.free.nrw.commons.databinding.LayoutCampaginBinding;
1414
import fr.free.nrw.commons.theme.BaseActivity;
15-
import fr.free.nrw.commons.utils.DateUtil;
15+
import fr.free.nrw.commons.utils.CommonsDateUtil;
1616

17+
import fr.free.nrw.commons.utils.DateUtil;
1718
import java.text.ParseException;
1819
import java.util.Date;
1920

2021
import fr.free.nrw.commons.R;
2122
import fr.free.nrw.commons.Utils;
2223
import fr.free.nrw.commons.contributions.MainActivity;
23-
import fr.free.nrw.commons.utils.CommonsDateUtil;
2424
import fr.free.nrw.commons.utils.SwipableCardView;
2525
import fr.free.nrw.commons.utils.ViewUtil;
2626

app/src/main/java/fr/free/nrw/commons/campaigns/CampaignsPresenter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.annotation.SuppressLint;
44

55
import fr.free.nrw.commons.campaigns.models.Campaign;
6+
import fr.free.nrw.commons.utils.CommonsDateUtil;
67
import java.text.ParseException;
78
import java.util.Collections;
89
import java.util.Date;
@@ -14,7 +15,6 @@
1415

1516
import fr.free.nrw.commons.BasePresenter;
1617
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
17-
import fr.free.nrw.commons.utils.CommonsDateUtil;
1818
import io.reactivex.Scheduler;
1919
import io.reactivex.Single;
2020
import io.reactivex.SingleObserver;

app/src/main/java/fr/free/nrw/commons/delete/ReasonBuilder.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.Context;
44

55
import fr.free.nrw.commons.utils.DateUtil;
6-
76
import java.util.Date;
87
import java.util.Locale;
98

app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import androidx.annotation.Nullable;
1212
import androidx.fragment.app.Fragment;
1313
import androidx.viewpager.widget.ViewPager.OnPageChangeListener;
14-
import com.google.android.material.tabs.TabLayout;
1514
import fr.free.nrw.commons.R;
1615
import fr.free.nrw.commons.ViewPagerAdapter;
1716
import fr.free.nrw.commons.contributions.MainActivity;

app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java

-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import fr.free.nrw.commons.actions.ThanksClient;
5656
import fr.free.nrw.commons.auth.AccountUtil;
5757
import fr.free.nrw.commons.auth.SessionManager;
58-
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient;
5958
import fr.free.nrw.commons.auth.csrf.InvalidLoginTokenException;
6059
import fr.free.nrw.commons.category.CategoryClient;
6160
import fr.free.nrw.commons.category.CategoryDetailsActivity;

app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.widget.TextView;
2323
import androidx.activity.result.ActivityResultLauncher;
2424
import androidx.annotation.NonNull;
25-
import androidx.annotation.Nullable;
2625
import androidx.constraintlayout.widget.ConstraintLayout;
2726
import androidx.fragment.app.Fragment;
2827
import androidx.recyclerview.widget.RecyclerView;

app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package fr.free.nrw.commons.upload.mediaDetails;
22

33
import static android.app.Activity.RESULT_OK;
4-
import static fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags;
54

65
import android.annotation.SuppressLint;
76
import android.app.Activity;
@@ -45,6 +44,7 @@
4544
import fr.free.nrw.commons.upload.UploadItem;
4645
import fr.free.nrw.commons.upload.UploadMediaDetail;
4746
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter;
47+
import fr.free.nrw.commons.utils.ActivityUtils;
4848
import fr.free.nrw.commons.utils.DialogUtil;
4949
import fr.free.nrw.commons.utils.ImageUtils;
5050
import fr.free.nrw.commons.utils.NetworkUtils;
@@ -208,7 +208,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
208208

209209
try {
210210
if(!presenter.getImageQuality(indexOfFragment, inAppPictureLocation, getActivity())) {
211-
startActivityWithFlags(
211+
ActivityUtils.startActivityWithFlags(
212212
getActivity(), MainActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP,
213213
Intent.FLAG_ACTIVITY_SINGLE_TOP);
214214
}

app/src/main/java/fr/free/nrw/commons/utils/AbstractTextWatcher.java

-31
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package fr.free.nrw.commons.utils
2+
3+
import android.text.Editable
4+
import android.text.TextWatcher
5+
6+
class AbstractTextWatcher(
7+
private val textChange: TextChange
8+
) : TextWatcher {
9+
10+
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
11+
// No-op
12+
}
13+
14+
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
15+
textChange.onTextChanged(s.toString())
16+
}
17+
18+
override fun afterTextChanged(s: Editable?) {
19+
// No-op
20+
}
21+
22+
interface TextChange {
23+
fun onTextChanged(value: String)
24+
}
25+
}

app/src/main/java/fr/free/nrw/commons/utils/ActivityUtils.java

-15
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package fr.free.nrw.commons.utils
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
6+
object ActivityUtils {
7+
8+
@JvmStatic
9+
fun <T> startActivityWithFlags(context: Context, cls: Class<T>, vararg flags: Int) {
10+
val intent = Intent(context, cls)
11+
for (flag in flags) {
12+
intent.addFlags(flag)
13+
}
14+
context.startActivity(intent)
15+
}
16+
}

app/src/main/java/fr/free/nrw/commons/utils/CommonsDateUtil.java

-44
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package fr.free.nrw.commons.utils
2+
3+
import java.text.SimpleDateFormat
4+
import java.util.Locale
5+
import java.util.TimeZone
6+
7+
/**
8+
* Provides util functions for formatting date time.
9+
* Most of our formatting needs are addressed by the data library's DateUtil class.
10+
* Methods should be added here only if DateUtil class doesn't provide for it already.
11+
*/
12+
object CommonsDateUtil {
13+
14+
/**
15+
* Gets SimpleDateFormat for short date pattern.
16+
* @return simpleDateFormat
17+
*/
18+
@JvmStatic
19+
fun getIso8601DateFormatShort(): SimpleDateFormat {
20+
val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT)
21+
simpleDateFormat.timeZone = TimeZone.getTimeZone("UTC")
22+
return simpleDateFormat
23+
}
24+
25+
/**
26+
* Gets SimpleDateFormat for date pattern returned by Media object.
27+
* @return simpleDateFormat
28+
*/
29+
@JvmStatic
30+
fun getMediaSimpleDateFormat(): SimpleDateFormat {
31+
val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT)
32+
simpleDateFormat.timeZone = TimeZone.getTimeZone("UTC")
33+
return simpleDateFormat
34+
}
35+
36+
/**
37+
* Gets the timestamp pattern for a date.
38+
* @return timestamp
39+
*/
40+
@JvmStatic
41+
fun getIso8601DateFormatTimestamp(): SimpleDateFormat {
42+
val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT)
43+
simpleDateFormat.timeZone = TimeZone.getTimeZone("UTC")
44+
return simpleDateFormat
45+
}
46+
}

app/src/main/java/fr/free/nrw/commons/utils/DateUtil.java

-53
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package fr.free.nrw.commons.utils
2+
3+
import android.text.format.DateFormat.getBestDateTimePattern
4+
import java.text.ParseException
5+
import java.text.SimpleDateFormat
6+
import java.util.Date
7+
import java.util.HashMap
8+
import java.util.Locale
9+
import java.util.TimeZone
10+
11+
/**
12+
* Utility class for date formatting and parsing.
13+
* TODO: Switch to DateTimeFormatter when minSdk = 26.
14+
*/
15+
object DateUtil {
16+
17+
private val DATE_FORMATS: MutableMap<String, SimpleDateFormat> = HashMap()
18+
19+
@JvmStatic
20+
@Synchronized
21+
fun iso8601DateFormat(date: Date): String {
22+
return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).format(date)
23+
}
24+
25+
@JvmStatic
26+
@Synchronized
27+
@Throws(ParseException::class)
28+
fun iso8601DateParse(date: String): Date {
29+
return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).parse(date)
30+
}
31+
32+
@JvmStatic
33+
fun getMonthOnlyDateString(date: Date): String {
34+
return getDateStringWithSkeletonPattern(date, "MMMM d")
35+
}
36+
37+
@JvmStatic
38+
fun getExtraShortDateString(date: Date): String {
39+
return getDateStringWithSkeletonPattern(date, "MMM d")
40+
}
41+
42+
@JvmStatic
43+
@Synchronized
44+
fun getDateStringWithSkeletonPattern(date: Date, pattern: String): String {
45+
return getCachedDateFormat(
46+
getBestDateTimePattern(Locale.getDefault(), pattern),
47+
Locale.getDefault(), false
48+
).format(date)
49+
}
50+
51+
@JvmStatic
52+
private fun getCachedDateFormat(pattern: String, locale: Locale, utc: Boolean): SimpleDateFormat {
53+
if (!DATE_FORMATS.containsKey(pattern)) {
54+
val df = SimpleDateFormat(pattern, locale)
55+
if (utc) {
56+
df.timeZone = TimeZone.getTimeZone("UTC")
57+
}
58+
DATE_FORMATS[pattern] = df
59+
}
60+
return DATE_FORMATS[pattern]!!
61+
}
62+
}

0 commit comments

Comments
 (0)