Skip to content

Commit bc440bd

Browse files
committed
implement FunctionalMassBuilder for some builders
1 parent bc475a6 commit bc440bd

File tree

6 files changed

+47
-131
lines changed

6 files changed

+47
-131
lines changed

src/main/java/me/hsgamer/bettergui/builder/ArgumentProcessorBuilder.java

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@
33
import me.hsgamer.bettergui.api.argument.ArgumentProcessor;
44
import me.hsgamer.bettergui.api.menu.Menu;
55
import me.hsgamer.bettergui.argument.type.*;
6-
import me.hsgamer.hscore.builder.MassBuilder;
6+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
77
import me.hsgamer.hscore.collections.map.CaseInsensitiveStringMap;
88

99
import java.util.Map;
1010
import java.util.Objects;
11-
import java.util.Optional;
12-
import java.util.function.Function;
1311

1412
/**
1513
* The argument processor builder
1614
*/
17-
public final class ArgumentProcessorBuilder extends MassBuilder<ArgumentProcessorBuilder.Input, ArgumentProcessor> {
15+
public final class ArgumentProcessorBuilder extends FunctionalMassBuilder<ArgumentProcessorBuilder.Input, ArgumentProcessor> {
1816
/**
1917
* The instance of the argument processor builder
2018
*/
@@ -29,23 +27,9 @@ private ArgumentProcessorBuilder() {
2927
register(MaterialArgumentProcessor::new, "material", "item");
3028
}
3129

32-
/**
33-
* Register a new processor creator
34-
*
35-
* @param creator the creator
36-
* @param type the type
37-
*/
38-
public void register(Function<ArgumentProcessorBuilder.Input, ArgumentProcessor> creator, String... type) {
39-
register(input -> {
40-
Map<String, Object> keys = new CaseInsensitiveStringMap<>(input.options);
41-
String processor = Objects.toString(keys.get("type"), "store");
42-
for (String s : type) {
43-
if (processor.equalsIgnoreCase(s)) {
44-
return Optional.of(creator.apply(input));
45-
}
46-
}
47-
return Optional.empty();
48-
});
30+
@Override
31+
protected String getType(Input input) {
32+
return Objects.toString(new CaseInsensitiveStringMap<>(input.options).get("type"), "store");
4933
}
5034

5135
/**

src/main/java/me/hsgamer/bettergui/builder/ButtonBuilder.java

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,19 @@
55
import me.hsgamer.bettergui.api.menu.Menu;
66
import me.hsgamer.bettergui.button.*;
77
import me.hsgamer.bettergui.config.MainConfig;
8-
import me.hsgamer.hscore.builder.MassBuilder;
8+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
99
import me.hsgamer.hscore.collections.map.CaseInsensitiveStringMap;
1010

1111
import java.util.List;
1212
import java.util.Map;
1313
import java.util.Objects;
14-
import java.util.Optional;
15-
import java.util.function.Function;
1614
import java.util.stream.Collectors;
1715
import java.util.stream.Stream;
1816

1917
/**
2018
* The button builder
2119
*/
22-
public final class ButtonBuilder extends MassBuilder<ButtonBuilder.Input, WrappedButton> {
20+
public final class ButtonBuilder extends FunctionalMassBuilder<ButtonBuilder.Input, WrappedButton> {
2321
/**
2422
* The instance of the button builder
2523
*/
@@ -42,23 +40,9 @@ private ButtonBuilder() {
4240
);
4341
}
4442

45-
/**
46-
* Register a new button creator
47-
*
48-
* @param creator the creator
49-
* @param type the type
50-
*/
51-
public void register(Function<Input, WrappedButton> creator, String... type) {
52-
register(input -> {
53-
Map<String, Object> keys = new CaseInsensitiveStringMap<>(input.options);
54-
String button = Objects.toString(keys.get("type"), "simple");
55-
for (String s : type) {
56-
if (button.equalsIgnoreCase(s)) {
57-
return Optional.of(creator.apply(input));
58-
}
59-
}
60-
return Optional.empty();
61-
});
43+
@Override
44+
protected String getType(Input input) {
45+
return Objects.toString(new CaseInsensitiveStringMap<>(input.options).get("type"), "simple");
6246
}
6347

6448
/**
Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package me.hsgamer.bettergui.builder;
22

3-
import me.hsgamer.hscore.builder.MassBuilder;
3+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
44
import me.hsgamer.hscore.bukkit.config.BukkitConfig;
55
import me.hsgamer.hscore.config.Config;
66

77
import java.io.File;
8-
import java.util.Optional;
9-
import java.util.function.Function;
108

119
/**
1210
* The config builder
1311
*/
14-
public class ConfigBuilder extends MassBuilder<File, Config> {
12+
public class ConfigBuilder extends FunctionalMassBuilder<File, Config> {
1513
/**
1614
* the singleton instance
1715
*/
@@ -21,28 +19,11 @@ private ConfigBuilder() {
2119
register(BukkitConfig::new, "yml", "yaml");
2220
}
2321

24-
/**
25-
* Register a new config creator
26-
*
27-
* @param creator the creator
28-
* @param type the file type (extension)
29-
*/
30-
public void register(Function<File, Config> creator, String... type) {
31-
register(file -> {
32-
String name = file.getName();
33-
int index = name.lastIndexOf('.');
34-
if (index < 0) return Optional.empty();
35-
36-
String extension = name.substring(index + 1);
37-
boolean isMatched = false;
38-
for (String s : type) {
39-
if (s.equalsIgnoreCase(extension)) {
40-
isMatched = true;
41-
break;
42-
}
43-
}
44-
45-
return isMatched ? Optional.of(creator.apply(file)) : Optional.empty();
46-
});
22+
@Override
23+
protected String getType(File input) {
24+
String name = input.getName();
25+
int index = name.lastIndexOf('.');
26+
if (index < 0) return "";
27+
return name.substring(index + 1);
4728
}
4829
}

src/main/java/me/hsgamer/bettergui/builder/ItemModifierBuilder.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,21 @@
22

33
import me.hsgamer.bettergui.modifier.NBTModifier;
44
import me.hsgamer.bettergui.modifier.SkullModifier;
5-
import me.hsgamer.hscore.builder.MassBuilder;
5+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
66
import me.hsgamer.hscore.bukkit.item.modifier.*;
77
import me.hsgamer.hscore.minecraft.item.ItemModifier;
88
import org.bukkit.inventory.ItemStack;
99

1010
import java.util.List;
1111
import java.util.Map;
12-
import java.util.Optional;
1312
import java.util.function.Supplier;
1413
import java.util.stream.Collectors;
1514
import java.util.stream.Stream;
1615

1716
/**
1817
* The item modifier builder
1918
*/
20-
public class ItemModifierBuilder extends MassBuilder<Map.Entry<String, Object>, ItemModifier<ItemStack>> {
19+
public class ItemModifierBuilder extends FunctionalMassBuilder<Map.Entry<String, Object>, ItemModifier<ItemStack>> {
2120
/**
2221
* The instance of the item modifier builder
2322
*/
@@ -36,6 +35,11 @@ private ItemModifierBuilder() {
3635
register(PotionEffectModifier::new, "potion-effect", "potion", "effect");
3736
}
3837

38+
@Override
39+
protected String getType(Map.Entry<String, Object> input) {
40+
return input.getKey();
41+
}
42+
3943
/**
4044
* Register a new modifier creator
4145
*
@@ -44,17 +48,11 @@ private ItemModifierBuilder() {
4448
*/
4549
public void register(Supplier<ItemModifier<ItemStack>> creator, String... type) {
4650
register(input -> {
47-
String modifier = input.getKey();
48-
for (String s : type) {
49-
if (modifier.equalsIgnoreCase(s)) {
50-
ItemModifier<ItemStack> itemModifier = creator.get();
51-
Object value = input.getValue();
52-
itemModifier.loadFromObject(value);
53-
return Optional.of(itemModifier);
54-
}
55-
}
56-
return Optional.empty();
57-
});
51+
ItemModifier<ItemStack> itemModifier = creator.get();
52+
Object value = input.getValue();
53+
itemModifier.loadFromObject(value);
54+
return itemModifier;
55+
}, type);
5856
}
5957

6058
/**

src/main/java/me/hsgamer/bettergui/builder/MenuBuilder.java

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,16 @@
44
import me.hsgamer.bettergui.menu.AddonMenu;
55
import me.hsgamer.bettergui.menu.PredicateMenu;
66
import me.hsgamer.bettergui.menu.SimpleMenu;
7-
import me.hsgamer.hscore.builder.MassBuilder;
7+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
88
import me.hsgamer.hscore.config.Config;
99

1010
import java.util.Map;
1111
import java.util.Objects;
12-
import java.util.Optional;
13-
import java.util.function.Function;
1412

1513
/**
1614
* The menu builder
1715
*/
18-
public final class MenuBuilder extends MassBuilder<Config, Menu> {
16+
public final class MenuBuilder extends FunctionalMassBuilder<Config, Menu> {
1917
/**
2018
* The instance of the menu builder
2119
*/
@@ -27,29 +25,16 @@ private MenuBuilder() {
2725
register(PredicateMenu::new, "predicate");
2826
}
2927

30-
/**
31-
* Register a new menu creator
32-
*
33-
* @param creator the creator
34-
* @param type the type
35-
*/
36-
public void register(Function<Config, Menu> creator, String... type) {
37-
register(input -> {
38-
String menu = "simple";
39-
for (Map.Entry<String[], Object> entry : input.getNormalizedValues(true).entrySet()) {
40-
String[] path = entry.getKey();
41-
if (path.length == 2 && path[0].equalsIgnoreCase(Menu.MENU_SETTINGS_PATH) && path[1].equalsIgnoreCase("menu-type")) {
42-
menu = Objects.toString(entry.getValue(), "simple");
43-
break;
44-
}
45-
}
46-
47-
for (String s : type) {
48-
if (menu.equalsIgnoreCase(s)) {
49-
return Optional.of(creator.apply(input));
50-
}
28+
@Override
29+
protected String getType(Config input) {
30+
String type = "simple";
31+
for (Map.Entry<String[], Object> entry : input.getNormalizedValues(true).entrySet()) {
32+
String[] path = entry.getKey();
33+
if (path.length == 2 && path[0].equalsIgnoreCase(Menu.MENU_SETTINGS_PATH) && path[1].equalsIgnoreCase("menu-type")) {
34+
type = Objects.toString(entry.getValue(), "simple");
35+
break;
5136
}
52-
return Optional.empty();
53-
});
37+
}
38+
return type;
5439
}
5540
}

src/main/java/me/hsgamer/bettergui/builder/RequirementBuilder.java

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
import me.hsgamer.bettergui.api.menu.Menu;
44
import me.hsgamer.bettergui.api.requirement.Requirement;
55
import me.hsgamer.bettergui.requirement.type.*;
6-
import me.hsgamer.hscore.builder.MassBuilder;
7-
8-
import java.util.Optional;
9-
import java.util.function.Function;
6+
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
107

118
/**
129
* The requirement builder
1310
*/
14-
public final class RequirementBuilder extends MassBuilder<RequirementBuilder.Input, Requirement> {
11+
public final class RequirementBuilder extends FunctionalMassBuilder<RequirementBuilder.Input, Requirement> {
1512
public static final RequirementBuilder INSTANCE = new RequirementBuilder();
1613

1714
/**
@@ -25,22 +22,9 @@ private RequirementBuilder() {
2522
register(ConditionRequirement::new, "condition");
2623
}
2724

28-
/**
29-
* Register a new requirement creator
30-
*
31-
* @param creator the creator
32-
* @param type the type
33-
*/
34-
public void register(Function<Input, Requirement> creator, String... type) {
35-
register(input -> {
36-
String requirement = input.type;
37-
for (String s : type) {
38-
if (requirement.equalsIgnoreCase(s)) {
39-
return Optional.of(creator.apply(input));
40-
}
41-
}
42-
return Optional.empty();
43-
});
25+
@Override
26+
protected String getType(Input input) {
27+
return input.type;
4428
}
4529

4630
/**

0 commit comments

Comments
 (0)