Skip to content

Commit

Permalink
Merge pull request #330 from mivek/bugfix/RmkParsing
Browse files Browse the repository at this point in the history
Bugfix/rmk parsing
  • Loading branch information
mivek authored Apr 19, 2022
2 parents 53ffa5b + 788b56f commit 05f28b1
Show file tree
Hide file tree
Showing 10 changed files with 298 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
CloudQuantity.BKN=parçalı çok bulutlu
CloudQuantity.FEW=az bulutlu
CloudQuantity.NSC=önemli bulut yok.
CloudQuantity.OVC=tamamen kapalı
CloudQuantity.SCT=parçalı bulutlu
CloudQuantity.SKC=gökyüzü açık

CloudType.AC=Altokümülüs
CloudType.AS=Altostratüs
CloudType.CB=Kümülonimbus
CloudType.CC=Sirrokümülüs
CloudType.CI=Sirrus
CloudType.CS=Sirrostratüs
CloudType.CU=Kümülüs
CloudType.NS=Nimbostratüs
CloudType.SC=Stratokümülüs
CloudType.ST=Stratüs
CloudType.TCU=Yükselen kümülüs

DepositBrakingCapacity.NOT_REPORTED=rapor edilmedi
DepositBrakingCapacity.POOR=kötü
DepositBrakingCapacity.MEDIUM_POOR=kötü/orta
DepositBrakingCapacity.MEDIUM=orta
DepositBrakingCapacity.MEDIUM_GOOD=orta/iyi
DepositBrakingCapacity.GOOD=iyi
DepositBrakingCapacity.UNRELIABLE=güvenilmez

DepositCoverage.NOT_REPORTED=rapor edilmedi
DepositCoverage.LESS_10=%10'dan daha az
DepositCoverage.FROM_11_TO_25=%11 ila %25 arası
DepositCoverage.FROM_26_TO_50=%26 ila %50 arası
DepositCoverage.FROM_51_TO_100=%51 ila %100 arası
DepositThickness.NOT_REPORTED=rapor edilmedi
DepositThickness.LESS_1_MM=1 mm'den daha az
DepositThickness.THICKNESS_10=10 cm
DepositThickness.THICKNESS_15=15 cm
DepositThickness.THICKNESS_20=20 cm
DepositThickness.THICKNESS_25=25 cm
DepositThickness.THICKNESS_30=30 cm
DepositThickness.THICKNESS_35=35 cm
DepositThickness.THICKNESS_40=40 cm veya daha fazla
DepositThickness.CLOSED=kullanılmaz

DepositType.NOT_REPORTED=rapor edilmedi
DepositType.CLEAR_DRY=açık ve kuru
DepositType.DAMP=nemli
DepositType.WET_WATER_PATCHES=ıslak veta küçük su parçaları
DepositType.RIME_FROST_COVERED=kırağı veya donla kaplı
DepositType.DRY_SNOW=kuru kar
DepositType.WET_SNOW=ıslak kar
DepositType.ICE=buz
DepositType.COMPACTED_SNOW=yoğun veya sıkışmış kar
DepositType.FROZEN_RIDGES=donan tekerlek izleri veya yığılmış kar
DepositType.SLUSH=sulu kar

Descriptive.BC=parçalı
Descriptive.BL=savrulan
Descriptive.DR=sürüklenen
Descriptive.FZ=aşırı soğumuş
Descriptive.MI=sığ
Descriptive.PR=kısmi
Descriptive.SH=sağanaklar
Descriptive.TS=oraj

Error.prefix=Hata oluştu. Hata kodu\: {0}
ErrorCode.AirportNotFound=Bu mesaj için havaalanı bulunamadı.
ErrorCode.InvalidMessage=Girilen mesaj geçersiz.

Indicator.M=daha az
Indicator.P=daha fazla

Intensity.-=Hafif
Intensity.+=Kuvvetli
Intensity.VC=Mutedil

