From f12d724f505fed4dd96e4fd360d02e7b9afe5555 Mon Sep 17 00:00:00 2001 From: Elango Cheran Date: Wed, 1 Jan 2025 21:11:19 -0800 Subject: [PATCH] ICU-22789 Create top level classes for builders of concrete Segmenter types --- .../text/segmenter/LocalizedSegmenter.java | 28 ------------------- .../segmenter/LocalizedSegmenterBuilder.java | 27 ++++++++++++++++++ .../text/segmenter/RuleBasedSegmenter.java | 20 ------------- .../segmenter/RuleBasedSegmenterBuilder.java | 17 +++++++++++ .../segmenter/LocalizedSegmenterTest.java | 3 +- .../segmenter/RuleBasedSegmenterTest.java | 3 +- .../dev/test/text/segmenter/SegmentsTest.java | 21 +++++++------- 7 files changed, 59 insertions(+), 60 deletions(-) create mode 100644 icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenterBuilder.java create mode 100644 icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenterBuilder.java diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenter.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenter.java index d8a8d7c2000..64e24514a79 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenter.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenter.java @@ -17,10 +17,6 @@ public class LocalizedSegmenter implements Segmenter { return new LocalizedSegments(s, this); } - public static Builder builder() { - return new Builder(); - } - LocalizedSegmenter(ULocale locale, SegmentationType segmentationType) { this.locale = locale; this.segmentationType = segmentationType; @@ -59,30 +55,6 @@ public class LocalizedSegmenter implements Segmenter { SENTENCE, } - public static class Builder { - - private ULocale locale = ULocale.ROOT; - - private SegmentationType segmentationType = SegmentationType.GRAPHEME_CLUSTER; - - Builder() { } - - public Builder setLocale(ULocale locale) { - this.locale = locale; - return this; - } - - public Builder setSegmentationType(SegmentationType segmentationType) { - this.segmentationType = segmentationType; - return this; - } - - public LocalizedSegmenter build() { - return new LocalizedSegmenter(this.locale, this.segmentationType); - } - - } - public class LocalizedSegments implements Segments { private CharSequence source; diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenterBuilder.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenterBuilder.java new file mode 100644 index 00000000000..ffd3138a19d --- /dev/null +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/LocalizedSegmenterBuilder.java @@ -0,0 +1,27 @@ +package com.ibm.icu.text.segmenter; + +import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType; +import com.ibm.icu.util.ULocale; + +public class LocalizedSegmenterBuilder { + + private ULocale locale = ULocale.ROOT; + + private SegmentationType segmentationType = SegmentationType.GRAPHEME_CLUSTER; + + public LocalizedSegmenterBuilder() { } + + public LocalizedSegmenterBuilder setLocale(ULocale locale) { + this.locale = locale; + return this; + } + + public LocalizedSegmenterBuilder setSegmentationType(SegmentationType segmentationType) { + this.segmentationType = segmentationType; + return this; + } + + public LocalizedSegmenter build() { + return new LocalizedSegmenter(this.locale, this.segmentationType); + } +} diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenter.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenter.java index 87a5cf1e79e..d20d4518227 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenter.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenter.java @@ -15,10 +15,6 @@ public class RuleBasedSegmenter implements Segmenter { return new RuleBasedSegments(s, this); } - public static Builder builder() { - return new Builder(); - } - RuleBasedSegmenter(String rules) { this.rules = rules; } @@ -33,22 +29,6 @@ public class RuleBasedSegmenter implements Segmenter { return new RuleBasedBreakIterator(this.rules); } - public static class Builder { - - String rules; - - Builder() { } - - public Builder setRules(String rules) { - this.rules = rules; - return this; - } - - public RuleBasedSegmenter build() { - return new RuleBasedSegmenter(this.rules); - } - } - public static class RuleBasedSegments implements Segments { private CharSequence source; diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenterBuilder.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenterBuilder.java new file mode 100644 index 00000000000..774f212ddca --- /dev/null +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/segmenter/RuleBasedSegmenterBuilder.java @@ -0,0 +1,17 @@ +package com.ibm.icu.text.segmenter; + +public class RuleBasedSegmenterBuilder { + + String rules; + + public RuleBasedSegmenterBuilder() { } + + public RuleBasedSegmenterBuilder setRules(String rules) { + this.rules = rules; + return this; + } + + public RuleBasedSegmenter build() { + return new RuleBasedSegmenter(this.rules); + } +} diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/LocalizedSegmenterTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/LocalizedSegmenterTest.java index 6e4c10f25db..6ba380eabdf 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/LocalizedSegmenterTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/LocalizedSegmenterTest.java @@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.ibm.icu.dev.test.CoreTestFmwk; import com.ibm.icu.text.segmenter.LocalizedSegmenter; import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType; +import com.ibm.icu.text.segmenter.LocalizedSegmenterBuilder; import com.ibm.icu.text.segmenter.Segmenter; import com.ibm.icu.text.segmenter.Segments; import com.ibm.icu.util.ULocale; @@ -34,7 +35,7 @@ public class LocalizedSegmenterTest extends CoreTestFmwk { List expWords = (List) caseDatum[1]; Segmenter wordSeg = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(locale) .setSegmentationType(SegmentationType.WORD) .build(); diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/RuleBasedSegmenterTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/RuleBasedSegmenterTest.java index 5e46fe60803..6d08e131470 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/RuleBasedSegmenterTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/RuleBasedSegmenterTest.java @@ -5,6 +5,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.ibm.icu.dev.test.CoreTestFmwk; import com.ibm.icu.text.segmenter.RuleBasedSegmenter; +import com.ibm.icu.text.segmenter.RuleBasedSegmenterBuilder; import com.ibm.icu.text.segmenter.Segmenter; import com.ibm.icu.text.segmenter.Segments; import java.util.Arrays; @@ -34,7 +35,7 @@ public class RuleBasedSegmenterTest extends CoreTestFmwk { // the following rule substring was taken as a subset from BreakIteratorRules_en_US_TEST.java: String rules = subrule; - Segmenter seg = RuleBasedSegmenter.builder() + Segmenter seg = new RuleBasedSegmenterBuilder() .setRules(rules) .build(); Segments segments = seg.segment(source); diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/SegmentsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/SegmentsTest.java index 80a25de4d65..31eca89fc2c 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/SegmentsTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/text/segmenter/SegmentsTest.java @@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.ibm.icu.dev.test.CoreTestFmwk; import com.ibm.icu.text.segmenter.LocalizedSegmenter; import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType; +import com.ibm.icu.text.segmenter.LocalizedSegmenterBuilder; import com.ibm.icu.text.segmenter.Segmenter; import com.ibm.icu.text.segmenter.Segments; import com.ibm.icu.text.segmenter.Segments.Segment; @@ -23,7 +24,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRanges() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build(); @@ -45,7 +46,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testMultipleSegmentObjectsFromSegmenter() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build(); @@ -92,7 +93,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRangesAfterIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(LocalizedSegmenter.SegmentationType.WORD) .build(); @@ -115,7 +116,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRangesBeforeIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(LocalizedSegmenter.SegmentationType.WORD) .build(); @@ -138,7 +139,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRangeToSequenceFn() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(LocalizedSegmenter.SegmentationType.WORD) .build(); @@ -161,7 +162,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRangeAfterIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(LocalizedSegmenter.SegmentationType.WORD) .build(); @@ -201,7 +202,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testRangeBeforeIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build(); @@ -245,7 +246,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testBoundaries() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build(); @@ -265,7 +266,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testBoundariesAfterIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build(); @@ -297,7 +298,7 @@ public class SegmentsTest extends CoreTestFmwk { @Test public void testBoundariesBeforeIndex() { Segmenter enWordSegmenter = - LocalizedSegmenter.builder() + new LocalizedSegmenterBuilder() .setLocale(ULocale.ENGLISH) .setSegmentationType(SegmentationType.WORD) .build();