Skip to content

Commit

Permalink
v1.0.8.RELEASE
Browse files Browse the repository at this point in the history
  • Loading branch information
chanmratekoko committed Jan 9, 2024
1 parent 855d6fa commit 0e20f21
Show file tree
Hide file tree
Showing 33 changed files with 994 additions and 379 deletions.
25 changes: 19 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Usage
<dependency>
<groupId>com.github.chanmratekoko</groupId>
<artifactId>myanmar-calendar</artifactId>
<version>1.0.7.RELEASE</version>
<version>1.0.8.RELEASE</version>
</dependency>
```

Expand Down Expand Up @@ -136,14 +136,23 @@ The following pattern letters are defined ('S', 's', 'B', 'y', 'k', 'M', 'p', 'f
```java
// နှစ်အလိုက် မြန်မာ လအမည်များ တွက်ချက်ခြင်း
// Output: Month Names (Relevant Myanmar month names for a given Myanmar year.)
MyanmarMonths myanmarMonth = MyanmarCalendarKernel.calculateRelatedMyanmarMonths(1381, 0);
MyanmarMonths myanmarMonth = MyanmarMonths.of(1381, 0);
```

### Create the header for the Myanmar Calendar.

#### Myanmar Calendar Style Header
```java
// Output : သာသနာနှစ် ၂၅၆၂ ခု မြန်မာနှစ် ၁၃၈၀ ခု ကဆုန် - နယုန်
String header = MyanmarCalendarKernel.getCalendarHeader(1380, 2, 14);
// Output: သာသနာနှစ် ၂၅၆၂ ခု မြန်မာနှစ် ၁၃၈၀ ခု ကဆုန် - နယုန်
// Output: Sasana Year 2561 - 2562 Ku Myanmar Year 1379 - 1380 Ku Late Kason - Kason
String header = MyanmarCalendarKernel.getCalendarHeader(1380, 2);
```

#### Western Calendar Style Header
```java
// Output: သာသနာနှစ် ၂၅၆၇ - ၂၅၆၈ ခု မြန်မာနှစ် ၁၃၈၅ - ၁၃၈၆ ခု တပေါင်း - တန်ခူး
// Output: Sasana Year 2567 - 2568 Ku Myanmar Year 1385 - 1386 Ku Tabaung - Tagu
String header = MyanmarCalendarKernel.getCalendarHeaderForWesternStyle(2024, 4);
```

### Thingyan (Myanmar New Year)
Expand Down Expand Up @@ -176,6 +185,10 @@ boolean isHoliday = HolidayCalculator.isHoliday(MyanmarDate.now());
List<String> holidayNameList = HolidayCalculator.getHoliday(MyanmarDate.now());
```

```java
// Check Anniversary
List<String> anniversary = HolidayCalculator.getAnniversary(MyanmarDate.of(2017,1 ,1));
```

### Astrological information Converter

Expand Down Expand Up @@ -230,11 +243,11 @@ astro.getMahayatkyan();
// Output: Shanyat or empty
astro.getShanyat();

// နဂါး လှည့်
// နဂါးခေါင်း လှည့်ရာအရပ်
// Output: west or north or east or south
astro.getNagahle();

// မဟာဘုတ်
// မဟာဘုတ်၊ ဇာတာခွင်
// Output: Binga or Atun or Yaza or Adipati or Marana or Thike or Puti
astro.getMahabote();

Expand Down
24 changes: 15 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.chanmratekoko</groupId>
<artifactId>myanmar-calendar</artifactId>
<version>1.0.7.RELEASE</version>
<version>1.0.8.RELEASE</version>
<name>Myanmar Calendar</name>
<description>Myanmar Calendar</description>
<description>
The Myanmar Calendar Library provides precise calculations for the traditional Burmese calendar system,
offering seamless date conversions and cultural observance integration. As an open-source library, it is
designed for easy integration into your applications, with added features like localization support and
user-friendly documentation.
</description>

<url>https://chanmratekoko.github.io/mmcalendar/</url>

Expand Down Expand Up @@ -53,13 +58,13 @@
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!-- Test Dependencies -->
<junit.version>4.13.1</junit.version>
<junit.version>4.13.2</junit.version>
<jacoco-maven-plugin.version>0.8.11</jacoco-maven-plugin.version>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<sonar.java.codeCoveragePlugin>jacoco</sonar.java.codeCoveragePlugin>
<sonar.test>${project.basedir}/src/test/</sonar.test>
<sonar.java.binaries>target/classes</sonar.java.binaries>
<sonar.exclusions>src/main/resources/**/*</sonar.exclusions>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>