Phenomenon.BR=pus
Phenomenon.DS=toz fırtınası
Phenomenon.DU=geniş alana yayılmış toz
Phenomenon.DZ=çisenti
Phenomenon.FC=hortum bulutu tornado veya su hortumu
Phenomenon.FG=sis
Phenomenon.FU=duman
Phenomenon.GR=dolu
Phenomenon.GS=küçük dolu ve/veya kar paletleri
Phenomenon.HZ=toz pusu
Phenomenon.IC=buz kristalleri
Phenomenon.PL=buz paletleri
Phenomenon.PO=toz veya kum türbülonu
Phenomenon.PY=çisenti
Phenomenon.RA=yağmur
Phenomenon.SA=kum
Phenomenon.SG=kar grenleri
Phenomenon.SN=fırtına
Phenomenon.SQ=fırtına
Phenomenon.SS=kum fırtınası
Phenomenon.UP=tanımlanamayan yağış
Phenomenon.VA=volkanik kül
Phenomenon.TS=oraj

Remark.AO1=yağış ayırıcısı bulunmayan istasyonla otomatize edilmiştir
Remark.AO2=yağış ayırıcısı bulunan istasyonla otomatize edilmiştir
Remark.ALQDS=tüm kadranlar
Remark.Barometer.0=Artan, sonrasında azalan
Remark.Barometer.1=Artan, sonrasında sabit, veya artan sonrasında daha yavaş artan
Remark.Barometer.2=sabit veya kararsız artış
Remark.Barometer.3=Azalan veya sabit, sonrasında artan; veya artan sonrasında daha hızlı artan
Remark.Barometer.4=Sabit
Remark.Barometer.5=Azalan, sonrasında artan
Remark.Barometer.6=Azalan sonrasında sabit; veya azalan sonrasında daha yavaş azalan
Remark.Barometer.7=Sabit veya kararsız azalan
Remark.Barometer.8=Sabit veya artan, sonrasında azalan; veya azalan sonrasında daha hızlı azalan
Remark.BASED=temel
Remark.Ceiling.Height=tavan {0} ve {1} feet arasında değişken
Remark.Ceiling.Second.Location=tavan {1} konumunda bulunan ikinci bir sensör tarafından ölçülen {0} feet
Remark.DSNT=uzak
Remark.FCST=tahmin
Remark.FUNNELCLOUD=hortum bulutu
Remark.Hail=en büyük dolu tanesi {0} inç çapında
Remark.Hail.LesserThan=en büyük dolu tanesi {0} inç çapından küçük
Remark.Hourly.Maximum.Temperature=6 saatlik maksimum sıcaklık {0}°C
Remark.Hourly.Maximum.Minimum.Temperature=24 saatlik maksimum sıcaklık {0}°C ve 24 saatlik minimum sıcaklık {1}°C
Remark.Hourly.Minimum.Temperature=6 saatlik minimum sıcaklık {0}°C
Remark.Hourly.Temperature=saatlik sıcaklık {0}°C
Remark.Hourly.Temperature.Dew.Point=saatlik sıcaklık {0}°C ve işba sıcaklık {1}°C
Remark.Ice.Accretion.Amount=Son {1} saatte bir inçlik buz birikiminin {0}/100''ü
Remark.HVY=kuvvetli
Remark.LGT=hafif
Remark.LTG=yıldırım
Remark.MOD=mutedil
Remark.Obscuration={2}''den oluşan {1} feette {0} katmanı
Remark.ON=sonra
Remark.NXT=sonraki
Remark.PeakWind={2}\:{3}''da {0} dereceden {1} knot maksimum rüzgar
Remark.Precipitation.Amount.Hourly={0}/100 inç yağış son bir saatte düştü
Remark.Precipitation.Amount.3.6=son {0} saat içinde düşen yağış {1} inç
Remark.Precipitation.Amount.24=son 24 saat içinde düşen yağış {0} inç
Remark.Precipitation.Beg={0} {1} başlangıç saati {2}\:{3}
Remark.Precipitation.Beg.End={0} {1} başlangıç saati {2}\:{3} bitiş saati {4}\:{5}
Remark.Precipitation.End={0} {1} bitiş saati {2}\:{3}
Remark.Pressure.Tendency=son 3 saatte {0} hektopaskal
Remark.PRESFR=hızla düşen basınç
Remark.PRESRR=hızla artan basınç
Remark.Second.Location.Visibility={1} konumunda bulunan ikinci sensörde ölçülen görüş {0} kara mili
Remark.Sea.Level.Pressure=deniz seviyesi basınç {0} HPa
Remark.Sector.Visibility={0} yönünde görüş {1} kara mili
Remark.SLPNO=deniz seviyesi basınç mevcut değil
Remark.Snow.Depth=kar kalınlığı {0} inç
Remark.Snow.Increasing.Rapidly=zeminde toplam {1} inç kar kalınlığı ile birlikte son bir saatte {0} inçlik kar derinliği artışı
Remark.Snow.Pellets={0} kar tanecikleri
Remark.Sunshine.Duration={0} dakika güneş ışığı
Remark.Surface.Visibility=yüzey görüşü {0} kara mili
Remark.Thunderstorm.Location={0} istasyonunda fırtına
Remark.Thunderstorm.Location.Moving={0} istasyonunda {1} yönünde hareket eden fırtına
Remark.Tornadic.Activity.Beginning={4} istasyonunda {3} kara mili uzaklıkta olan {0} saat {1}\:{2}''de başlıyor
Remark.Tornadic.Activity.BegEnd={6} istasyonunda {5} kara mili uzaklıkta olan {0} saat {1}\:{2}''de başlıyor {3}\:{4}''de bitiyor
Remark.Tornadic.Activity.Ending={4} istasyonunda {3} kara mili uzaklıkta olan {0} saat {1}\:{2}''de bitiyor
Remark.TORNADO=hortum
Remark.Tower.Visibility=kontrol kulesi görüş mesafesi {0} kara mili
Remark.Variable.Prevailing.Visibility={0} ve {1} kara mili arasında değişken geçerli görünürlük
Remark.Variable.Sky.Condition=bulut katmanı {0} ve {1} arasında değişken
Remark.Variable.Sky.Condition.Height={0} feette bulut katmanı {1} ve {2} arasında değişken
Remark.VIRGA=virga
Remark.Virga.Direction={0} istasyonunda virga
Remark.WATERSPOUT=su hortumu
Remark.Water.Equivalent.Snow.Ground={0} inç kar su eşdeğeri
Remark.WindShift=rüzgar yön kırılması saat {0}\:{1}
Remark.WindShift.FROPA=saat {0}\:{1}''te önden geçiş eşliğinde rüzgar değişimi


