Skip to content

Commit

Permalink
v1.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
sqayner committed Aug 23, 2023
1 parent f836f68 commit 74183ef
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 127 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package tr.com.erenkaynar.library.earthquake;

import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

Expand All @@ -22,7 +22,7 @@ protected void onCreate(Bundle savedInstanceState) {

text = findViewById(R.id.textView);

EarthquakeAPI.initialize().setSource(Source.AFAD).setEarthquakeAPIListener(new EarthquakeAPIListener() {
EarthquakeAPI.initialize().setSource(Source.KANDILLI).setEarthquakeAPIListener(new EarthquakeAPIListener() {
@Override
public void onLoaded(ArrayList<Earthquake> earthquakes) {
StringBuilder output = new StringBuilder();
Expand Down Expand Up @@ -52,7 +52,7 @@ public void onLoaded(ArrayList<Earthquake> earthquakes) {

@Override
public void onError(Exception e) {

Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}).load();
}
Expand Down
8 changes: 4 additions & 4 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ plugins {
}

group = 'com.github.sqayner'
version = '1.0.0'
version = '1.1.0'

android {
namespace 'tr.com.erenkaynar.library.earthquake'
compileSdk 33

defaultConfig {
minSdk 26
versionCode 1
versionName "1.0.0"
versionCode 2
versionName "1.1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
Expand Down Expand Up @@ -56,7 +56,7 @@ afterEvaluate {
from components.release
groupId = 'com.github.sqayner'
artifactId = 'earthquake-library-java'
version = '1.0.0'
version = '1.1.0'
}
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@

import tr.com.erenkaynar.library.earthquake.enums.Source;
import tr.com.erenkaynar.library.earthquake.models.Earthquake;
import tr.com.erenkaynar.library.earthquake.sources.afad.AfadCallable;
import tr.com.erenkaynar.library.earthquake.sources.kandilli.KandilliCallable;
import tr.com.erenkaynar.library.earthquake.sources.usgs.UsgsCallable;
import tr.com.erenkaynar.library.earthquake.sources.EarthquakeAPICallable;
import tr.com.erenkaynar.library.earthquake.utils.Callback;
import tr.com.erenkaynar.library.earthquake.utils.TaskRunner;

Expand Down Expand Up @@ -35,31 +33,17 @@ public EarthquakeAPI setSource(Source source) {
}

public void load() {
switch (source) {
case KANDILLI:
taskRunner.executeAsync(new KandilliCallable(), this);
break;
case AFAD:
taskRunner.executeAsync(new AfadCallable(), this);
break;
case USGS:
taskRunner.executeAsync(new UsgsCallable(), this);
break;
default:
break;
}
taskRunner.executeAsync(new EarthquakeAPICallable(source), this);
}

@Override
public void onLoaded(ArrayList<Earthquake> data) {
if (earthquakeAPIListener != null)
earthquakeAPIListener.onLoaded(data);
if (earthquakeAPIListener != null) earthquakeAPIListener.onLoaded(data);
}

@Override
public void onError(Exception e) {
if (earthquakeAPIListener != null)
earthquakeAPIListener.onError(e);
if (earthquakeAPIListener != null) earthquakeAPIListener.onError(e);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,36 @@
package tr.com.erenkaynar.library.earthquake.enums;

public enum Source {
KANDILLI,
AFAD,
USGS
KANDILLI(
"Kandilli Rasathanesi ve Deprem Araştırma Enstitüsü",
"http://www.koeri.boun.edu.tr/scripts/sondepremler.asp"
),
AFAD(
"Afet ve Acil Durum Yönetimi Başkanlığı",
"https://deprem.afad.gov.tr/last-earthquakes.html"
),
USGS(
"ABD Jeoloji Araştırmaları Kurumu (United States Geological Survey)",
"https://earthquake.usgs.gov/fdsnws/event/1/query?format=text&minlongitude=25&maxlongitude=46&minlatitude=35&maxlatitude=43&limit=100"
),
EMSC(
"Avrupa-Akdeniz Sismoloji Merkezi (European-Mediterranean Seismological Centre)",
"https://www.seismicportal.eu/fdsnws/event/1/query?contributor=EMSC&limit=100&minlat=35&maxlat=43&minlon=25&maxlon=46&format=text&mindepth=0&minmag=0"
);

private final String name;
private final String url;

Source(String name, String url) {
this.name = name;
this.url = url;
}

public String getName() {
return name;
}

public String getUrl() {
return url;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public String getHash() {
return "kandilli-" + MD5.encode((magnitude == null ? "" : magnitude) + "," + (coordinates == null ? "" : +coordinates.getLatitude()) + "," + (coordinates == null ? "" : +coordinates.getLongitude()) + "," + (depth == null ? "" : +depth) + "," + (datetime == null ? "" : +datetime.getEpochSecond()) + "," + (location == null ? "" : location));
if (source == Source.AFAD) return "afad-" + MD5.encode(id);
if (source == Source.USGS) return "usgs-" + MD5.encode(id);
if (source == Source.EMSC) return "emsc-" + MD5.encode(id);

return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,62 @@
package tr.com.erenkaynar.library.earthquake.sources;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;

import tr.com.erenkaynar.library.earthquake.enums.Source;
import tr.com.erenkaynar.library.earthquake.models.Earthquake;
import tr.com.erenkaynar.library.earthquake.sources.parsers.AfadParser;
import tr.com.erenkaynar.library.earthquake.sources.parsers.KandilliParser;
import tr.com.erenkaynar.library.earthquake.sources.parsers.Parser;
import tr.com.erenkaynar.library.earthquake.sources.parsers.TextParser;
import tr.com.erenkaynar.library.earthquake.utils.Callable;

public abstract class EarthquakeAPICallable extends Callable<ArrayList<Earthquake>> {
public class EarthquakeAPICallable extends Callable<ArrayList<Earthquake>> {

public abstract URL getUrl() throws Exception;
private Source source;
private Parser parser;

public EarthquakeAPICallable(Source source) {
this.source = source;
}

@Override
protected ArrayList<Earthquake> call() throws Exception {
URLConnection connection = new URL(source.getUrl()).openConnection();

final Charset charset;
char a = '\n';
switch (source) {
case KANDILLI:
charset = Charset.forName("windows-1254");
parser = new KandilliParser();
break;
case USGS:
case EMSC:
charset = Charset.defaultCharset();
parser = new TextParser();
break;
case AFAD:
charset = StandardCharsets.UTF_8;
parser = new AfadParser();
a = ' ';
break;
default:
return null;
}

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), charset));
String line;
StringBuilder data = new StringBuilder();
while ((line = reader.readLine()) != null)
data.append(line).append(a);
reader.close();

return parser.parse(data.toString());
}
}
Original file line number Diff line number Diff line change
@@ -1,45 +1,22 @@
package tr.com.erenkaynar.library.earthquake.sources.afad;
package tr.com.erenkaynar.library.earthquake.sources.parsers;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;

import tr.com.erenkaynar.library.earthquake.Constants;
import tr.com.erenkaynar.library.earthquake.enums.Source;
import tr.com.erenkaynar.library.earthquake.models.Earthquake;
import tr.com.erenkaynar.library.earthquake.models.LatLong;
import tr.com.erenkaynar.library.earthquake.sources.EarthquakeAPICallable;

public class AfadCallable extends EarthquakeAPICallable {
public class AfadParser extends Parser {
@Override
public URL getUrl() throws Exception {
return new URL(Constants.AFAD_URL);
}

@Override
protected ArrayList<Earthquake> call() throws Exception {
URLConnection connection = getUrl().openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
String line;
StringBuilder data = new StringBuilder();
while ((line = reader.readLine()) != null) data.append(line);
reader.close();

return parse(data.toString());
}

private ArrayList<Earthquake> parse(String data) {
public ArrayList<Earthquake> parse(String data) {
ArrayList<Earthquake> earthquakes = new ArrayList<>();

Document html = Jsoup.parse(data);
Expand Down Expand Up @@ -70,4 +47,4 @@ private ArrayList<Earthquake> parse(String data) {
}
return earthquakes;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,46 +1,30 @@
package tr.com.erenkaynar.library.earthquake.sources.kandilli;
package tr.com.erenkaynar.library.earthquake.sources.parsers;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;

import tr.com.erenkaynar.library.earthquake.Constants;
import tr.com.erenkaynar.library.earthquake.enums.Source;
import tr.com.erenkaynar.library.earthquake.models.Earthquake;
import tr.com.erenkaynar.library.earthquake.models.LatLong;
import tr.com.erenkaynar.library.earthquake.models.Revised;
import tr.com.erenkaynar.library.earthquake.sources.EarthquakeAPICallable;

public class KandilliCallable extends EarthquakeAPICallable {
@Override
public URL getUrl() throws Exception {
return new URL(Constants.KANDILLI_URL);
}

public class KandilliParser extends Parser {
@Override
protected ArrayList<Earthquake> call() throws Exception {
URLConnection connection = getUrl().openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("windows-1254")));
ArrayList<String> lines = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null)
lines.add(line);
reader.close();
public ArrayList<Earthquake> parse(String data) {
ArrayList<Earthquake> earthquakes = new ArrayList<>();

return parse(lines);
}
Document document = Jsoup.parse(data);
Elements pre = document.getElementsByTag("pre");
String[] lines = pre.html().split("\n");

private ArrayList<Earthquake> parse(ArrayList<String> lines) {
ArrayList<Earthquake> earthquakes = new ArrayList<>();
for (int i = arrayFirstIndexOf(lines, "<pre>") + 7; i < arrayFirstIndexOf(lines, "</pre>") - 1; i++) {
String earthquakeString = lines.get(i);
for (int i = 6; i < lines.length; i++) {
String earthquakeString = lines[i];

Earthquake earthquake = new Earthquake(Source.KANDILLI);

Expand Down Expand Up @@ -75,9 +59,9 @@ private Revised getRevised(String data) {
return new Revised(Integer.parseInt(revised.substring(7, 8)), date.toInstant());
}

private int arrayFirstIndexOf(List<String> array, String index) {
for (int i = 0; i < array.size(); i++) {
if (array.get(i).contains(index))
private int arrayFirstIndexOf(String[] array, String index) {
for (int i = 0; i < array.length; i++) {
if (array[i].contains(index))
return i;
}
return -1;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package tr.com.erenkaynar.library.earthquake.sources.parsers;

import java.util.ArrayList;

import tr.com.erenkaynar.library.earthquake.models.Earthquake;

public abstract class Parser {

public abstract ArrayList<Earthquake> parse(String data);
}
Loading

0 comments on commit 74183ef

Please sign in to comment.