Skip to content

Commit

Permalink
Merge branch 'release/0.1.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
sgrimault committed Jul 14, 2019
2 parents 2d59aac + 9f13bda commit 5843caa
Show file tree
Hide file tree
Showing 39 changed files with 1,004 additions and 242 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@
path = gn_mobile_core
url = https://github.com/PnX-SI/gn_mobile_core.git
branch = develop
[submodule "gn_mobile_maps"]
path = gn_mobile_maps
url = https://github.com/PnX-SI/gn_mobile_maps.git
branch = develop
7 changes: 7 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,19 @@

## Upgrade git sub modules

Do **NOT** modify directly `commons` and `viewpager`. Any changes should be made from
[gn_mobile_core](https://github.com/PnX-SI/gn_mobile_core) git repository.
Do **NOT** modify directly any git sub modules (e.g. `commons`, `viewpager` and `maps`).
Any changes should be made from each underlying git repository:

* `commons`: [gn_mobile_core](https://github.com/PnX-SI/gn_mobile_core) git repository
* `viewpager`: [gn_mobile_core](https://github.com/PnX-SI/gn_mobile_core) git repository
* `maps`: [gn_mobile_maps](https://github.com/PnX-SI/gn_mobile_maps) git repository

```bash
./upgrade_submodules.sh
```
```

## Troubleshooting

* Kotlin error, Redeclaration from class within imported module:

clean project from menu *Build -> Clean Project*, then rebuild project.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.31'
ext.kotlin_version = '1.3.41'

repositories {
google()
Expand All @@ -10,7 +10,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
2 changes: 1 addition & 1 deletion gn_mobile_core
Submodule gn_mobile_core updated 33 files
+1 −1 build.gradle
+10 −3 commons/build.gradle
+39 −33 commons/src/main/java/fr/geonature/commons/input/InputManager.kt
+7 −8 commons/src/main/java/fr/geonature/commons/input/io/InputJsonReader.kt
+7 −7 commons/src/main/java/fr/geonature/commons/input/io/InputJsonWriter.kt
+80 −0 commons/src/main/java/fr/geonature/commons/settings/AppSettingsManager.kt
+10 −0 commons/src/main/java/fr/geonature/commons/settings/IAppSettings.kt
+125 −0 commons/src/main/java/fr/geonature/commons/settings/io/AppSettingsJsonReader.kt
+1 −2 commons/src/main/java/fr/geonature/commons/util/FileUtils.kt
+163 −0 commons/src/main/java/fr/geonature/commons/util/PermissionUtils.kt
+53 −13 commons/src/test/java/fr/geonature/commons/input/InputManagerTest.kt
+9 −10 commons/src/test/java/fr/geonature/commons/input/io/InputJsonReaderTest.kt
+2 −2 commons/src/test/java/fr/geonature/commons/input/io/InputJsonWriterTest.kt
+106 −0 commons/src/test/java/fr/geonature/commons/settings/AppSettingsManagerTest.kt
+33 −0 commons/src/test/java/fr/geonature/commons/settings/DummyAppSettings.kt
+77 −0 commons/src/test/java/fr/geonature/commons/settings/io/AppSettingsJsonReaderTest.kt
+3 −0 commons/src/test/resources/fixtures/settings_dummy.json
+2 −2 commons/version.properties
+8 −1 viewpager/build.gradle
+0 −61 viewpager/src/main/java/fr/geonature/viewpager/helper/PagerHelper.kt
+8 −12 viewpager/src/main/java/fr/geonature/viewpager/pager/Pager.kt
+86 −0 viewpager/src/main/java/fr/geonature/viewpager/pager/PagerManager.kt
+7 −11 viewpager/src/main/java/fr/geonature/viewpager/pager/io/PagerJsonReader.kt
+2 −2 viewpager/src/main/java/fr/geonature/viewpager/pager/io/PagerJsonWriter.kt
+2 −2 viewpager/src/main/java/fr/geonature/viewpager/ui/AbstractNavigationHistoryPagerFragmentActivity.kt
+67 −60 viewpager/src/main/java/fr/geonature/viewpager/ui/AbstractPagerFragmentActivity.kt
+1 −1 viewpager/src/main/res/layout/activity_pager.xml
+0 −129 viewpager/src/test/java/fr/geonature/viewpager/helper/PagerHelperTest.kt
+108 −0 viewpager/src/test/java/fr/geonature/viewpager/pager/PagerManagerTest.kt
+5 −3 viewpager/src/test/java/fr/geonature/viewpager/pager/PagerTest.kt
+23 −12 viewpager/src/test/java/fr/geonature/viewpager/pager/io/PagerJsonReaderTest.kt
+10 −6 viewpager/src/test/java/fr/geonature/viewpager/pager/io/PagerJsonWriterTest.kt
+2 −2 viewpager/version.properties
1 change: 1 addition & 0 deletions gn_mobile_maps
Submodule gn_mobile_maps added at 306547
2 changes: 1 addition & 1 deletion gn_mobile_occtax.iml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
Expand Down
1 change: 1 addition & 0 deletions maps
12 changes: 9 additions & 3 deletions occtax/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

version = "0.0.7"
version = "0.1.2"

android {
compileSdkVersion 28

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
applicationId "fr.geonature.occtax"
minSdkVersion 21
Expand Down Expand Up @@ -43,15 +48,16 @@ dependencies {

implementation project(':commons')
implementation project(':viewpager')
implementation project(':maps')

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1"

implementation 'androidx.core:core-ktx:1.2.0-alpha01'
implementation 'androidx.core:core-ktx:1.2.0-alpha02'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha06'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta01'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.preference:preference:1.0.0'
implementation 'com.l4digital.fastscroll:fastscroll:2.0.1'
Expand Down
15 changes: 14 additions & 1 deletion occtax/src/main/java/fr/geonature/occtax/input/Input.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.os.Parcel
import android.os.Parcelable
import fr.geonature.commons.input.AbstractInput
import fr.geonature.commons.input.AbstractInputTaxon
import org.locationtech.jts.geom.Geometry

/**
* Describes a current input.
Expand All @@ -12,8 +13,20 @@ import fr.geonature.commons.input.AbstractInputTaxon
*/
class Input : AbstractInput {

var geometry: Geometry? = null

constructor() : super("occtax")
constructor(source: Parcel) : super(source)
constructor(source: Parcel) : super(source) {
this.geometry = source.readSerializable() as Geometry?
}

override fun writeToParcel(dest: Parcel,
flags: Int) {
super.writeToParcel(dest,
flags)

dest.writeSerializable(geometry)
}

override fun getTaxaFromParcel(source: Parcel): List<AbstractInputTaxon> {
val inputTaxa = source.createTypedArrayList(InputTaxon.CREATOR)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.util.JsonToken
import fr.geonature.commons.input.AbstractInput
import fr.geonature.commons.input.io.InputJsonReader
import fr.geonature.commons.util.IsoDateUtils
import fr.geonature.maps.jts.geojson.io.GeoJsonReader
import fr.geonature.occtax.input.Input
import fr.geonature.occtax.input.InputTaxon
import java.util.Date
Expand All @@ -14,15 +15,17 @@ import java.util.Date
*
* @author [S. Grimault](mailto:[email protected])
*/
class OnInputJsonReaderListenerImpl : InputJsonReader.OnInputJsonReaderListener {
class OnInputJsonReaderListenerImpl : InputJsonReader.OnInputJsonReaderListener<Input> {

override fun createInput(): AbstractInput {
private val geoJsonReader = GeoJsonReader()

override fun createInput(): Input {
return Input()
}

override fun readAdditionalInputData(reader: JsonReader,
keyName: String,
input: AbstractInput) {
input: Input) {
when (keyName) {
"geometry" -> readGeometry(reader,
input)
Expand All @@ -33,12 +36,14 @@ class OnInputJsonReaderListenerImpl : InputJsonReader.OnInputJsonReaderListener
}

private fun readGeometry(reader: JsonReader,
input: AbstractInput) {
reader.beginObject()

// TODO: read geometry object

reader.endObject()
input: Input) {
when (reader.peek()) {
JsonToken.NULL -> reader.nextNull()
JsonToken.BEGIN_OBJECT -> {
input.geometry = geoJsonReader.readGeometry(reader)
}
else -> reader.skipValue()
}
}

private fun readProperties(reader: JsonReader,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,38 +1,46 @@
package fr.geonature.occtax.input.io

import android.util.JsonWriter
import fr.geonature.commons.input.AbstractInput
import fr.geonature.commons.input.AbstractInputTaxon
import fr.geonature.commons.input.io.InputJsonWriter
import fr.geonature.commons.util.IsoDateUtils
import fr.geonature.maps.jts.geojson.io.GeoJsonWriter
import fr.geonature.occtax.input.Input

/**
* Default implementation of [InputJsonWriter.OnInputJsonWriterListener].
*
* @author [S. Grimault](mailto:[email protected])
*/
class OnInputJsonWriterListenerImpl : InputJsonWriter.OnInputJsonWriterListener {
class OnInputJsonWriterListenerImpl : InputJsonWriter.OnInputJsonWriterListener<Input> {

private val geoJsonWriter = GeoJsonWriter()

override fun writeAdditionalInputData(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
writeGeometry(writer,
input)
writeProperties(writer,
input)
}

private fun writeGeometry(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
writer.name("geometry")
.beginObject()

// TODO: write geometry object
val geometry = input.geometry

writer.endObject()
if (geometry == null) {
writer.nullValue()
}
else {
geoJsonWriter.writeGeometry(writer,
geometry)
}
}

private fun writeProperties(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
writer.name("properties")
.beginObject()

Expand All @@ -54,7 +62,7 @@ class OnInputJsonWriterListenerImpl : InputJsonWriter.OnInputJsonWriterListener
}

private fun writeDate(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
val dateToIsoString = IsoDateUtils.toIsoDateString(input.date)
writer.name("date_min")
.value(dateToIsoString)
Expand All @@ -63,7 +71,7 @@ class OnInputJsonWriterListenerImpl : InputJsonWriter.OnInputJsonWriterListener
}

private fun writeInputObserverIds(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
writer.name("observers")
.beginArray()

Expand All @@ -74,7 +82,7 @@ class OnInputJsonWriterListenerImpl : InputJsonWriter.OnInputJsonWriterListener
}

private fun writeInputTaxa(writer: JsonWriter,
input: AbstractInput) {
input: Input) {
writer.name("t_occurrences_occtax")
.beginArray()

Expand Down
53 changes: 53 additions & 0 deletions occtax/src/main/java/fr/geonature/occtax/settings/AppSettings.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package fr.geonature.occtax.settings

import android.os.Parcel
import android.os.Parcelable
import fr.geonature.commons.settings.IAppSettings
import fr.geonature.maps.settings.MapSettings

/**
* Global internal settings.
*
* @author [S. Grimault](mailto:[email protected])
*/
data class AppSettings(var mapSettings: MapSettings? = null) : IAppSettings {

private constructor(source: Parcel) : this(source.readParcelable(MapSettings::class.java.classLoader) as MapSettings)

override fun describeContents(): Int {
return 0
}

override fun writeToParcel(dest: Parcel?,
flags: Int) {
dest?.writeParcelable(
mapSettings,
0
)
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as AppSettings

if (mapSettings != other.mapSettings) return false

return true
}

override fun hashCode(): Int {
return mapSettings.hashCode()
}

companion object CREATOR : Parcelable.Creator<AppSettings> {
override fun createFromParcel(parcel: Parcel): AppSettings {
return AppSettings(parcel)
}

override fun newArray(size: Int): Array<AppSettings?> {
return arrayOfNulls(size)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package fr.geonature.occtax.settings.io

import android.util.JsonReader
import android.util.JsonToken
import fr.geonature.commons.settings.io.AppSettingsJsonReader
import fr.geonature.maps.settings.io.MapSettingsReader
import fr.geonature.occtax.settings.AppSettings

/**
* Default implementation of [AppSettingsJsonReader.OnAppSettingsJsonReaderListener].
*
* @author [S. Grimault](mailto:[email protected])
*/
class OnAppSettingsJsonReaderListenerImpl : AppSettingsJsonReader.OnAppSettingsJsonReaderListener<AppSettings> {

override fun createAppSettings(): AppSettings {
return AppSettings()
}

override fun readAdditionalAppSettingsData(reader: JsonReader,
keyName: String,
appSettings: AppSettings) {
when (keyName) {
"map" -> {
if (reader.peek() == JsonToken.BEGIN_OBJECT) {
readMapSettings(reader,
appSettings)
}
else {
reader.skipValue()
}
}
}
}

private fun readMapSettings(reader: JsonReader,
appSettings: AppSettings) {
appSettings.mapSettings = MapSettingsReader().read(reader)
}
}
Loading

0 comments on commit 5843caa

Please sign in to comment.