MetarFacade.InvalidIcao=Icao kodu geçersiz.

Converter.D=azalan
Converter.E=Doğu
Converter.ENE=Doğu/KuzeyDoğu
Converter.ESE=Doğu/GündeyDoğu
Converter.N=Kuzey
Converter.NE=KuzeyDoğu
Converter.NNE=Kuzey/KuzeyDoğu
Converter.NNW=Kuzey/KuzeyBatı
Converter.NSC=önemli değişiklik yok
Converter.NW=KuzeyBatı
Converter.S=Güney
Converter.SE=GüneyDoğu
Converter.SSE=Güney/GüneyDoğu
Converter.SSW=Güney/GüneyBatı
Converter.SW=GüneyBatı
Converter.U=artan
Converter.VRB=Değişken
Converter.W=Batı
Converter.WNW=Batı/KuzeyBatı
Converter.WSW=Batı/GüneyBatı

WeatherChangeType.FM=İtibaren
WeatherChangeType.BECMG=Oluşacak
WeatherChangeType.INTER=Aralıklı
WeatherChangeType.TEMPO=Geçici
WeatherChangeType.PROB=Olasılık

TimeIndicator.AT=şurada
TimeIndicator.FM=İtibaren
TimeIndicator.TL=-e kadar
ToString.airport=havaalanı
ToString.altimeter=altimetre (hPa)
ToString.amendment=düzeltme
ToString.auto=otomatik
ToString.cavok=cavok
ToString.clouds=bulutlar
ToString.day.month=ayın günü
ToString.day.hour=günün saati
ToString.deposit.braking=frenleme kapasitesi
ToString.deposit.coverage=kapsam
ToString.deposit.thickness=kalınlık
ToString.deposit.type=kirlilik tipi
ToString.descriptive=açıklama
ToString.dew.point=işba sıcaklık
ToString.end.day.month=ayın bitiş günü
ToString.end.hour.day=günün bitiş saati
ToString.height.feet=yükseklik (ft)
ToString.height.meter=yükseklik (m)
ToString.intensity=yoğunluk
ToString.indicator=gösterge
ToString.message=orijinal mesaj
ToString.name=isim
ToString.nosig=önemli değişiklik yok
ToString.phenomenons=olaylar
ToString.probability=olasılık
ToString.quantity=miktar
ToString.remark=diğer hususlar
ToString.report.time=rapor zamanı
ToString.runway.info=pistlerin bilgisi
ToString.start.day.month=ayın başlangıç günü
ToString.start.hour.day=günün başlangıç saati
ToString.start.minute=başlangıç dakikası
ToString.temperature=sıcaklık (°C)
ToString.temperature.max=maksimum sıcaklık (℃)
ToString.temperature.min=minimum sıcaklık (℃)
ToString.trend=trend
ToString.trends=trendler
ToString.type=tip
ToString.visibility.main=asıl görüş
ToString.visibility.min=minimum görüş
ToString.visibility.min.direction=minimum görüş yönü
ToString.visibility.max=maksimum görüş
ToString.vertical.visibility=dikey görüş (ft)
ToString.weather.conditions=hava koşulları
ToString.wind.direction=yön
ToString.wind.direction.degrees=yön (derece)
ToString.wind.gusts=hamleler
ToString.wind.min.variation=minimum rüzgar değişim
ToString.wind.max.variation=maksimum rüzgar değişim
ToString.wind.speed=hız
ToString.wind.unit=birim
6 changes: 3 additions & 3 deletions metarParser-entities/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
<description>Module containing the model of the application.</description>

