From 9ddfdb3aa0b298da7c484a91b28cb97d497a3283 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Sun, 16 Jun 2024 00:07:26 +0300 Subject: [PATCH] CardsXml object added --- pom.xml | 18 ++++++-- .../hearthhack/component/StartupListener.java | 16 +++++++ .../alterdekim/hearthhack/entity/User.java | 4 +- .../hearthhack/parser/DBFParser.java | 4 +- .../alterdekim/hearthhack/xml/CardsXML.java | 18 ++++++++ .../alterdekim/hearthhack/xml/XMLEntity.java | 46 +++++++++++++++++++ .../hearthhack/xml/XMLEntourageCard.java | 15 ++++++ .../hearthhack/xml/XMLMasterPower.java | 15 ++++++ .../hearthhack/xml/XMLPlayRequirement.java | 18 ++++++++ .../alterdekim/hearthhack/xml/XMLPower.java | 23 ++++++++++ .../hearthhack/xml/XMLReferencedTag.java | 21 +++++++++ .../com/alterdekim/hearthhack/xml/XMLTag.java | 25 ++++++++++ .../xml/XMLTriggeredPowerHistoryInfo.java | 16 +++++++ 13 files changed, 231 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLEntourageCard.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLMasterPower.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLPlayRequirement.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLPower.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLReferencedTag.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLTag.java create mode 100644 src/main/java/com/alterdekim/hearthhack/xml/XMLTriggeredPowerHistoryInfo.java diff --git a/pom.xml b/pom.xml index 94e643d..5a271e2 100644 --- a/pom.xml +++ b/pom.xml @@ -51,9 +51,15 @@ spring-boot-starter-validation - mysql - mysql-connector-java - 8.0.33 + com.h2database + h2 + + + + org.hibernate + hibernate-core + 6.5.2.Final + pom org.projectlombok @@ -62,6 +68,12 @@ 1.18.28 provided + + org.springframework.boot + spring-boot-devtools + runtime + true + org.reflections reflections diff --git a/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java b/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java index 2797909..228ed4e 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java +++ b/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java @@ -5,12 +5,16 @@ import com.alterdekim.hearthhack.config.FS; import com.alterdekim.hearthhack.config.ServerConfig; import com.alterdekim.hearthhack.parser.CardsXmlParser; import com.alterdekim.hearthhack.parser.DBFParser; +import com.alterdekim.hearthhack.xml.CardsXML; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; +import javax.sql.DataSource; import java.io.File; import java.io.IOException; import java.nio.file.*; @@ -46,6 +50,8 @@ public class StartupListener { if( !Path.of(serverConfig.getWorkDir() + File.separator + FS.dbfDir).toFile().exists() ) initDbf(); if( !Path.of(serverConfig.getWorkDir() + File.separator + FS.dataDir).toFile().exists() ) initXml(); dbfConfig.setCards(DBFParser.parseCards(serverConfig.getWorkDir() + File.separator + FS.dbfDir)); + CardsXML xml = DBFParser.parse(serverConfig.getWorkDir() + File.separator + FS.dataDir + File.separator + "enUS.xml", CardsXML.class); + log.info("CardsXML: {}", xml); } catch (Exception e) { log.error(e.getMessage()); } @@ -82,4 +88,14 @@ public class StartupListener { private boolean makeDir(String dirName) { return Path.of(serverConfig.getWorkDir() + File.separator + dirName).toFile().mkdirs(); } + + @Bean + public DataSource getDataSource() { + DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); + dataSourceBuilder.driverClassName("org.h2.Driver"); + dataSourceBuilder.url("jdbc:h2:file:"+serverConfig.getWorkDir()+File.separator+FS.dbDir+File.separator+"data.db;DATABASE_TO_UPPER=false;CASE_INSENSITIVE_IDENTIFIERS=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE;MODE=PostgreSQL;"); + dataSourceBuilder.username("SA"); + dataSourceBuilder.password(""); + return dataSourceBuilder.build(); + } } \ No newline at end of file diff --git a/src/main/java/com/alterdekim/hearthhack/entity/User.java b/src/main/java/com/alterdekim/hearthhack/entity/User.java index ab22ddb..fa2e01d 100644 --- a/src/main/java/com/alterdekim/hearthhack/entity/User.java +++ b/src/main/java/com/alterdekim/hearthhack/entity/User.java @@ -38,10 +38,10 @@ public class User { private List roles = new ArrayList<>(); @Column(nullable = false) - private Integer dustBalance = 0; + private Integer dustBalance = 200; @Column(nullable = false) - private Integer goldBalance = 0; + private Integer goldBalance = 150; @Column(nullable = false) private Long defaultCardBack = 0L; diff --git a/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java b/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java index c4ece85..01e0ad8 100644 --- a/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java +++ b/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java @@ -2,11 +2,9 @@ package com.alterdekim.hearthhack.parser; import com.alterdekim.hearthhack.dbf.CardsDBF; import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import lombok.extern.slf4j.Slf4j; -import org.xml.sax.helpers.DefaultHandler; import java.io.File; -public class DBFParser extends DefaultHandler { +public class DBFParser { public static CardsDBF parseCards(String path) throws Exception { return parse(path + "/CARD.xml", CardsDBF.class); diff --git a/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java b/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java new file mode 100644 index 0000000..65b57e6 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java @@ -0,0 +1,18 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import lombok.*; + +import java.util.List; + +@ToString +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class CardsXML { + @JsonProperty("Entity") + @JacksonXmlElementWrapper(useWrapping = false) + private List entities; +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java new file mode 100644 index 0000000..f0bd376 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java @@ -0,0 +1,46 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class XMLEntity { + //@JsonProperty("") + @JacksonXmlProperty(isAttribute = true, localName = "CardID") + private String cardId; + + @JacksonXmlProperty(isAttribute = true) + private Integer version; + + @JsonProperty("Tag") + @JacksonXmlElementWrapper(useWrapping = false) + private List tags; + + @JacksonXmlProperty(localName = "MasterPower") + private XMLMasterPower masterPower; + + @JsonProperty("Power") + @JacksonXmlElementWrapper(useWrapping = false) + private List power; + + @JsonProperty("ReferencedTag") + @JacksonXmlElementWrapper(useWrapping = false) + private List refTags; + + @JsonProperty("TriggeredPowerHistoryInfo") + @JacksonXmlElementWrapper(useWrapping = false) + private List powerHistoryInfos; + + @JsonProperty("EntourageCard") + @JacksonXmlElementWrapper(useWrapping = false) + private List entourageCards; +} \ No newline at end of file diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLEntourageCard.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntourageCard.java new file mode 100644 index 0000000..f0a72ed --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntourageCard.java @@ -0,0 +1,15 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import lombok.*; + + +@ToString +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class XMLEntourageCard { + @JacksonXmlProperty(isAttribute = true) + private String cardID; +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLMasterPower.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLMasterPower.java new file mode 100644 index 0000000..a5fea71 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLMasterPower.java @@ -0,0 +1,15 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; +import lombok.*; + + +@ToString +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class XMLMasterPower { + @JacksonXmlText + private String val; +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLPlayRequirement.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLPlayRequirement.java new file mode 100644 index 0000000..9cae05e --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLPlayRequirement.java @@ -0,0 +1,18 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import lombok.*; + +@ToString +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class XMLPlayRequirement { + + @JacksonXmlProperty(isAttribute = true) + private Integer param; + + @JacksonXmlProperty(isAttribute = true) + private Integer reqID; +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLPower.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLPower.java new file mode 100644 index 0000000..36b4cf5 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLPower.java @@ -0,0 +1,23 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import lombok.*; + +import java.util.List; + +@ToString +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class XMLPower { + + @JacksonXmlProperty(isAttribute = true) + private String definition; + + @JsonProperty("PlayRequirement") + @JacksonXmlElementWrapper(useWrapping = false) + private List playRequirement; +} \ No newline at end of file diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLReferencedTag.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLReferencedTag.java new file mode 100644 index 0000000..9332978 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLReferencedTag.java @@ -0,0 +1,21 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import lombok.*; + + +@Getter +@Setter +@ToString +@AllArgsConstructor +@NoArgsConstructor +public class XMLReferencedTag { + @JacksonXmlProperty(isAttribute = true) + private Integer enumID; + @JacksonXmlProperty(isAttribute = true) + private String name; + @JacksonXmlProperty(isAttribute = true) + private String type; + @JacksonXmlProperty(isAttribute = true) + private String value; +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLTag.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLTag.java new file mode 100644 index 0000000..82cac3a --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLTag.java @@ -0,0 +1,25 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; +import lombok.*; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class XMLTag { + @JacksonXmlProperty(isAttribute = true) + private Integer enumID; + @JacksonXmlProperty(isAttribute = true) + private String type; + @JacksonXmlProperty(isAttribute = true) + private Integer value; + @JacksonXmlText + private String val; + + public String getRawValue() { + return val != null ? val : String.valueOf(value); + } +} diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLTriggeredPowerHistoryInfo.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLTriggeredPowerHistoryInfo.java new file mode 100644 index 0000000..ee59f00 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLTriggeredPowerHistoryInfo.java @@ -0,0 +1,16 @@ +package com.alterdekim.hearthhack.xml; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import lombok.*; + +@Getter +@Setter +@ToString +@AllArgsConstructor +@NoArgsConstructor +public class XMLTriggeredPowerHistoryInfo { + @JacksonXmlProperty(isAttribute = true) + private Integer effectIndex; + @JacksonXmlProperty(isAttribute = true) + private Boolean showInHistory; +}