<repositories>
Expand Down Expand Up @@ -87,7 +92,7 @@
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -125,7 +130,7 @@

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.6.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
Expand Down Expand Up @@ -242,6 +247,7 @@
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
Expand Down
12 changes: 2 additions & 10 deletions src/main/java/mmcalendar/HolidayCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ private static List<String> getAnniversaryDay(double jd, CalendarType calendarTy

List<String> holiday = new ArrayList<>();

WesternDate wd = WesternDateConverter.convert(jd, calendarType);
WesternDate wd = WesternDate.of(jd, calendarType);
double doe = dateOfEaster(wd.getYear());

if ((wd.getYear() <= 2017) && (wd.getMonth() == 1) && (wd.getDay() == 1)) {
Expand Down Expand Up @@ -332,7 +332,7 @@ public static List<String> getHoliday(MyanmarDate myanmarDate) {
*/
public static List<String> getHoliday(MyanmarDate myanmarDate, CalendarType calendarType) {

WesternDate westernDate = WesternDateConverter.convert(myanmarDate.getJulianDayNumber(), calendarType);
WesternDate westernDate = WesternDate.of(myanmarDate.getJulianDayNumber(), calendarType);
// Office Off
List<String> hde = englishHoliday(westernDate.getYear(), westernDate.getMonth(), westernDate.getDay());
List<String> hdm = myanmarHoliday(myanmarDate.getYearValue(), myanmarDate.getMonth(), myanmarDate.getDayOfMonth(),
Expand All @@ -358,14 +358,6 @@ public static boolean isHoliday(MyanmarDate myanmarDate) {
return !getHoliday(myanmarDate).isEmpty();
}

/**
* @param holidayList List Of Holiday
* @return boolean
*/
public static boolean isHoliday(List<String> holidayList) {
return !holidayList.isEmpty();
}

/**
* @param myanmarDate MyanmarDate Object
* @return List of holiday String
Expand Down
27 changes: 27 additions & 0 deletions src/main/java/mmcalendar/Language.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package mmcalendar;


/**
* Representing different languages and their corresponding punctuation marks.
*/
public enum Language {

ENGLISH(0, ", ", "."),
Expand All @@ -15,20 +19,43 @@ public enum Language {

private final String punctuation;

/**
* Constructor for the Language enum.
*
* @param languageIndex The index of the language.
* @param punctuationMark The punctuation mark used in the language for separation.
* @param punctuation The punctuation mark used in the language for ending a sentence.
*/
Language(int languageIndex, String punctuationMark, String punctuation) {
this.languageIndex = languageIndex;
this.punctuationMark = punctuationMark;
this.punctuation = punctuation;
}


/**
* Get the index of the language.
*
* @return The language index.
*/
public int getLanguageIndex() {
return languageIndex;
}

/**
* Get the punctuation mark used for separation in the language.
*
* @return The punctuation mark for separation.
*/
public String getPunctuationMark() {
return this.punctuationMark;
}

/**
* Get the punctuation mark used for ending a sentence in the language.
*
* @return The punctuation mark for ending a sentence.
*/
public String getPunctuation() {
return this.punctuation;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/mmcalendar/LanguageTranslator.java
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ private LanguageTranslator() {
*/
private static String translateSentence(String str, int fromLn, int toLn) {
for (String[] dic : CATALOG) {
str = str.replaceAll(dic[fromLn], dic[toLn]);
str = str.replace(dic[fromLn], dic[toLn]);
}
return str;
}
Expand Down
87 changes: 76 additions & 11 deletions src/main/java/mmcalendar/MyanmarCalendarKernel.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public static MyanmarMonths calculateRelatedMyanmarMonths(int myear, int mmonth)
mmonth = ei;
}

// populateMonthLists
return populateMonthLists(m1.getYearType(), si, ei, mmonth);
}

Expand Down Expand Up @@ -88,14 +87,80 @@ private static MyanmarMonths populateMonthLists(int yearType, int si, int ei, in
return new MyanmarMonths(monthList, monthNameList, currentIndex);
}

/**
* Western Calendar Title for month
*
* @param year Western Year
* @param month Western Month [1 = Jan, ... , 12 = Dec]
* Month value is 1-based. e.g., 1 for January.
* @return Calendar Title for month
*/
public static String getCalendarHeaderForWesternStyle(int year, int month) {
return getCalendarHeaderForWesternStyle(year, month, Config.getInstance().getLanguage());
}

public static String getCalendarHeader(int myear, int mmonth, int mmday) {
return getCalendarHeader(myear, mmonth, mmday, Config.getInstance().getLanguage());
/**
* Western Calendar Title for month
*
* @param year Western Year
* @param month Western Month [1 = Jan, ... , 12 = Dec]
* Month value is 1-based. e.g., 1 for January.
* @param language Language
* @return Calendar Title for month
*/
public static String getCalendarHeaderForWesternStyle(int year, int month, Language language) {
// time zone is irrelevant
int monthLength = WesternDateKernel.getLengthOfMonth(year, month, Config.getInstance().getCalendarType().getNumber());
MyanmarDate startDate = MyanmarDate.of(year, month, 1);
double je = startDate.getJulianDayNumber() + monthLength - 1;
MyanmarDate endDate = MyanmarDate.of(je);
return getCalendarHeader(startDate, endDate, language);
}

public static String getCalendarHeader(int myear, int mmonth, int mmday, Language language) {
/**
* Calendar Title for month
*
* @param myear Myanmar Year
* @param mmonth Myanmar month [Tagu=1, Kason=2, Nayon=3, 1st Waso=0, (2nd)
* Waso=4, Wagaung=5, Tawthalin=6, Thadingyut=7, Tazaungmon=8,
* Nadaw=9, Pyatho=10, Tabodwe=11, Tabaung=12, Late Tagu=13
* Late Kason=14 ]
* @return Calendar Title for month
*/
public static String getCalendarHeader(int myear, int mmonth) {
return getCalendarHeader(myear, mmonth, Config.getInstance().getLanguage());
}

/**
* Calendar Title for month
*
* @param myear Myanmar Year
* @param mmonth Myanmar month [Tagu=1, Kason=2, Nayon=3, 1st Waso=0, (2nd)
* Waso=4, Wagaung=5, Tawthalin=6, Thadingyut=7, Tazaungmon=8,
* Nadaw=9, Pyatho=10, Tabodwe=11, Tabaung=12, Late Tagu=13
* Late Kason=14 ]
* @param language Language
* @return Calendar Title for month
*/
public static String getCalendarHeader(int myear, int mmonth, Language language) {
return getCalendarHeader(myear, mmonth, 1, language);
}

/**
* Calendar Title for month
*
* @param myear Myanmar Year
* @param mmonth Myanmar month [Tagu=1, Kason=2, Nayon=3, 1st Waso=0, (2nd)
* Waso=4, Wagaung=5, Tawthalin=6, Thadingyut=7, Tazaungmon=8,
* Nadaw=9, Pyatho=10, Tabodwe=11, Tabaung=12, Late Tagu=13
* Late Kason=14 ]
* @param mday day of month [from 1 to 29 or 30]
* @param language Language
* @return Calendar Title for month
*/
public static String getCalendarHeader(int myear, int mmonth, int mday, Language language) {
// Find julian day number of start of the month
double julianDate = MyanmarDateKernel.myanmarDateToJulian(myear, mmonth, mmday);
double julianDate = MyanmarDateKernel.myanmarDateToJulian(myear, mmonth, mday);

MyanmarDate myanmarDate = MyanmarDate.of(julianDate);

Expand Down Expand Up @@ -124,7 +189,8 @@ private static String getCalendarHeader(MyanmarDate startDateOfMonth, MyanmarDat

if (endDateOfMonth.getYearValue() >= 2) {
//if Myanmar year after 2 ME
str.append(getHeaderForMyanmarYear(startDateOfMonth, endDateOfMonth, language))
str.append(" ")
.append(getHeaderForMyanmarYear(startDateOfMonth, endDateOfMonth, language))
.append(" ");

str.append(getHeaderForMyanmarMonth(startDateOfMonth, endDateOfMonth, language));
Expand All @@ -133,7 +199,7 @@ private static String getCalendarHeader(MyanmarDate startDateOfMonth, MyanmarDat
return str.toString();
}

private static String getHeaderForBuddhistEra(MyanmarDate startDate, MyanmarDate endDate, Language language) {
public static String getHeaderForBuddhistEra(MyanmarDate startDate, MyanmarDate endDate, Language language) {

StringBuilder buddhistEraStringBuilder = new StringBuilder();

Expand All @@ -147,13 +213,12 @@ private static String getHeaderForBuddhistEra(MyanmarDate startDate, MyanmarDate
}

buddhistEraStringBuilder.append(" ")
.append(LanguageTranslator.translate("Ku", language))
.append(" ");
.append(LanguageTranslator.translate("Ku", language));

return buddhistEraStringBuilder.toString();
}

private static String getHeaderForMyanmarYear(MyanmarDate startDateOfMonth, MyanmarDate endDateOfMonth, Language language) {
public static String getHeaderForMyanmarYear(MyanmarDate startDateOfMonth, MyanmarDate endDateOfMonth, Language language) {

StringBuilder myanmarYearStringBuilder = new StringBuilder();

Expand All @@ -177,7 +242,7 @@ private static String getHeaderForMyanmarYear(MyanmarDate startDateOfMonth, Myan
return myanmarYearStringBuilder.toString();
}

private static String getHeaderForMyanmarMonth(MyanmarDate startDateOfMonth, MyanmarDate endDateOfMonth, Language language) {
public static String getHeaderForMyanmarMonth(MyanmarDate startDateOfMonth, MyanmarDate endDateOfMonth, Language language) {

StringBuilder myanmarMonthStringBuilder = new StringBuilder();

Expand Down
Loading

0 comments on commit 0e20f21

Please sign in to comment.