<properties>
<jacoco.coverage.instruction.minimum>0.73</jacoco.coverage.instruction.minimum>
<jacoco.coverage.branch.minimum>0.70</jacoco.coverage.branch.minimum>
<jacoco.coverage.complexity.minimum>0.56</jacoco.coverage.complexity.minimum>
<jacoco.coverage.instruction.minimum>0.80</jacoco.coverage.instruction.minimum>
<jacoco.coverage.branch.minimum>0.81</jacoco.coverage.branch.minimum>
<jacoco.coverage.complexity.minimum>0.60</jacoco.coverage.complexity.minimum>
</properties>
<dependencies>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public Integer getVerticalVisibility() {
/**
* @param verticalVisibility the verticalVisibility to set
*/
public void setVerticalVisibility(final Integer verticalVisibility) {
public void setVerticalVisibility(final int verticalVisibility) {
this.verticalVisibility = verticalVisibility;
}

Expand Down Expand Up @@ -174,8 +174,10 @@ public String toString() {
if (visibility != null) {
builder.appendToString(visibility.toString());
}
builder.append(Messages.getInstance().getString("ToString.vertical.visibility"), verticalVisibility).
append(Messages.getInstance().getString("ToString.clouds"), clouds.toString()).
if (verticalVisibility != null) {
builder.append(Messages.getInstance().getString("ToString.vertical.visibility"), verticalVisibility);
}
builder.append(Messages.getInstance().getString("ToString.clouds"), clouds.toString()).
append(Messages.getInstance().getString("ToString.weather.conditions"), weatherConditions.toString());
if (windShear != null) {
builder.appendToString(windShear.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
import io.github.mivek.enums.CloudQuantity;
import io.github.mivek.enums.CloudType;
import io.github.mivek.enums.Descriptive;
import io.github.mivek.internationalization.Messages;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
import static org.junit.jupiter.api.Assertions.*;
Expand Down Expand Up @@ -68,4 +70,17 @@ void testAddWeatherCondition() {
assertTrue(container.addWeatherCondition(wc));
assertThat(container.getWeatherConditions(), hasSize(1));
}

@Test
void testToStringWithVerticalVisibility() {
T container = getEntity();
Wind wind = new Wind();
wind.setDirectionDegrees(270);
wind.setSpeed(15);
container.setWind(wind);
container.setVerticalVisibility(2000);

String description = container.toString();
assertThat(description, containsString(Messages.getInstance().getString("ToString.vertical.visibility")));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ void testEqual() {
Airport other2 = new Airport();
other2.setIcao("498");

assertEquals(sut, sut);
assertEquals(sut, other1);
assertNotEquals(sut, other2);
assertNotEquals(null, sut);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ void updateTrend(final int index, final String[] parts, final TafTrend trend) {
for (int i = index; i < parts.length; i++) {
if (RMK.equals(parts[i])) {
parseRMK(trend, parts, i);
break;
} else if (Regex.match(VALIDITY_REGEX, parts[i])) {
trend.setValidity(parseValidity(parts[i]));
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,11 @@ public TAF parse(final String code) throws ParseException {
taf.setValidity(parseValidity(line1parts[i]));

// Handle rest of second line.
for (int j = i; j < line1parts.length; j++) {
for (int j = i + 1; j < line1parts.length; j++) {
String part = line1parts[j];
if (RMK.equals(part)) {
parseRMK(taf, line1parts, j);
break;
} else if (part.startsWith(TX)) {
taf.setMaxTemperature(parseTemperature(part));
} else if (part.startsWith(TN)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -747,4 +747,21 @@ void testParseWithInter() throws ParseException {
assertThat(result.getInters().get(0).getClouds().get(1).getQuantity(), is(CloudQuantity.BKN));
assertThat(result.getInters().get(0).getClouds().get(1).getHeight(), is(1000));
}

@Test
void testParseWithRmkFcst() throws ParseException {
String message = """
TAF CYTL 121940Z 1220/1308
TEMPO 1303/1308 2SM -SN RMK FCST BASED ON AUTO OBS. FCST BASED ON OBS BY OTHER SRCS. WIND SENSOR INOP. NXT FCST BY 130200Z
""";

TAF taf = parser.parse(message);

assertNotNull(taf);
assertThat(taf.getTempos(), hasSize(1));
assertThat(taf.getTempos().get(0).getWeatherConditions(), hasSize(1));
assertEquals(Intensity.LIGHT, taf.getTempos().get(0).getWeatherConditions().get(0).getIntensity());
assertThat(taf.getTempos().get(0).getWeatherConditions().get(0).getPhenomenons(), hasSize(1));
assertEquals(Phenomenon.SNOW, taf.getTempos().get(0).getWeatherConditions().get(0).getPhenomenons().get(0));
}
}
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
<checkstyle.version>10.1</checkstyle.version>
<commons-lang3.version>3.12.0</commons-lang3.version>
<hamcrest.version>2.2</hamcrest.version>
<jacoco-maven-plugin.version>0.8.7</jacoco-maven-plugin.version>
<jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
<junit.version>5.8.2</junit.version>
<maven-checkstyle-plugin.version>3.1.2</maven-checkstyle-plugin.version>
<maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
Expand All @@ -63,7 +63,7 @@
<maven-project-info-reports-plugin.version>3.2.2</maven-project-info-reports-plugin.version>
<maven-site-plugin.version>3.11.0</maven-site-plugin.version>
<maven.source.plugin.version>3.2.1</maven.source.plugin.version>
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<maven-surefire-plugin.version>3.0.0-M6</maven-surefire-plugin.version>
<nexus-staging-maven-plugin.version>1.6.12</nexus-staging-maven-plugin.version>
<opencsv.version>5.6</opencsv.version>
<pitest-junit5-plugin.version>0.15</pitest-junit5-plugin.version>
Expand Down

0 comments on commit 05f28b1

Please sign in to comment.