CardsXml object added

This commit is contained in:
Michael Wain 2024-06-16 00:07:26 +03:00
parent 2b40efda5f
commit 9ddfdb3aa0
13 changed files with 231 additions and 8 deletions

18
pom.xml
View File

@ -51,9 +51,15 @@
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<!-- <scope>runtime</scope> -->
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.5.2.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
@ -62,6 +68,12 @@
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>

View File

@ -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();
}
}

View File

@ -38,10 +38,10 @@ public class User {
private List<Role> 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;

View File

@ -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);

View File

@ -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<XMLEntity> entities;
}

View File

@ -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<XMLTag> tags;
@JacksonXmlProperty(localName = "MasterPower")
private XMLMasterPower masterPower;
@JsonProperty("Power")
@JacksonXmlElementWrapper(useWrapping = false)
private List<XMLPower> power;
@JsonProperty("ReferencedTag")
@JacksonXmlElementWrapper(useWrapping = false)
private List<XMLReferencedTag> refTags;
@JsonProperty("TriggeredPowerHistoryInfo")
@JacksonXmlElementWrapper(useWrapping = false)
private List<XMLTriggeredPowerHistoryInfo> powerHistoryInfos;
@JsonProperty("EntourageCard")
@JacksonXmlElementWrapper(useWrapping = false)
private List<XMLEntourageCard> entourageCards;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<XMLPlayRequirement> playRequirement;
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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;
}